A

Spec status

Spec versions we score against.

Every audit is stamped with the exact protocol versions in effect on the day it ran. We monitor canonical sources weekly and update pins through reviewed changes.

ACP2026-04-17UCP2026-04-08Stripe2026-04-22.previewEngine2.0.0

What is live today

  • 82 active checks across 7 categories. 13 retired, 2 parked.
  • Weekly spec-drift cron runs on Mondays at 09:00 UTC and checks 10 canonical sources.
  • When a source hash changes, we store an observation row and send a digest email to paid tiers.
  • Pin updates are applied via reviewed config changes before they become active in new audits.

Page build date: 2026-06-03

Currently pinned

Three pinned protocol versions plus derived surface tracks.

Surface / protocolVersionSourceNotes

ACP

Agentic Commerce Protocol

2026-04-17github.com/agentic-commerce-protocol/agentic-commerce-protocolCart, feed, orders, authentication, MCP

UCP

Universal Commerce Protocol

2026-04-08ucp.dev/documentationBC, PayPal, Stripe as launch partners

Stripe SPT

Shared Payment Token

2026-04-22.previewdocs.stripe.com/agentic-commercePreview spec; flagged on report

Perplexity

Perplexity rubric

deriveddocs.perplexity.ai/docs/resources/perplexity-crawlersDerived from published crawler/feed guidance

Meta

Meta catalog spec

2026-Q1developers.facebook.com/docs/commerce-platform/catalogQuarterly cadence

Copilot

Microsoft Copilot inference set

v1.3 (inferred)about.ads.microsoft.com/en/blog + microsoft.com/microsoft-copilot/blogInferred from sparse merchant docs; flagged inferred on report

Active checks

82 checks in the live registry.

Generated from the live check registry on this build. Display IDs are derived from each check's index within its category.

Discovery

25 checks · prefix DISC
IDSlugNameSeverityRevised
DISC-1bingbot-allowedBingbot allowedHIGH2.0.0 · 2026-05-28
DISC-2chatgpt-user-allowedChatGPT-User allowedLOW2.0.0 · 2026-05-28
DISC-3googlebot-allowed-on-productsGooglebot allowed on product pathsCRITICAL2.0.0 · 2026-05-28
DISC-4llms-txt-presentllms.txt present (informational)INFO2.0.0 · 2026-05-28
DISC-5openai-search-bot-allowedOAI-SearchBot allowedCRITICAL2.0.0 · 2026-05-28
DISC-6pdp-not-behind-loginSampled PDPs are not gated behind a login wall (401 / 403)HIGH2.0.0 · 2026-05-28
DISC-7pdp-not-noindexNo sampled PDP returns a noindex directiveHIGH2.0.0 · 2026-05-28
DISC-8pdp-single-product-pageEach PDP carries at most one Product JSON-LD nodeHIGH2.0.0 · 2026-05-28
DISC-9perplexity-bot-allowedPerplexityBot allowedHIGH2.0.0 · 2026-05-28
DISC-10perplexity-user-allowedPerplexity-User allowedLOW2.0.0 · 2026-05-28
DISC-11products-discoverable-no-jsProduct pages discoverable without JavaScriptHIGH2.0.0 · 2026-05-28
DISC-12products-machine-discoverableProducts are machine-discoverableHIGH2.0.0 · 2026-05-28
DISC-13robots-content-type-plain/robots.txt is served as text/plainLOW2.0.0 · 2026-05-28
DISC-14robots-txt-presentrobots.txt present at rootHIGH2.0.0 · 2026-05-28
DISC-15robots-under-500kib/robots.txt is under 500 KiB (RFC 9309 §2.5 parser cap)LOW2.0.0 · 2026-05-28
DISC-16robots-utf8/robots.txt is served as UTF-8LOW2.0.0 · 2026-05-28
DISC-17sitemap-declared-in-robotsSitemap declared in robots.txtMEDIUM2.0.0 · 2026-05-28
DISC-18sitemap-entries-escapedSitemap <loc> entries are entity-escapedMEDIUM2.0.0 · 2026-05-28
DISC-19sitemap-loc-under-2048Every sitemap <loc> URL is under 2048 charactersLOW2.0.0 · 2026-05-28
DISC-20sitemap-resolvable-with-productsSitemap resolvable and includes at least one product URLMEDIUM2.0.0 · 2026-05-28
DISC-21sitemap-same-hostSitemap entries share the host of the containing sitemapMEDIUM2.0.0 · 2026-05-28
DISC-22sitemap-size-limitsSitemap respects 50 MiB / 50,000-URL caps per documentLOW2.0.0 · 2026-05-28
DISC-23sitemap-urlset-namespaceSitemap root declares the sitemaps.org 0.9 namespaceMEDIUM2.0.0 · 2026-05-28
DISC-24sitemap-utf8Sitemap is served as UTF-8LOW2.0.0 · 2026-05-28
DISC-25wildcard-root-disallowNo global wildcard root disallowCRITICAL2.0.0 · 2026-05-28

Structured data

12 checks · prefix STRUCT
IDSlugNameSeverityRevised
STRUCT-1breadcrumb-list-presentBreadcrumbList present on PDPsLOW2.0.0 · 2026-05-28
STRUCT-2offer-availability-schema-urlOffer `availability` is a Schema.org URLHIGH2.0.0 · 2026-05-28
STRUCT-3offer-item-condition-when-not-newOffer `itemCondition` is canonical when presentLOW2.0.0 · 2026-05-28
STRUCT-4offer-price-currency-validOffer price + priceCurrency validCRITICAL2.0.0 · 2026-05-28
STRUCT-5product-aggregate-rating-presentProduct `aggregateRating` presentLOW2.0.0 · 2026-05-28
STRUCT-6product-brand-string-or-objectProduct `brand` is a string or Brand/Organization objectMEDIUM2.0.0 · 2026-05-28
STRUCT-7product-description-presentProduct `description` presentMEDIUM2.0.0 · 2026-05-28
STRUCT-8product-image-populatedProduct `image` populatedHIGH2.0.0 · 2026-05-28
STRUCT-9product-jsonld-presentProduct JSON-LD present on PDPsHIGH2.0.0 · 2026-05-28
STRUCT-10product-name-populatedProduct `name` populatedHIGH2.0.0 · 2026-05-28
STRUCT-11product-offers-presentProduct JSON-LD includes `offers`HIGH2.0.0 · 2026-05-28
STRUCT-12product-sku-populatedProduct `sku` populatedMEDIUM2.0.0 · 2026-05-28

Product data

4 checks · prefix PROD
IDSlugNameSeverityRevised
PROD-1product-brand-attributionBrand attribution on PDPsHIGH2.0.0 · 2026-05-28
PROD-2product-gtin-populatedGTIN coverage on PDPsHIGH2.0.0 · 2026-05-28
PROD-3product-title-no-placeholdersProduct title not a placeholderMEDIUM2.0.0 · 2026-05-28
PROD-4product-title-qualityProduct title quality (present, not all-caps)LOW2.0.0 · 2026-05-28

Policy

15 checks · prefix POL
IDSlugNameSeverityRevised
POL-1merchant-return-link-reachableMerchantReturnPolicy merchantReturnLink URL is reachableMEDIUM2.0.0 · 2026-05-28
POL-2merchant-return-policy-applicable-country-isoMerchantReturnPolicy applicableCountry uses ISO 3166-1 alpha-2 codesMEDIUM2.0.0 · 2026-05-28
POL-3merchant-return-policy-category-enumMerchantReturnPolicy returnPolicyCategory uses valid Schema.org enumMEDIUM2.0.0 · 2026-05-28
POL-4merchant-return-policy-enums-validMerchantReturnPolicy enrichment enums use valid Schema.org valuesLOW2.0.0 · 2026-05-28
POL-5merchant-return-policy-finite-daysMerchantReturnPolicy finite-window has positive merchantReturnDaysHIGH2.0.0 · 2026-05-28
POL-6merchant-return-policy-option-a-or-bMerchantReturnPolicy satisfies Option A (country+category) or B (returnLink)HIGH2.0.0 · 2026-05-28
POL-7merchant-return-policy-presentMerchantReturnPolicy node present on Product or OfferHIGH2.0.0 · 2026-05-28
POL-8offer-shipping-delivery-time-validOfferShippingDetails deliveryTime is a valid ShippingDeliveryTimeLOW2.0.0 · 2026-05-28
POL-9offer-shipping-destination-validOfferShippingDetails shippingDestination is a valid DefinedRegionMEDIUM2.0.0 · 2026-05-28
POL-10offer-shipping-details-presentOffer JSON-LD carries shippingDetails (OfferShippingDetails)HIGH2.0.0 · 2026-05-28
POL-11offer-shipping-rate-validOfferShippingDetails shippingRate is a valid MonetaryAmountMEDIUM2.0.0 · 2026-05-28
POL-12privacy-policy-page-reachablePrivacy policy page reachableHIGH2.0.0 · 2026-05-28
POL-13returns-policy-page-reachableReturns/refund policy page reachableMEDIUM2.0.0 · 2026-05-28
POL-14shipping-policy-page-reachableShipping policy page reachableMEDIUM2.0.0 · 2026-05-28
POL-15terms-of-service-page-reachableTerms of service page reachableHIGH2.0.0 · 2026-05-28

Trust

9 checks · prefix TRUST
IDSlugNameSeverityRevised
TRUST-1about-page-reachableAbout page reachable with substantive copyLOW2.0.0 · 2026-05-28
TRUST-2contact-with-email-or-phoneContact page exposes email or phoneHIGH2.0.0 · 2026-05-28
TRUST-3review-app-detectedThird-party review-platform integration detectedMEDIUM2.0.0 · 2026-05-28
TRUST-4https-and-hsts-enforcedHTTPS enforced sitewide + HSTS (≥ 6-month max-age)CRITICAL2.0.0 · 2026-05-28
TRUST-5hsts-include-subdomainsHSTS policy carries the includeSubDomains directiveMEDIUM2.0.0 · 2026-05-28
TRUST-6hsts-preload-directiveHSTS policy carries the preload directiveLOW2.0.0 · 2026-05-28
TRUST-7apple-pay-detectedApple Pay markers detected (informational)INFO2.0.0 · 2026-05-28
TRUST-8google-pay-detectedGoogle Pay markers detected (informational)INFO2.0.0 · 2026-05-28
TRUST-9organization-jsonld-with-contactOrganization/OnlineStore JSON-LD with contactPoint on homepageMEDIUM2.0.0 · 2026-05-28

Protocol (UCP)

15 checks · prefix PROT
IDSlugNameSeverityRevised
PROT-1ucp-cache-headers-validUCP profile Cache-Control is shared-cacheable with max-age ≥ 60sHIGH2.0.0 · 2026-05-28
PROT-2ucp-capability-required-fieldsEach capability has version + spec + schemaMEDIUM2.0.0 · 2026-05-28
PROT-3ucp-mcp-transport-validUCP MCP-transport entries have valid HTTPS endpointsLOW2.0.0 · 2026-05-28
PROT-4ucp-profile-content-type-json/.well-known/ucp response Content-Type is application/jsonHIGH2.0.0 · 2026-05-28
PROT-5ucp-profile-no-auth-required/.well-known/ucp is publicly fetchable with no authHIGH2.0.0 · 2026-05-28
PROT-6ucp-profile-no-redirects/.well-known/ucp returns 200 directly with no redirectsHIGH2.0.0 · 2026-05-28
PROT-7ucp-profile-present/.well-known/ucp profile is present with a `version` fieldHIGH2.0.0 · 2026-05-28
PROT-8ucp-profile-required-keysUCP profile carries all four required top-level keysHIGH2.0.0 · 2026-05-28
PROT-9ucp-service-spec-url-origin-matchesEach service's `spec` URL origin matches its namespace authorityMEDIUM2.0.0 · 2026-05-28
PROT-10ucp-service-transport-conditional-fieldsEach service satisfies the transport-conditional field requirementsHIGH2.0.0 · 2026-05-28
PROT-11ucp-service-transport-enumEach service `transport` is rest, mcp, a2a, or embeddedHIGH2.0.0 · 2026-05-28
PROT-12ucp-service-version-date-formatEvery service `version` matches YYYY-MM-DDMEDIUM2.0.0 · 2026-05-28
PROT-13ucp-shopping-service-validUCP profile declares a valid shopping service entryHIGH2.0.0 · 2026-05-28
PROT-14ucp-signing-keys-validEvery signing_keys[] entry is a valid JWKHIGH2.0.0 · 2026-05-28
PROT-15webmcp-declarative-tools-validDeclarative WebMCP forms are validLOW2.0.0 · 2026-05-30

Images

2 checks · prefix IMG
IDSlugNameSeverityRevised
IMG-1image-area-50k-pixelsProduct images meet Google’s 50,000-pixel area thresholdLOW2.0.0 · 2026-05-28
IMG-2image-alt-text-coverageAlt text on at least 80% of PDP imagesLOW2.0.0 · 2026-05-28

Parked checks

Written but inactive.

Parked checks live in the repo as code but don't run in the public audit. They're restored when their mode becomes available (e.g., uploaded-mode feed checks resume when merchants can upload an ACP feed file).

SlugNoteRestored when
acp-feed-conformanceACP feed shape conformance (uploaded mode)Uploaded mode ships
acp-feed-freshness-25hACP feed last-modified within 25 hours (uploaded mode)Uploaded mode ships

Retired checks

13 checks removed since launch.

Slugs in this ledger are never reused. We keep the full list so historical audit data still resolves to a meaningful name, and so you can see why each check was retired.

SlugLegacy IDReasonReplaced byRetiredNote
acp-feed-conformanceFEED-001Mode mismatch2.0.0 · 2026-05-28Always returned na in public mode; moved to parked/feed/ registry. Restored when uploaded mode ships (merchant uploads ACP feed file).
acp-feed-freshness-25hFEED-008Mode mismatch2.0.0 · 2026-05-28Feed freshness is an uploaded/connected-mode concern; moved to parked/feed/. Restored when uploaded mode ships.
gmc-signal-from-gtmFEED-004Wrong thing tested2.0.0 · 2026-05-28GTM container presence does not prove GMC account state; UCP-tagged but no UCP basis.
meta-pixel-catalog-signalFEED-005Wrong thing tested2.0.0 · 2026-05-28Meta Pixel presence does not prove catalog connection.
pdp-min-3-imagesIMG-003Invented thresholdimage-area-50k-pixels2.0.0 · 2026-05-28Replaces ≥3 images with Google merchant listing’s only quantitative image rule (≥50,000 pixels).
product-description-min-100-charsSD-004Invented thresholdproduct-description-present2.0.0 · 2026-05-28100-char threshold not in any cited spec; replaced by simpler presence check.
product-description-min-200-charsPD-005Duplicate intentproduct-description-present2.0.0 · 2026-05-28Duplicated SD-004 at an invented stricter threshold (200 chars not in any spec).
product-jsonld-min-3-imagesPD-007Invented thresholdimage-area-50k-pixels2.0.0 · 2026-05-28Schema.org/image has no minimum count requirement.
product-title-length-30-150PD-003Invented thresholdproduct-title-quality2.0.0 · 2026-05-2830-150 char threshold is GMC guidance, not ACP; replaced by Google merchant listing actual rule.
returns-page-refund-timeline-prosePOL-003Duplicate intentmerchant-return-policy-present2.0.0 · 2026-05-28Prose regex on refund timeline is covered by JSON-LD MerchantReturnPolicy check.
returns-page-return-window-prosePOL-001Duplicate intentmerchant-return-policy-finite-days2.0.0 · 2026-05-28Prose regex on returns page is covered by JSON-LD MerchantReturnPolicy.merchantReturnDays check.
shipping-page-speed-prosePOL-002Duplicate intentoffer-shipping-delivery-time-valid2.0.0 · 2026-05-28Prose regex on shipping page is covered by JSON-LD OfferShippingDetails.deliveryTime check.
stripe-markers-homepageTXN-005Wrong thing tested2.0.0 · 2026-05-28Stripe.js presence on homepage is not Stripe agentic-commerce (SPT) capability; sandbox-verifiable only.

Watch sources

The canonical sources we diff.

  1. 01raw.githubusercontent.com/agentic-commerce-protocol/agentic-commerce-protocol/main/README.md
  2. 02developers.openai.com/commerce/specs/feed
  3. 03ucp.dev/documentation/core-concepts/
  4. 04raw.githubusercontent.com/Universal-Commerce-Protocol/ucp-schema/main/README.md
  5. 05docs.stripe.com/agentic-commerce
  6. 06support.google.com/merchants/answer/16837055
  7. 07docs.perplexity.ai/docs/resources/perplexity-crawlers
  8. 08developers.facebook.com/docs/commerce-platform/catalog/fields/
  9. 09about.ads.microsoft.com/en/blog
  10. 10www.shopify.com/news

Coming soon

Next upgrades to spec operations.

  • Public diff history table driven by live observation rows (instead of static examples).
  • Automatic bulk re-score workflow on pinned-version bumps.
  • Retrospective API mode for explicit historical-spec reruns.

Today, score changes still appear through normal re-audit runs and the dashboard monitoring cycle.

Run it

Want to audit against this pin set?