{"badges":{"agentic_declared":{"label":"Agentic-Ready (declared)","requires_all":["T3.1","T3.2","T3.3"]},"agentic_verified":{"and_badge":"agentic_declared","label":"Agentic-Verified","requires":["T3.4"]},"tier_completion":{"tier1":"AI Discoverable","tier2":"AI Readable","tier3":"Agentic Commerce Ready"}},"profile":"directory","scope":"Local-service SMBs and small commerce sites","scoring":{"check_modes":{"binary":{"fail":0.0,"pass":1.0},"partial":{"fail":0.0,"partial":0.5,"pass":1.0}},"grades":[{"color":"#1f7a4d","grade":"A","label":"Fully agentic-commerce ready","min":90},{"color":"#3f9142","grade":"B","label":"Strong readiness, minor gaps","min":75},{"color":"#b8860b","grade":"C","label":"Moderate readiness, key gaps","min":55},{"color":"#c4632a","grade":"D","label":"Basic presence, significant work","min":35},{"color":"#b3261e","grade":"F","label":"Not AI-commerce ready","min":0}],"max_points":100,"rescan_months":{"1":12,"2":6,"3":3},"tier_badge_rule":"A tier badge is earned when every check in that tier AND all lower tiers passes."},"source_of_truth":"acrs-scoring-profile.md","standard":"ACRS","tiers":[{"checks":[{"detect":"http_headers","fix":"Serve the whole site over HTTPS and add a Strict-Transport-Security (HSTS) header.","id":"T1.1","mode":"partial","name":"HTTPS / TLS","pass":"Valid cert, HTTP\u2192HTTPS redirect, Strict-Transport-Security header present.","points":5,"signals":["tls_valid","https_redirect","hsts_header"]},{"detect":"jsonld","fix":"Add LocalBusiness/Organization JSON-LD with name, url, logo and sameAs links.","id":"T1.2","mode":"partial","name":"Identity schema","pass":"JSON-LD LocalBusiness/Organization/Store with name, url, logo, >=1 sameAs.","points":6,"signals":["@type in [LocalBusiness,Organization,Store]","name","url","logo","sameAs>=1"]},{"detect":"jsonld","fix":"Add Service or Offer schema for your key services, including a price.","id":"T1.3","mode":"partial","name":"Offer / Service schema","pass":">=1 Product+Offer or Service with an offers/priceSpecification node.","points":6,"signals":["Product+offers","Service+offers"]},{"bots_required_allow":["OAI-SearchBot","ChatGPT-User","PerplexityBot","Perplexity-User","Google-Extended"],"bots_training_optional":["GPTBot","CCBot","ClaudeBot","Applebot-Extended"],"detect":"robots_txt","fix":"Allow AI answer bots (OAI-SearchBot, PerplexityBot, Google-Extended) in robots.txt.","id":"T1.4","mode":"partial","name":"AI answer-bot access","pass":"robots.txt does not Disallow the answer/agent bots.","points":6},{"detect":"http","fix":"Publish a sitemap.xml and reference it in robots.txt.","id":"T1.5","mode":"partial","name":"sitemap.xml","pass":"Valid XML sitemap returns 200 and is referenced by Sitemap: in robots.txt.","points":4,"signals":["sitemap_200","sitemap_valid_xml","robots_references_sitemap"]},{"detect":"lab_cwv","fix":"Improve mobile performance \u2014 aim for LCP \u2264 2.5s, CLS \u2264 0.1, INP \u2264 200ms.","id":"T1.6","mode":"partial","name":"Core Web Vitals (mobile)","partial_rule":"1 of 3 missed = partial","pass":"LCP <= 2.5s, CLS <= 0.1, INP <= 200ms on the mobile profile.","points":5,"thresholds":{"cls":0.1,"inp_ms":200,"lcp_s":2.5}},{"detect":"render","fix":"Add a viewport meta tag and make sure the layout works at 375px wide.","id":"T1.7","mode":"partial","name":"Mobile responsive","pass":"Viewport meta present; no horizontal scroll at 375px; tap targets >= 24px.","points":3,"signals":["viewport_meta","no_hscroll_375","tap_targets_24"]}],"name":"AI Discoverable","points":35,"question":"Can AI crawlers reach, fetch and identify the site?","tier":1},{"checks":[{"detect":"file","fix":"Publish an /llms.txt (200+ words) describing the business, with contact details.","id":"T2.1","mode":"partial","name":"llms.txt","pass":"/llms.txt present, >=200 words, includes description + contact + key page links.","points":6,"signals":["llms_txt_200","words>=200","has_description","has_contact"]},{"any_of":["robots_ai_directives","content_signal_header_or_policy","ai_txt_allow_disallow_contact"],"detect":"multi","fix":"Declare your AI-usage policy via robots.txt directives, a Content-Signal header, or ai.txt.","id":"T2.2","mode":"partial","name":"AI-usage policy","note":"No invented transaction directives \u2014 transaction capability is Tier 3, on a real rail.","pass":"Usage preference via robots.txt AI directives OR Content-Signal OR ai.txt (Allow/Disallow/Contact).","points":4},{"detect":"jsonld","fix":"Add FAQPage JSON-LD with at least 5 Q&As, 30+ words each.","id":"T2.3","mode":"partial","name":"FAQ schema","pass":"FAQPage JSON-LD, >=5 Q&A pairs, each answer >=30 words.","points":5,"signals":["FAQPage","qa_pairs>=5","each_answer_words>=30"]},{"detect":"jsonld","fix":"Expose machine-readable prices (price / priceRange / PriceSpecification).","id":"T2.4","mode":"partial","name":"Pricing signals","pass":"Machine-readable price/priceRange/PriceSpecification on offers or services.","points":6,"signals":["price|priceRange|PriceSpecification"]},{"detect":"crawl","fix":"Give each service its own page: a single H1 and 300+ words.","id":"T2.5","mode":"partial","name":"Service / product pages","partial_rule":"some offerings lack a page","pass":"Dedicated page per offering: one <h1>, >=300 words, one primary entity.","points":6,"signals":["one_h1","words>=300","one_primary_entity"]},{"detect":"jsonld","fix":"Add opening hours and service area (openingHours, areaServed).","id":"T2.6","mode":"partial","name":"Availability & service area","pass":"openingHours/openingHoursSpecification, areaServed, and/or availability on offers.","points":5,"signals":["openingHours","areaServed","availability"]},{"detect":"jsonld","fix":"Add review/rating schema (AggregateRating) or a verifiable accreditation.","id":"T2.7","integrity":"markup must match on-page reality","mode":"partial","name":"Trust signals","pass":"AggregateRating/Review with real counts, OR a verifiable accreditation/membership.","points":5,"signals":["AggregateRating+count","Review","accreditation"]},{"detect":"a11y","fix":"Fix accessibility basics \u2014 set html lang and add alt text to images.","id":"T2.8","mode":"partial","name":"Accessibility baseline","pass":"Automated WCAG 2.2 AA checks pass (labels, contrast, landmarks, alt text).","points":3,"signals":["wcag22aa_auto_pass"]}],"name":"AI Readable","points":40,"question":"Can an AI accurately describe, price and recommend the business?","tier":2},{"checks":[{"detect":"jsonld","fix":"Add a ContactAction/ReserveAction with a real target URL an agent can call.","id":"T3.1","mode":"partial","name":"Action schema","pass":"ContactAction/ReserveAction/OrderAction with a real target EntryPoint URL (not a # placeholder).","points":4,"track":"A"},{"detect":"jsonld","fix":"Publish a service catalogue (ItemList or 3+ Service entries with offers).","id":"T3.2","mode":"partial","name":"Service catalogue","pass":"ItemList of offerings OR >=3 Service/Product entities, each with an offer.","points":4,"track":"A"},{"detect":"jsonld","fix":"Expose a machine-readable contact/booking action an agent can follow.","id":"T3.3","mode":"partial","name":"Machine-readable contact/booking","pass":"contactPoint + a potentialAction exposing a booking/enquiry URL an agent can follow.","points":4,"track":"A"},{"any_of":["ucp:/.well-known/ucp","acp_product_feed","mcp_endpoint","a2a_endpoint","openapi_action_endpoint"],"detect":"endpoint","fix":"Publish an agent endpoint \u2014 a UCP manifest, product feed, or MCP/A2A endpoint.","id":"T3.4","mode":"binary","name":"Agent-surface manifest","pass":">=1 working rail returns 200 and validates.","points":6,"track":"B"},{"detect":"compare","fix":"Keep your product feed consistent with on-page Offer schema (price, availability).","id":"T3.5","mode":"partial","name":"Feed <-> schema consistency","note":"Neutral redefinition of 'ads alignment'.","pass":"Product/Merchant feed (or catalogue endpoint) matches on-page Offer schema: same price, currency, availability.","points":3,"track":"B"},{"detect":"multi","fix":"Publish a machine-readable response/fulfilment SLA.","id":"T3.6","mode":"partial","name":"Published SLA","pass":"Machine-readable response/fulfilment commitment (manifest or schema): hoursAvailable, response-time, or handling time.","points":2,"track":"B"},{"detect":"jsonld+manual","fix":"Add your company registration/VAT number and verifiable sameAs links.","id":"T3.7","mode":"partial","name":"Verified identity","note":"Automated where resolvable; otherwise flagged for manual confirmation.","pass":"Company registration/VAT number present AND sameAs resolves to an official registry/verified profile.","points":2,"track":"B"}],"name":"Agentic Commerce Ready","points":25,"question":"Can an AI agent actually act \u2014 enquire, book, or transact?","tier":3,"tracks":{"A":{"earns":"Agentic-Ready (declared)","name":"Declarative","points":12,"requires_all":["T3.1","T3.2","T3.3"]},"B":{"check_ids":["T3.4","T3.5","T3.6","T3.7"],"earns":"Agentic-Verified","gate_check":"T3.4","name":"Functional","plus_badge":"Agentic-Ready (declared)","points":13,"requires":["T3.4"]}}}],"title":"ACRS \u2014 AI Commerce Readiness Standard","totals":{"checks":22,"tier1":{"checks":7,"points":35},"tier2":{"checks":8,"points":40},"tier3":{"checks":7,"points":25}},"updated":"2026-06-13","version":"1.1"}
