Measured on the home page. Overall grade: Poor.
/.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 not found
Publish /ai-plugin.json (legacy ChatGPT plugin manifest). Schema: name_for_model, description_for_model, api.url. Still consumed by some agents.
agents.json not found
Publish /agents.json describing your site as a callable agent (OpenAgents / Wildcard emerging spec). Includes name, description, and operations[].
nlweb.json not found
Publish /.well-known/nlweb.json (Microsoft NLWeb) so agents can interact with the site through a natural-language interface.
Homepage does not serve Markdown via content negotiation
Serve a Markdown representation of your pages when agents request "Accept: text/markdown". Agents like Claude Code and Cursor ask for it, and Markdown cuts token usage by ~80% vs HTML. Cloudflare ("Markdown for Agents") and Vercel can enable this without code changes.
No <link rel="alternate" type="text/markdown"> fallback found on the homepage
If you cannot enable content negotiation, advertise a Markdown version with <link rel="alternate" type="text/markdown" href="/index.md"> so agents can discover it.
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.
<title> is missing or empty
Add a <title> in <head> describing the page in 20-70 characters. Agents quote it as the document name.
<meta name="description"> is missing
Add <meta name="description" content="..."> in <head> with a 70-160 character summary. Agents use this as the canonical short description.
No <link rel="canonical"> found
Add <link rel="canonical" href="https://your-site.com/page"> so agents have an unambiguous URL to cite even when crawled via a redirect or query-string variant.
<html lang="..."> is missing
Set the document language: <html lang="en">. Multilingual agents rely on this to pick the right summarization model and avoid mixed-language ranking.
No UTF-8 charset declaration in HTML head
Add <meta charset="utf-8"> as the first child of <head>. Without it, agents can mis-decode non-ASCII content.
Missing or incomplete viewport meta tag
Add <meta name="viewport" content="width=device-width, initial-scale=1">. Helps mobile agents render the page correctly.
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)
OpenGraph recommended tags missing: og:site_name
Add these for richer previews: og:site_name.
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
No Content-Signal directive found (optional)
Declare how crawlers may use your content after access with the Content Signals Policy, e.g.: Content-Signal: search=yes, ai-train=no. Known signals: search, ai-input, ai-train. Generate yours at contentsignals.org.
0/48 known AI crawlers have explicit rules
Add explicit User-agent entries for more AI crawlers to maximize discoverability.
Sparse server-rendered content (29 words, 1778 chars)
Render at least the main page content server-side. Many AI crawlers (GPTBot, ClaudeBot, CCBot) do not execute JavaScript and will see only the static HTML.
Text-to-markup ratio is healthy (37.2%)
Only 1 semantic landmark(s) found
Use semantic HTML tags so AI agents can understand page structure: <header>, <nav>, <main>, <article>, <section>, <footer>.
2 <h1> headings found (recommend exactly 1)
Use a single <h1> per page to clearly mark the primary topic. Demote secondary headings to <h2>+.
/.well-known/security.txt exists
Required field "Contact" present
Required field "Expires" missing (RFC 9116)
Add "Expires:" to your security.txt. Use an ISO 8601 date, e.g., Expires: 2026-12-31T23:59:59.000Z
3/5 optional fields present
PerplexityBot receives reduced content (1725 vs 10505 chars of visible text)
The server returns 200 but serves this crawler substantially less content than a regular client — often an interstitial, a challenge page, or conditional rendering. Agents index what they receive.
OAI-SearchBot receives reduced content (1723 vs 10505 chars of visible text)
The server returns 200 but serves this crawler substantially less content than a regular client — often an interstitial, a challenge page, or conditional rendering. Agents index what they receive.
CCBot receives reduced content (1721 vs 10505 chars of visible text)
The server returns 200 but serves this crawler substantially less content than a regular client — often an interstitial, a challenge page, or conditional rendering. Agents index what they receive.
5/7 security headers present
No Link header for AI discovery (llms.txt, agent.json)
Add a Link response header pointing to your AI discovery files: Link: </llms.txt>; rel="alternate"; type="text/plain", </.well-known/agent.json>; rel="alternate"; type="application/json"
Response compressed with Brotli (br)
Cache validator present (ETag)
Conditional request returned 200 instead of 304 Not Modified
The server advertises a cache validator but does not honor If-None-Match / If-Modified-Since. Configure it to return 304 when the validator matches, so crawlers avoid re-downloading unchanged pages.
Homepage size is reasonable (4.7 KB decompressed)
/llms.txt exists
/llms.txt Content-Type OK (text/plain)
H1 heading: "PayPal"
No blockquote description found ("> ...")
Add a blockquote description after the H1 heading, e.g.: > A brief summary of your site for AI agents.
7 section heading(s) found
151 link(s) found
/llms-full.txt not found (optional but recommended)
Create a /llms-full.txt with expanded content — full documentation, API details, and comprehensive site information for AI agents.
Sitemap located: https://www.paypal.com/paypal-sitemap-index.xml
Content-Type is XML (text/xml)
Sitemap-index references 1213 child sitemap(s)
3/3 sample child sitemap(s) reachable
Sample yielded 1768 URL(s) across 3 child(ren)
Site is served over HTTPS
HTTP requests redirect to HTTPS
HSTS max-age=31536000
HSTS includes subdomains
HSTS preload-eligible