{"slug":"glossier-xte3n4","companyName":"Glossier","domain":"glossier.com","url":"https://glossier.com","headline":"A Shopify storefront with agent checkout capability but no API documentation for programmatic product discovery.","compositeScore":74,"humanScore":85,"agentScore":62,"doorGap":23,"humanMeasured":4,"agentMeasured":6,"percentile":null,"humanPercentile":null,"agentPercentile":null,"isPartial":false,"depth":"free","siteClass":"ecommerce","scannerVersion":12,"scannedAt":"2026-09-08T14:34:03.695Z","unlocked":false,"mission":{"steps":[{"url":"https://www.glossier.com","outcome":"ok","purpose":"reach the site at all"},{"url":"https://www.glossier.com/robots.txt","outcome":"ok","purpose":"find out whether machines are welcome"},{"url":"https://www.glossier.com","outcome":"ok","purpose":"ask whether the door opens for requests carrying the AI crawlers' names"},{"url":"https://www.glossier.com/llms.txt","outcome":"ok","purpose":"read the site's own guide for language models"},{"url":"https://www.glossier.com/sitemap.xml","outcome":"ok","purpose":"find out what pages exist"},{"url":"https://www.glossier.com/.well-known/security.txt","outcome":"missing","purpose":"find a contact route for machines"},{"url":"https://www.glossier.com","outcome":"missing","purpose":"find a published agent interface"},{"url":"https://www.glossier.com/.well-known/ai-plugin.json","outcome":"missing","purpose":"find an agent plugin manifest"},{"url":"https://www.glossier.com","outcome":"missing","purpose":"find out whether verified agents are recognised"},{"url":"https://www.glossier.com","outcome":"ok","purpose":"read the homepage as data rather than as a page"},{"url":"https://www.glossier.com","outcome":"missing","purpose":"find a machine readable API spec"},{"url":"https://www.glossier.com","outcome":"missing","purpose":"read the developer documentation"},{"url":"https://www.glossier.com","outcome":"ok","purpose":"read the prices without running JavaScript"},{"url":"https://www.glossier.com","outcome":"ok","purpose":"read the product catalogue as data"},{"url":"https://www.glossier.com","outcome":"ok","purpose":"read a product page as data"},{"url":"https://www.glossier.com","outcome":"ok","purpose":"read the returns and shipping terms"},{"url":"https://www.glossier.com","outcome":"ok","purpose":"walk the way a visitor would, to a signup form or a product"}],"verdict":"The agent got through 11 of 17 requests, but could not find a contact route for machines. It came up empty on 5 other checks too."},"observations":null,"dimensions":[{"key":"machine_discoverability","audience":"agent","score":100,"summary":"No AI crawler is blocked by robots.txt or user agent rules; llms.txt is published; the sitemap lists 196 URLs including products; the catalogue answers as data at /products.json with 11 products carrying brand and handle; product pages.","evidence":{"locked":true,"count":4}},{"key":"programmatic_onboarding","audience":"agent","score":10,"summary":"No API documentation is linked from the homepage or discoverable in raw HTML. The catalogue feed at /products.json requires knowing the endpoint exists; there is no developer portal, API reference, or onboarding guide to help an agent.","evidence":{"locked":true,"count":3}},{"key":"pricing_legibility","audience":"agent","score":78,"summary":"341 prices appear in the homepage HTML and 749 across the 3 product pages checked, all readable without JavaScript. Product structured data publishes price and currency on every page.","evidence":{"locked":true,"count":2}},{"key":"agent_aware_instrumentation","audience":"agent","score":49,"summary":"A Universal Commerce Protocol manifest at version 2026-08-25 is published, declaring 8 capabilities and 3 payment handlers, with a storefront MCP endpoint an agent can call. No MCP manifest exists at the 3 standard paths checked.","evidence":{"locked":true,"count":4}},{"key":"machine_fetchable_trust","audience":"agent","score":65,"summary":"The returns policy and shipping policy both read as text at their published URLs and are not blocked to automated clients. No security.txt is published.","evidence":{"locked":true,"count":3}},{"key":"commercial_rails","audience":"agent","score":70,"summary":"Product markup carries price and currency; the catalogue at /products.json includes brand on each product; returns and shipping policies read as text; a UCP manifest publishes payment handlers and checkout capability.","evidence":{"locked":true,"count":4}},{"key":"steps_to_first_value","audience":"human","score":95,"summary":"A product with its price ($40) and an add-to-cart control is reached in 2 steps from the homepage. The product page renders with 7 variant choosers (size and colour options) and accepts PayPal and Afterpay, allowing a shopper to proceed.","evidence":{"locked":true,"count":1}},{"key":"required_fields","audience":"human","score":80,"summary":"The product page does not require an account before adding to cart or checking out. Two express wallets (PayPal and Afterpay) skip the form entirely. The entry path walk found no account requirement blocking the purchase flow.","evidence":{"locked":true,"count":1}},{"key":"verification_walls","audience":"human","score":75,"summary":"No sign-in requirement appears on the product page before purchase. The entry path walk did not encounter email verification, phone verification, or account creation as a mandatory step to reach checkout.","evidence":{"locked":true,"count":1}},{"key":"error_recovery","audience":"human","score":90,"summary":"The product page presents 7 size or colour choosers, allowing a shopper to correct variant selections before committing to purchase. The validation layer includes 2 inline error containers and 8 live regions to guide correction.","evidence":{"locked":true,"count":1}}],"issues":[{"rank":1,"title":"The visible price on product pages ($40 for samples) differs from the structured price ($0.00), creating confusion for agents parsing cost.","dimensionKey":"pricing_legibility","evidence":{"locked":true,"count":3},"fix":null},{"rank":2,"title":"No developer documentation is linked from the homepage, in raw HTML or the rendered page, so integration starts with a search engine.","dimensionKey":"programmatic_onboarding","evidence":{"locked":true,"count":1},"fix":null},{"rank":3,"title":"The catalogue feed at /products.json is undiscoverable without prior knowledge of the endpoint URL.","dimensionKey":"programmatic_onboarding","evidence":{"locked":true,"count":3},"fix":null}],"fixArtifacts":{"locked":true,"count":8,"summaries":[{"id":"product_jsonld_liquid:snippets-seconddoor-product-jsonld-liquid","kind":"product_jsonld_liquid","title":"Product markup snippet for every product page","path":"snippets/seconddoor-product-jsonld.liquid","effort":{"minutes":30,"role":"developer"},"outcome":{"dimension":"pricing_legibility","external":["Every Shopify product page carries complete Product markup, not only the sampled ones."]}},{"id":"robots_search_bots:robots-txt","kind":"robots_search_bots","title":"robots.txt rules for AI crawlers","path":"/robots.txt","effort":{"minutes":10,"role":"owner"},"outcome":{"dimension":"machine_discoverability","external":["The assistants' search crawlers read and cite the site to buyers; training stays the owner's decision."]}},{"id":"merchant_policy_jsonld:product-page","kind":"merchant_policy_jsonld","title":"Return policy and shipping structured data","path":"product page","effort":{"minutes":30,"role":"developer"},"outcome":{"dimension":"machine_fetchable_trust","external":["Assistants read the return window and shipping terms from structured data."]}},{"id":"policy_pages_text:notes","kind":"policy_pages_text","title":"Link the policy pages from the product page","path":"notes","effort":{"minutes":30,"role":"owner"},"outcome":{"dimension":"machine_fetchable_trust","external":["Returns and shipping pages read as text and are linked from every product page."]}},{"id":"catalog_identifiers:catalog-identifiers-csv","kind":"catalog_identifiers","title":"Variants missing a GTIN or a brand","path":"catalog-identifiers.csv","effort":{"minutes":5,"role":"owner"},"outcome":{"dimension":"machine_discoverability","external":["Feed listings stop being rejected for a missing brand or GTIN."]}},{"id":"organization_jsonld:homepage","kind":"organization_jsonld","title":"Organization structured data","path":"homepage","effort":{"minutes":15,"role":"developer"},"outcome":{"dimension":"machine_discoverability","external":["Search and assistant crawlers read the company entity from the homepage rather than inferring it."]}},{"id":"security_txt:well-known-security-txt","kind":"security_txt","title":"security.txt","path":"/.well-known/security.txt","effort":{"minutes":10,"role":"owner"},"outcome":{"dimension":"machine_fetchable_trust","external":["Researchers and automated scanners find a disclosure address instead of guessing one."]}},{"id":"interfaces_note:notes","kind":"interfaces_note","title":"Machine interfaces: where you stand","path":"notes","effort":{"minutes":10,"role":"owner"},"outcome":{"dimension":"agent_aware_instrumentation","external":["The developer surface is built in an order where every published pointer answers."]}}]},"feedback":{"endpoint":"/api/feedback","mcpTool":"rate_fix","targets":[{"type":"report","key":"report"},{"type":"dimension","dimensionKey":"machine_discoverability","key":"dimension:machine_discoverability"},{"type":"dimension","dimensionKey":"programmatic_onboarding","key":"dimension:programmatic_onboarding"},{"type":"dimension","dimensionKey":"pricing_legibility","key":"dimension:pricing_legibility"},{"type":"dimension","dimensionKey":"agent_aware_instrumentation","key":"dimension:agent_aware_instrumentation"},{"type":"dimension","dimensionKey":"machine_fetchable_trust","key":"dimension:machine_fetchable_trust"},{"type":"dimension","dimensionKey":"commercial_rails","key":"dimension:commercial_rails"},{"type":"dimension","dimensionKey":"steps_to_first_value","key":"dimension:steps_to_first_value"},{"type":"dimension","dimensionKey":"required_fields","key":"dimension:required_fields"},{"type":"dimension","dimensionKey":"verification_walls","key":"dimension:verification_walls"},{"type":"dimension","dimensionKey":"error_recovery","key":"dimension:error_recovery"},{"type":"issue","dimensionKey":"pricing_legibility","checkId":"product_pages","key":"issue:pricing_legibility:product_pages"},{"type":"issue","dimensionKey":"programmatic_onboarding","checkId":"api_surface","key":"issue:programmatic_onboarding:api_surface"},{"type":"issue","dimensionKey":"programmatic_onboarding","checkId":null,"key":"issue:programmatic_onboarding:-"}]}}