Measured on the home page. Overall grade: Fair.
/.well-known/agent.json not found
Create a /.well-known/agent.json file following the A2A (Agent-to-Agent) protocol. It should include name, description, url, and skills fields describing your site's capabilities.
/.well-known/openapi.json not found
Create a /.well-known/openapi.json file with your API specification following the OpenAPI 3.x standard. See https://swagger.io/specification/ for the spec.
/.well-known/mcp.json not found
Create a /.well-known/mcp.json file describing your MCP server configuration. Include name, description, tools, and version fields. See https://modelcontextprotocol.io for the spec.
0/5 emerging AI discovery files published
ai.txt not found
Publish /.well-known/ai.txt declaring opt-in/opt-out signals for AI training. See https://site.spawning.ai/spawning-ai-txt for the format.
genai.txt not found
Publish /.well-known/genai.txt declaring your generative-AI usage policy.
ai-plugin.json present at /ai-plugin.json but does not look valid
Publish /ai-plugin.json (legacy ChatGPT plugin manifest). Schema: name_for_model, description_for_model, api.url. Still consumed by some agents.
agents.json present at /agents.json but does not look valid
Publish /agents.json describing your site as a callable agent (OpenAgents / Wildcard emerging spec). Includes name, description, and operations[].
nlweb.json present at /nlweb.json but does not look valid
Publish /.well-known/nlweb.json (Microsoft NLWeb) so agents can interact with the site through a natural-language interface.
No RSL license discovery found
Declare machine-readable licensing terms for your content with Really Simple Licensing. Add to robots.txt: License: https://your-site.com/license.xml — then publish the RSL document. See https://rslstandard.org.
No JSON-LD structured data found
Add a <script type="application/ld+json"> block in your HTML <head> with schema.org structured data describing your site, organization, or person.
No AI meta tags (ai:*) found
Add AI meta tags to your HTML <head>: <meta name="ai:summary" content="Brief description">, <meta name="ai:content_type" content="website">, <meta name="ai:author" content="Your Name">.
No rel="alternate" link to llms.txt in HTML
Add to your <head>: <link rel="alternate" type="text/plain" href="/llms.txt" title="LLM-optimized content">
No rel="alternate" link to agent.json in HTML
Add to your <head>: <link rel="alternate" type="application/json" href="/.well-known/agent.json" title="Agent Card">
No rel="me" identity links found
Add rel="me" links to verify your identity across platforms: <link rel="me" href="https://github.com/yourname">, <link rel="me" href="https://twitter.com/yourname">.
OpenGraph required tags present (og:title, og:description, og:url, og:type)
Twitter Card required tags present (twitter:card, twitter:title, twitter:description)
/robots.txt exists
No core AI crawlers explicitly configured
Add User-agent entries for core AI crawlers in your robots.txt. For each crawler, add: User-agent: <name> followed by Allow: / on the next line.
Sitemap directive present
Content signals declared for User-agent: * — search=yes, ai-input=yes, ai-train=no
0/48 known AI crawlers have explicit rules
Add explicit User-agent entries for more AI crawlers to maximize discoverability.
6/7 security headers present
Link header present but does not reference AI discovery files
Add AI discovery entries to your Link header: Link: </llms.txt>; rel="alternate"; type="text/plain", </.well-known/agent.json>; rel="alternate"; type="application/json"
Server-rendered content detected (547 words, 3694 chars of visible text)
Low text-to-markup ratio (0.7%)
A very low text-to-markup ratio is a typical SPA-shell symptom. Inline more content directly into the HTML response.
Semantic landmarks present (main, section, header, footer, nav)
Single <h1> heading: "Agentic Infrastructure"
Heavy JavaScript with no <noscript> fallback
Provide a <noscript> fallback that explains the site or links to a non-JS variant. This helps agents that disable JS.
17/17 <img> tags have alt attributes
<title> length 31 chars: "Agentic Infrastructure - Vercel"
Meta description is short (45 chars)
Expand the description to 70-160 characters with the page's main value proposition.
Canonical URL: https://vercel.com
<html lang="en">
UTF-8 charset declared
Viewport meta present: "width=device-width, initial-scale=1, maximum-scale=1"
Response compressed with Brotli (br)
Cache validator present (ETag)
Conditional request returns 304 Not Modified
Homepage is on the large side (510.8 KB decompressed)
Consider trimming inlined payloads to reduce crawl cost.
/llms.txt exists
/llms.txt Content-Type OK (text/plain)
H1 heading: "Vercel"
Blockquote description present
8 section heading(s) found
18 link(s) found
/llms-full.txt also available (bonus)
/.well-known/security.txt exists
Required field "Contact" present
Required field "Expires" present
Expires date is in the future (2027-05-27)
4/5 optional fields present
Sitemap located: https://vercel.com/sitemap.xml
Content-Type is XML (application/xml)
6403 URL(s) declared
100% of URLs have <lastmod>
Newest <lastmod> is recent (2 day(s) ago)
Site is served over HTTPS
HTTP requests redirect to HTTPS
HSTS max-age=31536000
HSTS includes subdomains
HSTS preload-eligible
Homepage serves Markdown via content negotiation (Accept: text/markdown)
Response body is Markdown, not an HTML document
Vary: Accept present (caches keep HTML and Markdown apart)
Markdown is ~99% lighter than the HTML representation (3025 vs 522952 bytes)
All 8 core AI crawler user-agents receive equivalent responses