{"slug":"otterly-rz3w42","companyName":"OtterlyAI","domain":"otterly.ai","url":"https://otterly.ai","headline":"A B2B SaaS platform with published pricing and API docs, but no machine-readable spec and no signup funnel to measure.","compositeScore":67,"humanScore":0,"agentScore":67,"doorGap":0,"humanMeasured":0,"agentMeasured":6,"percentile":null,"humanPercentile":null,"agentPercentile":null,"isPartial":true,"depth":"free","siteClass":"unknown","scannerVersion":12,"scannedAt":"2026-09-08T14:52:03.669Z","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"}],"verdict":"The agent got through 10 of 14 requests, but could not find a contact route for machines. It came up empty on 3 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. A real browser is served the page normally. The homepage publishes 14 schema.org types including SoftwareApplication and Offer. A sitemap lists 67 URLs. llms.txt is published.","evidence":{"locked":true,"count":4}},{"key":"programmatic_onboarding","audience":"agent","score":60,"summary":"The docs describe self serve key issuance, API credentials are documented, authentication is documented, endpoint examples are shown, code samples are provided.","evidence":{"locked":true,"count":2}},{"key":"pricing_legibility","audience":"agent","score":93,"summary":"33 prices are readable without JavaScript on the pricing page. No tier is gated behind a demo or sales contact. Plans are published as Offer structured data. Currency is USD. Prices range from $29 to $1,000 per month.","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 with HTTP 200. No Web Bot Auth signals are present. Trust metadata is minimal.","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":1}},{"key":"steps_to_first_value","audience":"human","score":null,"summary":"Could not verify: this scan did not reach the pages that would show it.","evidence":{"locked":true,"count":0}},{"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":0}},{"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":0}},{"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":0}}],"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 file 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":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"}]}}