{"domain":"shop.app","url":"https://shop.app","finalUrl":"https://shop.app/","score":25,"maxScore":100,"grade":"F","ctaMessage":"You're invisible to agents right now. That's fixable.","ctaTier":"low","layers":[{"id":"discovery","name":"Discovery","description":"Can agents find and recommend you?","checks":[{"id":"agentic-search-specific","name":"Developer resource discoverability","description":"Can an agent find your developer resources with the searches it would really run? We search for your API docs and expect your own docs page among the results, then for your MCP server, SDK or CLI and, when you have one, expect your own page for it. Pages on other sites, including other companies with a similar name, don't count, unless your homepage or llms.txt links that site's docs, or your homepage redirects to a parent company's site and the page's address names your product. GitHub repos count only in an org your site links to.","status":"warning","score":2,"maxScore":6,"details":"Agent found 1 pages by name including developer portal. Not found via search: API docs, OpenAPI spec, auth docs, webhooks, MCP server","recommendation":"Make your developer resources (API docs, OpenAPI spec, auth docs, webhooks, MCP server) discoverable by name. Publish them at predictable URLs, list them in llms.txt, and include your product name in page titles and headings so search engines surface them for name-based queries.","bonus":false,"maturity":"verified","tier":"recommended","estScoreGain":2.4},{"id":"agentic-search-usecase","name":"Category share of voice","description":"When someone asks an AI for a tool that does what you do, do you come up? This measures your share of voice for the problem you solve, not just your name.","status":"na","score":0,"maxScore":6,"details":"Could not extract a use-case description from site metadata","recommendation":"Build topical authority for your category. Publish comparison pages, 'best X for Y' content, tutorials, and integration guides that rank for generic use-case queries - not just your brand name - so agents surface you when users describe a need.","bonus":false,"maturity":"verified","tier":"recommended"},{"id":"sitemap","name":"Sitemap exists","description":"A map of every page you want found. Agents use your XML sitemap to discover content without crawling blind, so gaps here mean pages that never get read.","status":"pass","score":2,"maxScore":2,"details":"Valid sitemap found with 11 entries","recommendation":"Add a valid XML sitemap at /sitemap.xml listing all indexable URLs. Include lastmod dates and keep it under 50MB.","bonus":false,"maturity":"verified","tier":"required"},{"id":"content-no-js","name":"Content without JavaScript","description":"Most AI crawlers never run JavaScript. If your pages need it to show content, agents see a blank site. We fetch your pages with JavaScript off and check the content is still there.","status":"warning","score":0,"maxScore":3,"details":"Homepage blocked by WAF/security challenge - content not accessible to agents","recommendation":"Server-side render your homepage so AI crawlers see meaningful content without JavaScript. Ensure an H1 and 500+ chars of text in raw HTML.","bonus":false,"maturity":"verified","tier":"required","estScoreGain":1.8},{"id":"bot-detection","name":"Not blocked by bot detection","description":"Your bot protection may be turning away the visitors you want. We check whether AI agents can reach your site without being blocked.","status":"fail","score":0,"maxScore":1,"details":"Agents blocked: GPTBot, ClaudeBot, ChatGPT-User, PerplexityBot, Google-Extended, Applebot-Extended","recommendation":"Allowlist known AI agent User-Agents (ChatGPT-User, ClaudeBot, Google-Extended, DeepSeekBot) in your WAF or bot-detection rules.","bonus":false,"maturity":"verified","tier":"required","estScoreGain":0.6},{"id":"robots-ai-policy","name":"robots.txt AI policy","description":"","status":"fail","score":0,"maxScore":1,"details":"No AI crawler directives in robots.txt","recommendation":"Add explicit AI bot directives in robots.txt. Use 'User-agent: ChatGPT-User' / 'Allow: /' or add Content Signals ('Content-Signal: search=yes, ai-input=yes, ai-train=no') for purpose-based crawl permissions.","bonus":false,"maturity":"verified","tier":"recommended","estScoreGain":0.6},{"id":"llms-txt-exists","name":"llms.txt exists","description":"llms.txt is your site's guide for AI readers: what you do and where the important pages are. We check for /llms.txt or /.well-known/llms.txt.","status":"fail","score":0,"maxScore":1,"details":"No llms.txt found","recommendation":"Create a /llms.txt or /.well-known/llms.txt file describing your product in plain text. This is the AI equivalent of robots.txt.","bonus":false,"maturity":"verified","tier":"required","estScoreGain":0.6},{"id":"llms-txt-formatting","name":"llms.txt formatting","description":"An llms.txt only helps if agents can parse it. We check the format: a heading up top, markdown links, and enough substance to navigate by.","status":"fail","score":0,"maxScore":1,"details":"No llms.txt found to evaluate quality","recommendation":"Expand your llms.txt to include a product description, key features, use cases, API endpoints, and authentication details. Aim for 20+ well-structured lines.","bonus":false,"maturity":"verified","tier":"recommended","estScoreGain":0.6},{"id":"agent-discovery-file","name":"Agent discovery file","description":"A dedicated endpoint that tells arriving agents what you are and where to start, like a front desk for automated visitors.","status":"fail","score":0,"maxScore":1,"details":"No agent discovery file found","recommendation":"Add a /.well-known/ai-plugin.json or /.well-known/agent.json discovery file so AI agents can find your capabilities automatically.","bonus":false,"maturity":"verified","tier":"required","estScoreGain":0.6},{"id":"a2a-agent-card","name":"A2A / agent-card","description":"A business card for agent-to-agent contact: who you are, what you can do, and how to reach you, published at /.well-known/agent-card.json (the A2A protocol).","status":"fail","score":0,"maxScore":1,"details":"No A2A agent card found at /.well-known/agent-card.json","recommendation":"Publish an Agent-to-Agent (A2A) agent card at /.well-known/agent-card.json describing your agent's capabilities, skills, and contact endpoint.","bonus":false,"maturity":"verified","tier":"recommended","estScoreGain":0.6},{"id":"mcp-registry-listed","name":"Listed in MCP registries","description":"Agents find MCP servers through registries the way people find apps through app stores. We check the official MCP Registry and Smithery for an entry verified against your domain, and look for an npm or PyPI package of yours that runs as an MCP server.","status":"pass","score":1,"maxScore":1,"details":"Found in MCP registries: Smithery, Glama","recommendation":"Register your MCP server on the official MCP registry (mcp.run, mcphub.io, or Smithery) so agent platforms can discover your tools.","bonus":false,"maturity":"verified","tier":"recommended"},{"id":"npm-sdk-package","name":"NPM/PyPI SDK package","description":"An official SDK or CLI on NPM or PyPI gives agents and the developers steering them a ready-made way in, instead of hand-rolling every API call.","status":"pass","score":1,"maxScore":1,"details":"NPM package found: shop - \"\"","recommendation":"Publish a JavaScript/TypeScript SDK package on npm so developers can integrate your API programmatically.","bonus":false,"maturity":"verified","tier":"recommended"},{"id":"agent-rules-repo","name":"Agent platform configs","description":"Published rules or config files for AI coding tools (Claude, Cursor, Windsurf). They teach coding agents to use your product correctly from the first prompt.","status":"fail","score":0,"maxScore":1,"details":"No agent platform configs or rules repos found","recommendation":"Add an AGENTS.md or .cursorrules file to your public GitHub repo with instructions for how AI coding agents should interact with your codebase.","bonus":false,"maturity":"emerging","tier":"emerging"},{"id":"llms-full-txt","name":"llms-full.txt exists","description":"","status":"fail","score":0,"maxScore":1,"details":"No llms-full.txt found - agents must follow links in llms.txt instead of getting full context in one request","recommendation":"Create an /llms-full.txt with your complete product documentation in a single file. This lets agents ingest everything in one request without crawling multiple pages.","bonus":false,"maturity":"verified","tier":"recommended","estScoreGain":0.6},{"id":"robots-ai-crawler-tiers","name":"AI crawler tier differentiation","description":"","status":"fail","score":0,"maxScore":1,"details":"No AI crawler tier differentiation in robots.txt","recommendation":"Differentiate AI crawler policies in robots.txt. Use Content Signals ('Content-Signal: search=yes, ai-input=yes, ai-train=no') or separate User-agent blocks to allow search agents while restricting training crawlers (CCBot, ByteSpider).","bonus":false,"maturity":"verified","tier":"recommended","estScoreGain":0.6},{"id":"skills-sh-listed","name":"Listed on skills.sh","description":"Official skills published on skills.sh, the public directory where agents and developers browse for ready-made capabilities.","status":"pass","score":1,"maxScore":1,"details":"Listed on skills.sh - 43 official skills, 24,687 total installs (skills.sh/shopify)","recommendation":"Publish agent skills on skills.sh so AI agents can discover your product's capabilities. Create a SKILL.md in your GitHub repo and register it with 'npx skills add'. See skills.sh/docs.","bonus":false,"maturity":"emerging","tier":"emerging"},{"id":"pricing-md","name":"pricing.md exists","description":"An agent comparing options needs your prices in a form it can read. We check for a machine-readable pricing file at /pricing.md.","status":"fail","score":0,"maxScore":1,"details":"No pricing.md found - agents need machine-readable pricing to compare products and make purchase recommendations","recommendation":"Create a /pricing.md file with your pricing tiers, features, and limits in plain markdown. This lets AI agents compare costs and recommend plans without scraping HTML pricing pages.","bonus":false,"maturity":"emerging","tier":"emerging"},{"id":"nlweb-schema-feeds","name":"NLWeb Schema Feeds","description":"A schemamap directive in robots.txt pointing at structured data feeds (NLWeb). It hands agents your catalog as data instead of making them scrape pages.","status":"fail","score":0,"maxScore":1,"details":"No schemamap: directive in robots.txt","recommendation":"Add a schemamap: directive to robots.txt pointing to a Schema Map XML file listing your structured data feeds (JSONL/RSS). See the NLWeb Schema Feeds spec.","bonus":false,"maturity":"emerging","tier":"emerging"},{"id":"mcp-well-known-discovery","name":"MCP well-known discovery","description":"Publishing an MCP server is not enough; agents have to find it. We look where MCP clients look (a server card on your own domain listed in /.well-known/ai-catalog.json, the same catalog ARD crawlers read at /.well-known/ard.json, or a card served at <server URL>/server-card) and where sites also announce a server: /.well-known/mcp/server-card.json, a /.well-known/mcp.json manifest, llms.txt, or a /.well-known/mcp redirect to a working server, conventions no MCP spec defines.","status":"fail","score":0,"maxScore":2,"details":"No MCP server URL discovered","recommendation":"Serve your MCP server at /.well-known/mcp or reference it in llms.txt so agents can discover it automatically without manual URL input.","bonus":true,"maturity":"verified","tier":"recommended","estScoreGain":0.8},{"id":"agent-mode-view","name":"Agent mode view","description":"A stripped-down, structured view of your site at ?mode=agent, built for machine readers: plain content and direct endpoint links.","status":"fail","score":0,"maxScore":2,"details":"No agent mode view detected at ?mode=agent (optional)","recommendation":"Add a ?mode=agent query parameter to your homepage that returns a structured, machine-readable view with API endpoints, authentication info, and key capabilities instead of marketing HTML.","bonus":true,"maturity":"emerging","tier":"emerging"},{"id":"visual-content-labeling","name":"Visual content labeling","description":"","status":"pass","score":1,"maxScore":1,"details":"Fewer than 5 images on page - not enough signal to evaluate","recommendation":"Write descriptive alt text for every <img> tag (more than 5 chars, not the filename, not generic words like 'image' or 'logo'). Aim for 80%+ meaningful coverage so multimodal agents can understand your visuals.","bonus":false,"maturity":"verified","tier":"recommended"},{"id":"hreflang-routing","name":"Multilingual routing signals","description":"","status":"pass","score":1,"maxScore":1,"details":"Hreflang configured for 2 locale(s) including x-default fallback","recommendation":"Add <link rel=\"alternate\" hreflang=\"...\"> tags for each locale you serve, and include an hreflang=\"x-default\" fallback. Without these, AI assistants serve wrong-language pages to international users.","bonus":false,"maturity":"verified","tier":"recommended"},{"id":"content-efficiency","name":"Content efficiency","description":"","status":"warning","score":0,"maxScore":1,"details":"Homepage blocked by WAF - cannot measure content efficiency","recommendation":"Reduce markup overhead so readable text is at least 5% of your HTML. Strip unused inline scripts/styles, server-render content instead of shipping large JSON hydration blobs, and keep wrapper nesting shallow.","bonus":false,"maturity":"verified","tier":"recommended","estScoreGain":0.6},{"id":"content-crawl-depth","name":"Content crawl depth signals","description":"","status":"pass","score":1,"maxScore":1,"details":"No paginated content detected - crawl depth signals not applicable","recommendation":"Add <link rel=\"next\"> and <link rel=\"prev\"> tags on paginated pages (blog archives, product listings, docs) so AI crawlers can traverse beyond the first page.","bonus":false,"maturity":"verified","tier":"recommended"},{"id":"link-headers-discovery","name":"HTTP Link headers (RFC 8288)","description":"HTTP Link headers that point agents at your sitemap and service docs before they parse a single page, making every automated visit faster.","status":"fail","score":0,"maxScore":1,"details":"No HTTP Link response headers (RFC 8288) found","recommendation":"Add HTTP Link: response headers (RFC 8288) advertising your sitemap, markdown alternates, API service descriptions, and API catalog. Example: Link: </sitemap.xml>; rel=\"sitemap\", </index.md>; rel=\"alternate\"; type=\"text/markdown\".","bonus":true,"maturity":"verified","tier":"required","estScoreGain":0.4},{"id":"markdown-url-fallback","name":"Markdown URL fallback","description":"Append .md to a page URL and get the markdown version: the cleanest possible read for an agent. Homepage /index.md is the baseline; .md twins on content pages earn full credit.","status":"fail","score":0,"maxScore":1,"details":"No /index.md fallback found (optional)","recommendation":"Serve a markdown version of your homepage at /index.md so agents that prefer markdown over HTML can fetch one canonical URL. Content-Type should be text/markdown and the body should start with a top-level heading.","bonus":true,"maturity":"emerging","tier":"emerging"},{"id":"modular-llms-txt","name":"Modular llms.txt per product area","description":"Per-section llms.txt files (like /docs/llms.txt) so an agent working in one area gets a focused index instead of your whole site.","status":"fail","score":0,"maxScore":1,"details":"No section-level llms.txt files found (optional)","recommendation":"Add per-section llms.txt files (e.g. /docs/llms.txt, /api/llms.txt, /developers/llms.txt) so agents can fetch scoped context for specific product areas instead of the whole manual.","bonus":true,"maturity":"emerging","tier":"emerging"},{"id":"multi-agent-crawl","name":"Multi-agent crawl simulation","description":"","status":"fail","score":0,"maxScore":2,"details":"Only 0/5 agents could crawl: ChatGPT ✗, Claude ✗, Gemini ✗, DeepSeek ✗, OpenClaw ✗","recommendation":"Ensure your site serves full content to all major AI User-Agents. Test with ChatGPT-User, ClaudeBot, Google-Extended, and DeepSeekBot.","bonus":false,"maturity":"verified","tier":"recommended","estScoreGain":1.2},{"id":"semantic-indexing","name":"Semantic search indexability","description":"","status":"warning","score":0,"maxScore":2,"details":"Homepage blocked by WAF - semantic analysis requires accessible content","recommendation":"Add semantic HTML (headings, lists, tables) and schema.org markup to make your content efficiently indexable by AI vector stores.","bonus":false,"maturity":"verified","tier":"recommended","estScoreGain":1.2},{"id":"brand-authority","name":"Brand authority in AI training data","description":"","status":"fail","score":0,"maxScore":2,"details":"No brand authority signals  - LLMs may not know this brand","recommendation":"Build brand presence across third-party platforms (Reddit, YouTube, tech blogs). AI models cite brands they've seen in diverse training sources.","bonus":false,"maturity":"verified","tier":"recommended","estScoreGain":1.2}],"score":9,"maxScore":31},{"id":"identity","name":"Identity","description":"Can agents reach you and understand you correctly?","checks":[{"id":"llms-txt-content","name":"llms.txt content quality","description":"","status":"fail","score":0,"maxScore":4,"details":"No llms.txt found","recommendation":"Enrich your llms.txt with structured sections: product overview, use cases, constraints, and API reference links. Include specific capabilities and limitations.","bonus":false,"maturity":"verified","tier":"recommended","estScoreGain":2.1},{"id":"json-ld","name":"JSON-LD structured data","description":"Structured data that states in machine terms what you are: a product, a company, a person. Without it, every AI describing you is guessing from prose. We grade the completeness of your homepage JSON-LD.","status":"fail","score":0,"maxScore":4,"details":"No JSON-LD structured data found on homepage","recommendation":"Add JSON-LD structured data to your homepage (Organization, Product, or SoftwareApplication schema) so AI can parse your identity programmatically.","bonus":false,"maturity":"verified","tier":"required","estScoreGain":2.1},{"id":"consistent-description","name":"Consistent description","description":"","status":"pass","score":3,"maxScore":3,"details":"Consistent descriptions across 2 sources","recommendation":"Ensure your meta description, og:description, and homepage H1 all convey the same core value proposition. Consistency helps AI understand your product.","bonus":false,"maturity":"verified","tier":"recommended"},{"id":"pricing-info","name":"Pricing info accessible","description":"If an agent cannot find your prices, it cannot recommend you for a purchase. We check that pricing is discoverable and readable on your site.","status":"fail","score":0,"maxScore":3,"details":"No pricing page or pricing data found","recommendation":"Make pricing information discoverable  - add a /pricing page or include pricing in structured data. AI agents need this to make purchase recommendations.","bonus":false,"maturity":"verified","tier":"required","estScoreGain":1.6},{"id":"public-api-docs","name":"Public API/docs linked from homepage","description":"Your API docs, linked straight from your homepage. If an agent has to search for your documentation, most will not. Only docs you own count.","status":"pass","score":3,"maxScore":3,"details":"Documentation site found at https://dev.corso.com","recommendation":"Publish API documentation at a discoverable URL (/docs, /api, /developers). Include authentication, endpoints, and example requests.","bonus":false,"maturity":"verified","tier":"required"},{"id":"agent-instruction","name":"Agent instruction / when-to-use","description":"Explicit guidance on when to use your product, written where agents will read it. An agent choosing between ten tools picks the one that says what it is for.","status":"fail","score":0,"maxScore":3,"details":"No agent instruction file with when-to-use guidance found","recommendation":"Add an agent-specific instruction section to your llms.txt or docs explaining how AI agents should interact with your product.","bonus":false,"maturity":"verified","tier":"required","estScoreGain":1.6},{"id":"skills-sh-quality","name":"Skills.sh skill quality","description":"Not just listed on skills.sh, but worth installing: multiple skills, descriptive names, and real adoption.","status":"pass","score":1,"maxScore":1,"details":"Rich skills.sh presence - 43 skills across 8 repos, 24,687 installs. Agents can understand capabilities in depth","recommendation":"Expand your skills.sh presence with multiple skill repos covering different use cases. Add descriptive skill names, clear SKILL.md files, and organize by capability area.","bonus":false,"maturity":"emerging","tier":"emerging"},{"id":"json-ld-entity-linking","name":"JSON-LD entity linking (sameAs)","description":"sameAs links from your structured data to your official profiles (GitHub, LinkedIn, app stores). They let AIs confirm that every mention of you is actually you.","status":"fail","score":0,"maxScore":2,"details":"No JSON-LD found  - no entity linking possible","recommendation":"Add sameAs links in your JSON-LD structured data pointing to your Wikipedia page, Wikidata entry, GitHub org, and social profiles. This helps AI disambiguate your brand from similarly named entities.","bonus":false,"maturity":"verified","tier":"recommended","estScoreGain":1},{"id":"mcp-tool-descriptions","name":"MCP tool descriptions","description":"An agent picks tools by reading their descriptions: vague ones get skipped, clear ones get called. We grade every tool on your MCP server, with different bars for product and docs servers.","status":"na","score":0,"maxScore":3,"details":"No MCP server detected","recommendation":"Add detailed descriptions (>= 20 chars) to every MCP tool. Agents use these to decide which tool to call - vague descriptions lead to wrong tool selection.","bonus":true,"maturity":"verified","tier":"recommended"},{"id":"mcp-param-schemas","name":"MCP parameter schemas","description":"Typed parameter schemas on your MCP tools, so agents know what to send without trial and error. Product servers need required-field lists; docs servers need at least a query.","status":"na","score":0,"maxScore":2,"details":"No MCP server detected","recommendation":"Define inputSchema with typed properties and required arrays for each tool. Agents need schema info to construct valid tool calls without guessing.","bonus":true,"maturity":"verified","tier":"recommended"},{"id":"mcp-server-identity","name":"MCP server identity","description":"Your MCP server introduces itself in the legacy handshake: name, version, and usage instructions. An anonymous server makes every agent guess what it connected to.","status":"na","score":0,"maxScore":1,"details":"No MCP server detected","recommendation":"Set server name, version, and instructions in your MCP server's initialize response. Instructions help agents understand your server's purpose and constraints.","bonus":true,"maturity":"verified","tier":"recommended"},{"id":"speakable-content","name":"Speakable content markup","description":"","status":"fail","score":0,"maxScore":1,"details":"No speakable content markup  - agents must guess which content to present to users","recommendation":"Add schema.org speakable markup to your homepage indicating which sections are suitable for AI assistant text-to-speech readout. Use a Speakable property with CSS selectors targeting your key value proposition.","bonus":false,"maturity":"verified","tier":"recommended","estScoreGain":0.5},{"id":"doc-depth","name":"Documentation depth","description":"","status":"fail","score":0,"maxScore":3,"details":"Documentation lacks code examples, auth guides, quickstart, or API reference","recommendation":"Add code examples, a quickstart guide, authentication walkthrough, and structured API reference to your docs. Agents need actionable instructions, not just endpoint lists.","bonus":false,"maturity":"verified","tier":"recommended","estScoreGain":1.6},{"id":"metadata-completeness","name":"Metadata completeness","description":"The basics AIs use to identify a page: a canonical URL that points to this site, language, and Open Graph image and type. Missing or wrong pieces mean mangled citations and wrong previews.","status":"warning","score":2,"maxScore":2,"details":"3/4 metadata signals present - missing: og:type","recommendation":"Add all four signals to your homepage: <link rel=\"canonical\">, <html lang=\"...\">, <meta property=\"og:image\">, and <meta property=\"og:type\">. Agents use these for entity resolution and attribution.","bonus":false,"maturity":"verified","tier":"required"},{"id":"org-schema-completeness","name":"Organization schema completeness","description":"Company details (contact, address) in your structured data. AIs use them to verify you are a real business before recommending you.","status":"fail","score":0,"maxScore":1,"details":"No JSON-LD found - Organization schema missing","recommendation":"Add Organization JSON-LD that includes both contactPoint (with email/phone and contactType) and address (PostalAddress). This lets AI verify your business legitimacy and answer contact queries.","bonus":false,"maturity":"verified","tier":"recommended","estScoreGain":0.5},{"id":"schema-type-breadth","name":"Schema type breadth","description":"The more kinds of content you mark up with schema.org (FAQs, reviews, services, events, videos), the more kinds of questions an AI can answer about you with confidence.","status":"fail","score":0,"maxScore":1,"details":"No extended schema types found - AI can only answer basic questions about this entity","recommendation":"Expand your JSON-LD beyond Organization/WebSite. Add FAQPage for common questions, Service or Product for offerings, AggregateRating or Review for social proof, and BreadcrumbList for navigation context.","bonus":false,"maturity":"verified","tier":"recommended","estScoreGain":0.5},{"id":"trust-anchors","name":"Trust anchor pages","description":"About, contact, and privacy pages with real content. Agents check these to verify you are legitimate before recommending you, the way a careful person would.","status":"warning","score":1,"maxScore":2,"details":"Only Privacy page verified - missing: About, Contact","recommendation":"Publish real /about, /contact, and /privacy pages with at least 500 characters of content each. These are the pages AI agents check to verify your business is legitimate before recommending you.","bonus":false,"maturity":"verified","tier":"required","estScoreGain":0.5},{"id":"llm-comprehension","name":"LLM product comprehension","description":"","status":"fail","score":0,"maxScore":2,"details":"Insufficient content for reliable LLM comprehension","recommendation":"Write a clear, concise meta description and homepage intro that an LLM can parse in a single pass. Avoid jargon-heavy marketing copy.","bonus":false,"maturity":"verified","tier":"recommended","estScoreGain":1},{"id":"ai-citability","name":"AI citability score","description":"","status":"fail","score":0,"maxScore":2,"details":"Low citability  - no structured answer content, data points, or quotable passages","recommendation":"Create concise, fact-dense paragraphs that LLMs would confidently quote. Include statistics, definitions, and structured Q&A content.","bonus":false,"maturity":"verified","tier":"recommended","estScoreGain":1},{"id":"content-eeat","name":"Content E-E-A-T signals","description":"","status":"fail","score":0,"maxScore":2,"details":"Weak E-E-A-T  - no expertise, authority, or trust signals found","recommendation":"Strengthen E-E-A-T signals: add author bios, case studies, trust badges, privacy policies, and dated content for freshness.","bonus":false,"maturity":"verified","tier":"recommended","estScoreGain":1},{"id":"competitive-positioning","name":"Competitive positioning clarity","description":"","status":"warning","score":1,"maxScore":2,"details":"Weak positioning: 1 differentiation signal(s)","recommendation":"Create comparison and 'alternatives' pages that help AI agents clearly differentiate your product from competitors.","bonus":false,"maturity":"verified","tier":"recommended","estScoreGain":0.5}],"score":10,"maxScore":40},{"id":"access","name":"Access","description":"Can agents connect, authenticate, and operate your product?","checks":[{"id":"public-api","name":"Public API with reachable endpoints","description":"The foundation of agent access: an API that agents can actually call. We check for documentation and at least one endpoint that responds.","status":"pass","score":7,"maxScore":7,"details":"API documentation found at https://dev.corso.com","recommendation":"Expose a public REST or GraphQL API. AI agents need programmatic access  - not just a web UI  - to integrate with your product.","bonus":false,"maturity":"verified","tier":"required"},{"id":"openapi-spec","name":"OpenAPI spec published","description":"An OpenAPI spec is your API in a form machines can read. Agents use it to integrate without a human studying the docs, so it is one of the highest-leverage files you can publish.","status":"fail","score":0,"maxScore":7,"details":"No OpenAPI/Swagger specification found","recommendation":"Publish an OpenAPI (Swagger) specification at /openapi.json or /api/openapi.yaml. This is how agents understand your API surface automatically.","bonus":false,"maturity":"verified","tier":"required","estScoreGain":4.1},{"id":"oauth-support","name":"OAuth 2.0 support","description":"Agents need a standard way to sign in. We check for OAuth 2.0, or an explicitly open API that needs no keys at all.","status":"fail","score":0,"maxScore":5,"details":"No OAuth 2.0 or OpenID Connect support detected","recommendation":"Implement OAuth 2.0 for API authentication. Publish your authorization server metadata at /.well-known/oauth-authorization-server.","bonus":false,"maturity":"verified","tier":"required","estScoreGain":2.9},{"id":"scoped-permissions","name":"Scoped permissions","description":"Granular permissions so an agent gets only the access it needs, nothing more. Businesses connect faster when the blast radius of a mistake is small. We look for declared OAuth scopes (OpenAPI security schemes, RFC 9728 metadata), not prose mentions.","status":"fail","score":0,"maxScore":5,"details":"No scoped permissions or security schemes found","recommendation":"Support scoped API permissions (OAuth scopes or API key roles) so agents can request only the access they need.","bonus":false,"maturity":"verified","tier":"recommended","estScoreGain":2.9},{"id":"agent-auth-docs","name":"Agent auth documentation","description":"","status":"fail","score":0,"maxScore":5,"details":"No agent-specific authentication documentation found","recommendation":"Document how AI agents should authenticate. Include a step-by-step guide for obtaining and using API tokens programmatically.","bonus":false,"maturity":"verified","tier":"recommended","estScoreGain":2.9},{"id":"developer-portal","name":"Developer portal","description":"A place to sign up, get keys, and manage an integration without emailing anyone. Self-serve is the difference between integrating today and never.","status":"pass","score":6,"maxScore":6,"details":"Developer portal found at https://dev.corso.com/category/shop-api","recommendation":"Create a developer portal at /developers with API keys, documentation, quickstart guides, and a sandbox environment.","bonus":false,"maturity":"verified","tier":"recommended"},{"id":"mcp-auth-mechanism","name":"MCP auth mechanism","description":"The right lock on the right door: docs servers should be public, product servers should require OAuth. We check your MCP auth matches what the server does.","status":"na","score":0,"maxScore":2,"details":"No MCP server detected","recommendation":"Protect your MCP server with OAuth 2.0 authentication. Publish authorization server metadata at /.well-known/oauth-authorization-server for automatic agent auth flows.","bonus":true,"maturity":"verified","tier":"recommended"},{"id":"mcp-oauth-metadata","name":"MCP OAuth metadata","description":"Standard OAuth metadata (RFC 8414) that lets agents discover your sign-in flow automatically, instead of a developer wiring it by hand.","status":"na","score":0,"maxScore":2,"details":"No MCP server detected","recommendation":"Publish RFC 8414 authorization server metadata with issuer, authorization_endpoint, and token_endpoint so agents can authenticate without hardcoded URLs.","bonus":true,"maturity":"verified","tier":"recommended"},{"id":"mcp-pkce-s256","name":"MCP PKCE S256 support","description":"PKCE with S256, the OAuth hardening that stops intercepted codes from being replayed. Table stakes for agent auth done right.","status":"na","score":0,"maxScore":2,"details":"No MCP server detected","recommendation":"Support PKCE with S256 code challenge method in your OAuth server. Add 'S256' to code_challenge_methods_supported in your authorization server metadata.","bonus":true,"maturity":"verified","tier":"recommended"},{"id":"mpp-support","name":"MPP payment protocol","description":"Machine Payments Protocol lets an agent pay you over plain HTTP. Supporting any one payment protocol is enough, so this reads N/A when another is detected. Optional for non-commerce sites.","status":"fail","score":0,"maxScore":2,"details":"No MPP (Machine Payments Protocol) support detected","recommendation":"Implement the MPP (Machine Payments Protocol) so AI agents can pay for premium API resources via HTTP 402. MPP uses the Payment HTTP Authentication Scheme (WWW-Authenticate: Payment) with multiple payment methods. Publish x-payment-info in your OpenAPI spec for agent discovery.","bonus":false,"maturity":"verified","tier":"required","estScoreGain":1.2},{"id":"x402-support","name":"x402 payment protocol","description":"x402 lets an agent pay per request over plain HTTP micropayments. Supporting any one payment protocol is enough, so this reads N/A when another is detected. Optional for non-commerce sites.","status":"fail","score":0,"maxScore":2,"details":"No x402 payment protocol support detected","recommendation":"Implement x402 payment protocol so AI agents can pay for API access via HTTP 402. x402 uses PAYMENT-REQUIRED/PAYMENT-SIGNATURE/PAYMENT-RESPONSE headers with Base64-encoded JSON. Add a /discovery/resources endpoint for agent discovery.","bonus":false,"maturity":"verified","tier":"required","estScoreGain":1.2},{"id":"onboarding-friction","name":"Agent onboarding friction","description":"Can an agent go from discovering you to a first successful API call with no human in the loop? Every manual step is a place automated integrations quietly die.","status":"fail","score":0,"maxScore":2,"details":"High onboarding friction - no free tier, self-serve keys, or sandbox detected","recommendation":"Offer a free tier or trial, self-serve API key generation, and a sandbox environment. Agents can't fill out 'contact sales' forms.","bonus":false,"maturity":"verified","tier":"recommended","estScoreGain":1.2},{"id":"web-bot-auth-directory","name":"Web Bot Auth directory","description":"A public key directory (RFC 9421) that lets agents cryptographically sign their requests, so you know exactly who is calling and can let the good ones through.","status":"fail","score":0,"maxScore":2,"details":"No /.well-known/http-message-signatures-directory found","recommendation":"Publish a Web Bot Auth directory at /.well-known/http-message-signatures-directory. Serve a JSON document with a 'keys' array of Ed25519 JWKs (kty=OKP, crv=Ed25519, kid, nbf, exp). This lets agents sign their requests per RFC 9421 so you can distinguish legitimate bots from spoofers.","bonus":true,"maturity":"emerging","tier":"emerging"},{"id":"api-catalog-rfc9727","name":"API catalog (RFC 9727)","description":"A machine-readable list of all your APIs at /.well-known/api-catalog (RFC 9727), so agents see your full surface in one request.","status":"fail","score":0,"maxScore":2,"details":"No /.well-known/api-catalog found (RFC 9727)","recommendation":"Publish an API catalog at /.well-known/api-catalog per RFC 9727. Serve it with Content-Type: application/linkset+json;profile=\"https://www.rfc-editor.org/info/rfc9727\" and include a 'linkset' array with item entries pointing to your OpenAPI specs and service descriptions.","bonus":true,"maturity":"verified","tier":"required","estScoreGain":0.8},{"id":"oauth-protected-resource","name":"OAuth Protected Resource metadata (RFC 9728)","description":"Metadata at /.well-known/oauth-protected-resource (RFC 9728) that tells agents your auth requirements up front, instead of leaving them to trial and error.","status":"fail","score":0,"maxScore":2,"details":"No /.well-known/oauth-protected-resource found (RFC 9728)","recommendation":"Publish RFC 9728 protected-resource metadata at /.well-known/oauth-protected-resource. Include the required 'resource' field plus 'authorization_servers', 'scopes_supported', and 'bearer_methods_supported' so agents can discover your auth requirements without a 401 handshake.","bonus":true,"maturity":"verified","tier":"required","estScoreGain":0.8},{"id":"ucp-support","name":"UCP - Universal Commerce Protocol","description":"A Universal Commerce Protocol profile at /.well-known/ucp, telling shopping agents how to transact with you. Supporting any one payment protocol is enough, so this reads N/A when another is detected. Optional for non-commerce sites.","status":"fail","score":0,"maxScore":3,"details":"no UCP (Universal Commerce Protocol) signals detected (optional)","recommendation":"Publish a UCP discovery profile at /.well-known/ucp with a required `version` (YYYY-MM-DD) and advertised `services`/`capabilities` per ucp.dev. Also expose the REST checkout surface (`POST /checkout-sessions` with `UCP-Agent` and `Idempotency-Key` headers) so agents can transact without per-vendor integrations.","bonus":true,"maturity":"verified","tier":"required","estScoreGain":1.2},{"id":"acp-support","name":"ACP - Agentic Commerce Protocol","description":"A live Agentic Commerce Protocol checkout endpoint (/checkout_sessions), the flow behind agent-driven purchases in ChatGPT. Supporting any one payment protocol is enough, so this reads N/A when another is detected. Optional for non-commerce sites.","status":"fail","score":0,"maxScore":3,"details":"no ACP (Agentic Commerce Protocol) signals detected (optional)","recommendation":"Implement the Agentic Commerce Protocol checkout REST API: `POST /checkout_sessions` (create), update/get/complete/cancel variants, with `API-Version: YYYY-MM-DD` and `Idempotency-Key` required headers. Preflight OPTIONS should allow POST or return an ACP-shaped error with `supported_versions` so agents can negotiate.","bonus":true,"maturity":"verified","tier":"required","estScoreGain":1.2},{"id":"acp-delegate-payment","name":"ACP delegate payment","description":"The ACP endpoint that lets a buyer's agent hand you a payment credential securely (/agentic_commerce/delegate_payment). Supporting any one payment protocol is enough, so this reads N/A when another is detected. Optional for non-commerce sites.","status":"pass","score":3,"maxScore":3,"details":"Delegate Payment endpoint reachable at https://shop.app/agentic_commerce/delegate_payment (OPTIONS 204 allows POST)","recommendation":"Expose the ACP Delegate Payment endpoint at `POST /agentic_commerce/delegate_payment`. The request takes `payment_method`, `allowance` (max amount, currency, expiry, merchant scope), and `risk_signals`; the response returns a vault token. This lets agents pay on behalf of users with scoped, revocable credentials.","bonus":true,"maturity":"verified","tier":"recommended"},{"id":"auth-flow-simulation","name":"Agent auth flow simulation","description":"","status":"fail","score":0,"maxScore":2,"details":"No machine-discoverable authentication flow found","recommendation":"Ensure your OAuth/API auth flow can be completed programmatically without CAPTCHA or browser-only steps.","bonus":false,"maturity":"verified","tier":"recommended","estScoreGain":1.2},{"id":"api-schema-analysis","name":"API schema complexity analysis","description":"Is your API simple enough for an agent to use without a human explaining it? Deeply nested, ambiguous schemas fail silently in agent hands.","status":"fail","score":0,"maxScore":2,"details":"No OpenAPI spec found - agents can't auto-discover API schema","recommendation":"Improve your API schema with descriptive operation IDs, detailed parameter descriptions, and response schemas for all endpoints.","bonus":false,"maturity":"verified","tier":"recommended","estScoreGain":1.2},{"id":"sim-chatgpt","name":"ChatGPT agent simulation","description":"","status":"fail","score":0,"maxScore":1,"details":"Site not accessible to ChatGPT agent","recommendation":"Optimize for ChatGPT discovery: publish an ai-plugin.json, get listed in the GPT Store, and ensure your site is accessible to ChatGPT-User.","bonus":false,"maturity":"verified","tier":"recommended","estScoreGain":0.6},{"id":"sim-claude","name":"Claude agent simulation","description":"","status":"fail","score":0,"maxScore":1,"details":"Site not accessible to Claude agent","recommendation":"Optimize for Claude: publish an MCP server, add llms.txt, and ensure ClaudeBot can crawl your site.","bonus":false,"maturity":"verified","tier":"recommended","estScoreGain":0.6},{"id":"sim-gemini","name":"Gemini agent simulation","description":"","status":"fail","score":0,"maxScore":1,"details":"Site not accessible to Gemini agent (Google-Extended blocked)","recommendation":"Optimize for Gemini: add structured data (JSON-LD), ensure Google-Extended can crawl your site, and publish rich meta descriptions.","bonus":false,"maturity":"verified","tier":"recommended","estScoreGain":0.6},{"id":"sim-openclaw","name":"OpenClaw agent simulation","description":"","status":"warning","score":0,"maxScore":1,"details":"Partial autonomous flow: documentation - missing 3 capabilities","recommendation":"Optimize for autonomous agents: expose a public API with OpenAPI spec, support OAuth, and enable MCP discovery.","bonus":false,"maturity":"verified","tier":"recommended","estScoreGain":0.6},{"id":"sim-ora","name":"ora agent simulation","description":"","status":"fail","score":0,"maxScore":1,"details":"Site not accessible to ora agent","recommendation":"Ensure all ora checks pass: complete your llms.txt, publish structured data, and expose machine-readable API endpoints.","bonus":false,"maturity":"verified","tier":"recommended","estScoreGain":0.6},{"id":"sim-qwen","name":"Qwen agent simulation","description":"","status":"fail","score":0,"maxScore":1,"details":"Site not accessible to Qwen agent","recommendation":"Optimize for Qwen and Chinese AI agents: ensure your site loads without geo-restrictions, add multilingual meta tags if applicable.","bonus":false,"maturity":"verified","tier":"recommended","estScoreGain":0.6},{"id":"sim-deepseek","name":"DeepSeek agent simulation","description":"","status":"fail","score":0,"maxScore":1,"details":"Site not accessible to DeepSeek agent","recommendation":"Optimize for DeepSeek: ensure your API docs are crawlable, add structured data, and support standard authentication flows.","bonus":false,"maturity":"verified","tier":"recommended","estScoreGain":0.6}],"score":16,"maxScore":55},{"id":"integration","name":"Agent Integration","description":"Have you built the plumbing","checks":[{"id":"mcp-server","name":"MCP server / manifest","description":"MCP is how agents plug directly into your product, the way apps plug into an app store. We check for a Model Context Protocol server or manifest.","status":"warning","score":3,"maxScore":6,"details":"MCP server found in registry but no manifest at standard paths","recommendation":"Build an MCP (Model Context Protocol) server exposing your API as tools. Use Streamable HTTP transport for full score. This lets Claude, ChatGPT, and other AI agents call your product natively.","bonus":false,"maturity":"verified","tier":"required","estScoreGain":1.6},{"id":"mcp-tool-listing","name":"MCP tool listing","description":"Your MCP server actually returns tools when asked. We call tools/list and grade the surface: product servers earn on breadth, docs servers on focus.","status":"na","score":0,"maxScore":3,"details":"No MCP server detected","recommendation":"Expose 3+ tools via your MCP server's tools/list endpoint. Cover your core API surface - agents need tools for read, write, and search operations.","bonus":true,"maturity":"verified","tier":"recommended"},{"id":"mcp-error-handling","name":"MCP error handling","description":"When an agent sends your MCP server a bad request, the answer should be a structured error it can correct from, not a silent failure.","status":"na","score":0,"maxScore":2,"details":"No MCP server detected","recommendation":"Return structured JSON-RPC errors (with code and message) when agents call invalid tools or pass bad arguments. Don't crash or return empty responses.","bonus":true,"maturity":"verified","tier":"recommended"},{"id":"mcp-transport-modern","name":"MCP modern transport","description":"Your MCP server speaks the current transport (Streamable HTTP), not just the legacy one. New agent clients increasingly expect it.","status":"na","score":0,"maxScore":1,"details":"No MCP server detected","recommendation":"Upgrade your MCP server from legacy SSE to Streamable HTTP transport. Streamable HTTP is the current standard and supports bidirectional communication.","bonus":true,"maturity":"verified","tier":"recommended"},{"id":"webmcp","name":"WebMCP support","description":"WebMCP is a draft API from a W3C Community Group for registering tools on your web pages, which agents can call in browsers that support it. No separate server is needed. We read the tools your pages register and grade them.","status":"fail","score":0,"maxScore":1,"details":"No WebMCP support detected","recommendation":"Implement WebMCP  - an HTTP-based MCP transport at /.well-known/mcp or /mcp  - so browser-based AI agents can discover and use your tools.","bonus":false,"maturity":"verified","tier":"required","estScoreGain":0.5},{"id":"webhook-support","name":"Webhook support","description":"","status":"fail","score":0,"maxScore":2,"details":"No webhook system found","recommendation":"Add webhook support so agents can subscribe to events. Document webhook payloads and provide a registration endpoint.","bonus":false,"maturity":"verified","tier":"recommended","estScoreGain":1},{"id":"markdown-negotiation","name":"Markdown agent docs","description":"Agents prefer markdown: the same content at a fraction of the noise. We check whether your docs are available as markdown, via content negotiation or .md routes.","status":"fail","score":0,"maxScore":1,"details":"No markdown content negotiation support","recommendation":"Support content negotiation with Accept: text/markdown. AI agents work better with markdown than HTML.","bonus":false,"maturity":"emerging","tier":"emerging"},{"id":"streaming-support","name":"Streaming support","description":"","status":"fail","score":0,"maxScore":4,"details":"No streaming support documentation found","recommendation":"Support streaming responses (SSE or chunked transfer) for long-running operations. Agents need progress feedback, not just final results.","bonus":false,"maturity":"verified","tier":"recommended","estScoreGain":2.1},{"id":"rate-limits","name":"Rate limits documented","description":"","status":"fail","score":0,"maxScore":4,"details":"No rate limit documentation found","recommendation":"Return rate-limit headers (X-RateLimit-Limit, X-RateLimit-Remaining, Retry-After) so agents can self-throttle and avoid getting blocked.","bonus":false,"maturity":"verified","tier":"recommended","estScoreGain":2.1},{"id":"json-error-responses","name":"JSON error responses","description":"When something breaks, agents need a structured JSON error, not an HTML error page. One is recoverable, the other is a dead end.","status":"pass","score":4,"maxScore":4,"details":"API returns JSON error responses (410 at https://shop.app/api/v1/orank-probe-test)","recommendation":"Return structured JSON error responses with error codes, messages, and resolution hints. Agents can't parse HTML error pages.","bonus":false,"maturity":"verified","tier":"required"},{"id":"cli-tool","name":"CLI tool available","description":"An official CLI. Coding agents live in the terminal, so a CLI makes your product directly operable by the fastest-growing class of agents.","status":"fail","score":0,"maxScore":3,"details":"No CLI tool found","recommendation":"Publish an official CLI tool on npm, PyPI, or Homebrew. A CLI lets agents and developers script interactions with your product without building API integrations from scratch.","bonus":false,"maturity":"verified","tier":"recommended","estScoreGain":1.6},{"id":"rest-sdk-packages","name":"Multi-language SDK packages","description":"Official SDKs across ecosystems (npm, PyPI, Go). Each one is an integration an agent does not have to hand-roll, in the language it is already working in.","status":"pass","score":3,"maxScore":3,"details":"SDK packages found across 3 ecosystems: npm, pypi, rubygems","recommendation":"Publish official SDK packages across multiple language ecosystems (npm, PyPI, Go modules, RubyGems). Auto-generate them from your OpenAPI spec using tools like openapi-generator.","bonus":false,"maturity":"verified","tier":"recommended"},{"id":"nlweb-ask","name":"NLWeb /ask endpoint","description":"An NLWeb /ask endpoint that answers natural-language questions about your site directly, no crawling needed.","status":"fail","score":0,"maxScore":1,"details":"No NLWeb /ask endpoint found","recommendation":"Implement Microsoft's NLWeb protocol by adding a POST /ask endpoint that accepts natural-language queries and returns JSON with _meta (response_type, version). See github.com/microsoft/NLWeb.","bonus":false,"maturity":"emerging","tier":"emerging"},{"id":"nlweb-streaming","name":"NLWeb streaming support","description":"Your /ask endpoint streams results as they are found, so agents can show progress instead of a spinner.","status":"fail","score":0,"maxScore":1,"details":"No NLWeb /ask endpoint found","recommendation":"Add SSE streaming to your NLWeb /ask endpoint. Accept prefer.streaming: true and respond with Content-Type: text/event-stream using NLWeb event types (start, result, complete).","bonus":false,"maturity":"emerging","tier":"emerging"},{"id":"api-response-quality","name":"API response quality","description":"","status":"fail","score":0,"maxScore":3,"details":"No OpenAPI spec found - cannot evaluate API response quality","recommendation":"Define response schemas for all endpoints in your OpenAPI spec. Add pagination parameters, typed JSON content types, and structured error schemas.","bonus":false,"maturity":"verified","tier":"recommended","estScoreGain":1.6},{"id":"mcp-tool-naming","name":"MCP tool naming","description":"Predictable tool names (create_invoice, search_docs) that agents parse at a glance. Inconsistent naming makes every call a small research project.","status":"na","score":0,"maxScore":2,"details":"No MCP server detected","recommendation":"Use consistent naming conventions (snake_case or camelCase) for all MCP tools. Names should be descriptive (>= 4 chars) and not generic (avoid 'run', 'get', 'do').","bonus":true,"maturity":"verified","tier":"recommended"},{"id":"mcp-tool-annotations","name":"MCP tool annotations","description":"Labels that tell agents which tools are safe to call freely and which change or destroy things (readOnlyHint, destructiveHint). Essential when your MCP server can mutate real data.","status":"na","score":0,"maxScore":2,"details":"No MCP server detected","recommendation":"Add behavioral annotations (readOnlyHint, destructiveHint) to your MCP tools. Agents use these to avoid destructive actions without user confirmation.","bonus":true,"maturity":"verified","tier":"recommended"},{"id":"mcp-server-card","name":"MCP server-card.json","description":"A server card for each MCP server, at <server URL>/server-card or listed in /.well-known/ai-catalog.json, that tells an agent what the server is and where to connect before it does.","status":"fail","score":0,"maxScore":2,"details":"No MCP server card found at /.well-known/mcp/server-card.json","recommendation":"Publish a server card at /.well-known/mcp/server-card.json describing your MCP server. Required fields: name, description, version, serverUrl, tools[]. This lets agents preview your server before opening a transport connection.","bonus":true,"maturity":"verified","tier":"recommended","estScoreGain":0.7},{"id":"function-calling-compat","name":"Function calling compatibility","description":"Whether your API spec translates cleanly into the function-calling format ChatGPT, Claude, and Gemini actually consume. Incompatible specs mean agents cannot call you even when they want to.","status":"fail","score":0,"maxScore":2,"details":"No API spec found - function calling requires discoverable endpoints","recommendation":"Ensure API endpoints have unique operation IDs, typed schemas, and descriptions compatible with LLM function-calling formats.","bonus":false,"maturity":"verified","tier":"recommended","estScoreGain":1},{"id":"context-window-efficiency","name":"Context window efficiency","description":"","status":"fail","score":0,"maxScore":2,"details":"Insufficient indexable content for agent context windows","recommendation":"Reduce API response verbosity. Return only essential fields by default and support field selection (sparse fieldsets).","bonus":false,"maturity":"verified","tier":"recommended","estScoreGain":1},{"id":"error-recovery-simulation","name":"Agent error recovery test","description":"","status":"warning","score":1,"maxScore":2,"details":"Partial: JSON error responses, structured error messages","recommendation":"Return actionable error messages with specific fix instructions. Include error codes, affected fields, and retry guidance.","bonus":false,"maturity":"verified","tier":"recommended","estScoreGain":0.5}],"score":11,"maxScore":36},{"id":"in-agent-experience","name":"User Experience","description":"Can users interact with you through agents","checks":[{"id":"mcp-app-registry","name":"MCP Apps support","description":"MCP Apps let you ship real interactive UI inside ChatGPT and Claude, not just text answers. We check whether your server exposes any. N/A for pure API and data services.","status":"fail","score":0,"maxScore":10,"details":"No MCP Apps support detected (no ui:// resources or tool UI metadata)","recommendation":"Add MCP Apps support to your MCP server using @modelcontextprotocol/ext-apps. Expose ui:// resources and add _meta.ui.resourceUri to tools so agents can render interactive UIs directly in conversation.","bonus":false,"maturity":"verified","tier":"recommended","estScoreGain":3.8},{"id":"chatgpt-app-listed","name":"ChatGPT app listed","description":"Listed in the ChatGPT app directory, where hundreds of millions of users can pull your product into a conversation by name. Upside-only: the directory is curated and gated, so absence never costs points.","status":"fail","score":0,"maxScore":2,"details":"No ChatGPT app listing detected","recommendation":"Submit your app to the ChatGPT Plugin / GPT Store so ChatGPT users can discover and use your product.","bonus":false,"maturity":"verified","tier":"recommended","estScoreGain":0.8},{"id":"openai-plugin-manifest","name":"OpenAI plugin manifest","description":"","status":"fail","score":0,"maxScore":2,"details":"No AI plugin manifest found at /.well-known/ai-plugin.json","recommendation":"Create an /.well-known/ai-plugin.json manifest file for OpenAI plugin discovery with your API spec and auth details.","bonus":false,"maturity":"verified","tier":"recommended","estScoreGain":0.8},{"id":"a2ui-support","name":"A2UI / generative UI support","description":"Your product can render UI inside an agent conversation, via MCP Apps, the OpenAI Apps SDK, or generative UI patterns. Where users see you when they never visit your site.","status":"fail","score":0,"maxScore":2,"details":"No A2UI or generative UI support detected","recommendation":"Support Agent-to-UI rendering via MCP Apps (ui:// resources), OpenAI Apps SDK, or generative UI patterns that let agents render interactive UIs in conversation.","bonus":false,"maturity":"emerging","tier":"emerging"},{"id":"verified-integration","name":"Verified integration in AI platforms","description":"","status":"fail","score":0,"maxScore":3,"details":"No verified AI platform integrations detected","recommendation":"Get verified on at least one major AI platform (ChatGPT, Claude, Gemini). Verification badges increase agent trust and recommendation rates.","bonus":false,"maturity":"verified","tier":"recommended","estScoreGain":1.1},{"id":"mcp-apps-ui-quality","name":"MCP Apps UI quality","description":"Your in-agent UI holds up to scrutiny: correct MIME type, valid HTML, dark mode support, and no hardcoded secrets in the markup.","status":"na","score":0,"maxScore":4,"details":"No MCP Apps detected","recommendation":"Ensure your MCP Apps resources use MIME type text/html;profile=mcp-app, include <!DOCTYPE html>, and add <meta name=\"color-scheme\" content=\"light dark\"> for dark mode. Never hardcode secrets in resource HTML.","bonus":true,"maturity":"verified","tier":"recommended"},{"id":"registry-branding","name":"Registry branding","description":"Your MCP registry entry has a display name, icon, and description. Agents choosing between servers see this first; a bare entry looks abandoned.","status":"na","score":0,"maxScore":2,"details":"No MCP server detected","recommendation":"Add your logo, description, and category to your MCP registry listings. Branded entries get more agent recommendations.","bonus":false,"maturity":"emerging","tier":"emerging"},{"id":"openclaw-task-completion","name":"Autonomous task completion","description":"","status":"fail","score":0,"maxScore":2,"details":"Flow blocked (1/4): discover ✓ → understand ✗ → authenticate ✗ → act ✗","recommendation":"Ensure the full discover → understand → authenticate → act cycle works programmatically without browser-only steps.","bonus":false,"maturity":"verified","tier":"recommended","estScoreGain":0.8},{"id":"agent-sandbox-probe","name":"Sandboxed agent probe","description":"","status":"fail","score":0,"maxScore":2,"details":"Site not accessible from autonomous agent environment","recommendation":"Allow agent User-Agents to access your site. Remove CAPTCHA and JS challenges for known AI crawlers. Enable CORS for API endpoints.","bonus":false,"maturity":"verified","tier":"recommended","estScoreGain":0.8},{"id":"multi-turn-conversation","name":"Multi-turn conversation test","description":"","status":"warning","score":1,"maxScore":2,"details":"Limited context (2 sources): detailed meta, 1 discovered pages","recommendation":"Structure your API for multi-step workflows. Support stateful sessions or provide clear workflow chaining between endpoints.","bonus":false,"maturity":"verified","tier":"recommended","estScoreGain":0.4},{"id":"cross-platform-consistency","name":"Cross-platform agent consistency","description":"","status":"warning","score":1,"maxScore":2,"details":"Moderate consistency (2 signals): meta/OG descriptions aligned, title/OG title present","recommendation":"Ensure your API, MCP server, and web presence all describe your product consistently. Mismatches confuse agents.","bonus":false,"maturity":"verified","tier":"recommended","estScoreGain":0.4}],"score":2,"maxScore":25}],"scannedAt":"2026-04-19T01:44:47.512+00:00","durationMs":12666,"category":"Marketing","source":"seeded","analysisStatus":"complete","pendingChecks":[]}