{"slug":"otterly-kkut8u","companyName":"OtterlyAI","domain":"otterly.ai","url":"https://otterly.ai","headline":"Signup automation is blocked by robots.txt, forcing agents into a manual funnel that humans can reach in two clicks.","compositeScore":74,"humanScore":80,"agentScore":67,"doorGap":13,"humanMeasured":1,"agentMeasured":6,"percentile":null,"humanPercentile":null,"agentPercentile":null,"isPartial":false,"depth":"free","siteClass":"b2b_saas","scannerVersion":16,"scannedAt":"2026-09-08T20:11:21.068Z","unlocked":false,"mission":{"steps":[{"url":"https://otterly.ai","outcome":"ok","purpose":"reach the site at all"},{"url":"https://otterly.ai/robots.txt","outcome":"ok","purpose":"find out whether machines are welcome"},{"url":"https://otterly.ai","outcome":"ok","purpose":"ask whether the door opens for requests carrying the AI crawlers' names"},{"url":"https://otterly.ai/llms.txt","outcome":"ok","purpose":"read the site's own guide for language models"},{"url":"https://www.otterly.ai/sitemap.xml","outcome":"ok","purpose":"find out what pages exist"},{"url":"https://otterly.ai/.well-known/security.txt","outcome":"missing","purpose":"find a contact route for machines"},{"url":"https://otterly.aihttps://docs.otterly.ai/.well-known/mcp.json","outcome":"ok","purpose":"find a published agent interface"},{"url":"https://otterly.ai/.well-known/ai-plugin.json","outcome":"missing","purpose":"find an agent plugin manifest"},{"url":"https://otterly.ai","outcome":"missing","purpose":"find out whether verified agents are recognised"},{"url":"https://otterly.ai","outcome":"ok","purpose":"read the homepage as data rather than as a page"},{"url":"https://otterly.ai","outcome":"missing","purpose":"find a machine readable API spec"},{"url":"https://otterly.ai","outcome":"ok","purpose":"read the developer documentation"},{"url":"https://otterly.ai/pricing","outcome":"ok","purpose":"read the prices without running JavaScript"},{"url":"https://otterly.ai","outcome":"missing","purpose":"walk the way a visitor would, to a signup form or a product"}],"verdict":"The agent got through 9 of 14 requests, but could not find a contact route for machines. It came up empty on 4 other checks too."},"observations":null,"dimensions":[{"key":"machine_discoverability","audience":"agent","score":100,"summary":"No AI crawler is blocked by user agent rules, a real browser is served normally, and the site publishes a sitemap with 67 URLs, llms.txt, and 14 schema.org types including SoftwareApplication. All key pages are readable without JavaScript.","evidence":{"locked":true,"count":4}},{"key":"programmatic_onboarding","audience":"agent","score":60,"summary":"API documentation describes self-serve key issuance, authentication, and endpoint examples with code samples. However, the signup form itself is blocked to automated visitors by robots.txt, so an agent cannot complete onboarding without.","evidence":{"locked":true,"count":3}},{"key":"pricing_legibility","audience":"agent","score":93,"summary":"33 prices are readable without JavaScript across the pricing page, with no tier gated behind a sales contact. Plans are published as Offer structured data. One tier is gated behind a demo request, which is standard practice.","evidence":{"locked":true,"count":1}},{"key":"agent_aware_instrumentation","audience":"agent","score":68,"summary":"An MCP manifest is published, developer documentation describes an API, but only in prose.","evidence":{"locked":true,"count":4}},{"key":"machine_fetchable_trust","audience":"agent","score":40,"summary":"No security.txt is published at /.well-known/security.txt. The homepage answers automated requests and structured data is present, but no machine-readable trust signals are available.","evidence":{"locked":true,"count":2}},{"key":"commercial_rails","audience":"agent","score":40,"summary":"Prices are published in raw HTML and as Offer structured data on the pricing page. No payment flow was observed, and the signup path is blocked to automated visitors, so the ability to complete a purchase programmatically could not be.","evidence":{"locked":true,"count":2}},{"key":"steps_to_first_value","audience":"human","score":80,"summary":"The signup page is 2 steps from the homepage. However, robots.txt blocks automated visitors from reaching it, so an agent cannot proceed without human assistance or violating the published crawl rules. A human can reach it normally.","evidence":{"locked":true,"count":1}},{"key":"required_fields","audience":"human","score":null,"summary":"Could not verify: this scan did not reach the pages that would show it.","evidence":{"locked":true,"count":1}},{"key":"verification_walls","audience":"human","score":null,"summary":"Could not verify: this scan did not reach the pages that would show it.","evidence":{"locked":true,"count":1}},{"key":"error_recovery","audience":"human","score":null,"summary":"Could not verify: this scan did not reach the pages that would show it.","evidence":{"locked":true,"count":1}}],"issues":[{"rank":1,"title":"No OpenAPI specification was found at the 4 standard paths checked, so a client must be written from prose instead of generated.","dimensionKey":"programmatic_onboarding","evidence":{"locked":true,"count":2},"fix":null},{"rank":2,"title":"No security.txt is published, leaving no machine-readable contact point for security researchers or agents to report vulnerabilities.","dimensionKey":"machine_fetchable_trust","evidence":{"locked":true,"count":3},"fix":null}],"fixArtifacts":{"locked":true,"count":3,"summaries":[{"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":"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":"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."]}}]},"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":"programmatic_onboarding","checkId":"openapi","key":"issue:programmatic_onboarding:openapi"},{"type":"issue","dimensionKey":"machine_fetchable_trust","checkId":"security_txt","key":"issue:machine_fetchable_trust:security_txt"}]}}