{"slug":"otterly-9xm73v","companyName":"OtterlyAI","domain":"otterly.ai","url":"https://otterly.ai","headline":"Signup automation is blocked by robots.txt, preventing agents from obtaining API keys without human intervention.","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":13,"scannedAt":"2026-09-08T16:15:27.587Z","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":"ok","purpose":"find a comparison page worth citing"},{"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 10 of 15 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 the page normally, and key pages render without JavaScript. The site publishes a sitemap with 67 URLs, llms.txt, 14 schema.org types on the homepage, and 19 comparison.","evidence":{"locked":true,"count":4}},{"key":"programmatic_onboarding","audience":"agent","score":60,"summary":"Documentation at docs.otterly.ai describes self serve API key issuance, authentication, endpoint examples and code samples. However, the signup page at app.otterly.ai is blocked to automated visitors by robots.txt, so an agent cannot.","evidence":{"locked":true,"count":3}},{"key":"pricing_legibility","audience":"agent","score":93,"summary":"33 prices are readable without JavaScript on the pricing page, with no tier routed to sales. Plans are published as Offer structured data. A buyer can compute total cost from the published ladder without running code or contacting sales.","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 security contact or vulnerability disclosure policy is machine readable.","evidence":{"locked":true,"count":2}},{"key":"commercial_rails","audience":"agent","score":40,"summary":"Prices are published in raw HTML, the plans are published as Offer structured data.","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 closes app.otterly.ai to automated visitors with 'Disallow: /', so the form itself was not read.","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 security contact or vulnerability disclosure policy.","dimensionKey":"machine_fetchable_trust","evidence":{"locked":true,"count":3},"fix":null}],"fixArtifacts":{"locked":true,"count":4,"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":"pricing_md:pricing-md","kind":"pricing_md","title":"pricing.md","path":"/pricing.md","effort":{"minutes":20,"role":"owner"},"outcome":{"dimension":"agent_aware_instrumentation","external":["Agents read the price list directly instead of rendering the pricing page."]}},{"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"}]}}