{"slug":"canny-8sd4w3","companyName":"Canny","domain":"canny.io","url":"https://canny.io","headline":"2 human and 3 agent dimensions measured from the pages checked; remaining dimensions are not scored.","compositeScore":89,"humanScore":89,"agentScore":89,"doorGap":0,"humanMeasured":2,"agentMeasured":3,"percentile":null,"humanPercentile":null,"agentPercentile":null,"isPartial":false,"depth":"free","siteClass":"b2b_saas","scannerVersion":25,"scannedAt":"2026-09-09T12:12:14.695Z","unlocked":false,"mission":{"steps":[{"url":"https://canny.io","outcome":"ok","purpose":"reach the site at all"},{"url":"https://canny.io/robots.txt","outcome":"ok","purpose":"find out whether machines are welcome"},{"url":"https://canny.io","outcome":"ok","purpose":"ask whether the door opens for requests carrying the AI crawlers' names"},{"url":"https://canny.io/llms.txt","outcome":"ok","purpose":"read the site's own guide for language models"},{"url":"https://canny.io/sitemap.xml","outcome":"ok","purpose":"find out what pages exist"},{"url":"https://canny.io","outcome":"ok","purpose":"read the homepage as data rather than as a page"},{"url":"https://canny.io","outcome":"missing","purpose":"read the developer documentation"},{"url":"https://canny.io/pricing","outcome":"ok","purpose":"read the prices without running JavaScript"},{"url":"https://canny.io","outcome":"ok","purpose":"find a comparison page worth citing"},{"url":"https://canny.io/register","outcome":"ok","purpose":"walk the way a visitor would, to a signup form or a product"}],"verdict":"The scanner recorded successful observations for 9 of 10 checks, but could not read the developer documentation. 5 checks could not be measured; see the report limitations."},"observations":null,"dimensions":[{"key":"machine_discoverability","audience":"agent","score":100,"summary":"No restriction on the tested crawler names was found in robots.txt. on its first visit, our browser read the homepage. no user agent rule refused the tested retrieval crawler names.","measurement":{"status":"observed"},"evidence":{"locked":true,"count":7}},{"key":"programmatic_onboarding","audience":"agent","score":null,"summary":"Not measured: a network request failed before the required evidence was collected.","measurement":{"reason":"network_failure","status":"unmeasured"},"evidence":{"locked":true,"count":0}},{"key":"pricing_legibility","audience":"agent","score":96,"summary":"6 prices are readable without JavaScript, with no tier sent to sales. the plans are published as Offer structured data too. the pricing page carries FAQ markup.","measurement":{"status":"observed"},"evidence":{"locked":true,"count":1}},{"key":"agent_aware_instrumentation","audience":"agent","score":null,"summary":"Not measured: an access refusal or challenge prevented our scanner from reading the required page.","measurement":{"reason":"access_challenge","status":"unmeasured"},"evidence":{"locked":true,"count":0}},{"key":"machine_fetchable_trust","audience":"agent","score":null,"summary":"Not measured: an access refusal or challenge prevented our scanner from reading the required page.","measurement":{"reason":"access_challenge","status":"unmeasured"},"evidence":{"locked":true,"count":0}},{"key":"commercial_rails","audience":"agent","score":72,"summary":"Prices are published in raw HTML. a self serve signup form is reachable from the homepage. the plans are published as Offer structured data.","measurement":{"status":"observed"},"evidence":{"locked":true,"count":2}},{"key":"steps_to_first_value","audience":"human","score":80,"summary":"A signup form was reached in 2 steps from the homepage.","measurement":{"status":"observed"},"evidence":{"locked":true,"count":1}},{"key":"required_fields","audience":"human","score":98,"summary":"0 of 1 fields on the observed form are marked required. 1 sign-in providers are displayed.","measurement":{"status":"observed"},"evidence":{"locked":true,"count":1}},{"key":"verification_walls","audience":"human","score":null,"summary":"Not measured: this scan did not reach the page or action needed to verify it.","measurement":{"reason":"not_reached","status":"unmeasured"},"evidence":{"locked":true,"count":0}},{"key":"error_recovery","audience":"human","score":null,"summary":"Not measured: this scan did not reach the page or action needed to verify it.","measurement":{"reason":"not_reached","status":"unmeasured"},"evidence":{"locked":true,"count":0}}],"issues":[],"fixArtifacts":{"locked":true,"count":3,"summaries":[{"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."]}},{"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":"pricing_md:pricing-md","kind":"pricing_md","title":"pricing.md","path":"/pricing.md","effort":{"minutes":20,"role":"owner"},"outcome":{"dimension":"agent_aware_instrumentation","external":["A plain-text price list is available at the published URL."]}}]},"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"}]}}