Site report: 1 measured page. Overall grade: Good.
61 passing checks, 22 warnings, 4 failures
Bring the findings to the people who can fix them. Copy a ready-to-send summary for Slack, Teams or your next planning meeting.
This is a public report. Your team can open it without an account.
Content · 2 findings to address
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 roughly 80% against 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.
Content · 4 findings to address
1 JSON-LD block(s) found
@context references schema.org
@graph array present (multi-entity structured data)
Only 1 key type found: Organization
Add more entity types to your @graph. AI agents use these to understand site structure. Common types: Person, Organization, WebSite, WebPage.
No BreadcrumbList found
Add a BreadcrumbList entity to help AI agents understand your site navigation hierarchy.
Authorship declared: Whateren
1 sameAs link(s) tie your entity to external identifiers
Author declared but no publisher
Declare publisher as well, so a citation can name the outlet as well as the writer.
Organization carries disambiguating detail (registration, legal address or contact point)
No dateModified or datePublished in structured data
Assistants weigh recency when they answer time-sensitive questions, and a page with no date cannot be weighed at all. Add dateModified to anything that changes.
Structured-data headings appear in the visible text
Content · 1 finding to address
<title> length 44 chars: "Whateren: Home Inventory for iPhone and iPad"
Meta description is long (162 chars)
Trim to 70-160 characters; longer descriptions get truncated.
Canonical URL: https://www.whateren.com
<html lang="en">
UTF-8 charset declared
Viewport meta present: "width=device-width, initial-scale=1"
Content
Server-rendered content detected (2894 words, 16593 chars of visible text)
Text-to-markup ratio is healthy (15.0% of structural markup)
Semantic landmarks present (main, section, header, footer, nav)
Single <h1> heading: "Know what you own. And where it is."
32/32 <img> tags have alt attributes
Content
43/43 interactive elements have an accessible name
1/1 form controls are labelled
Method note: this reads markup, not a rendered accessibility tree
Access
Site is served over HTTPS
HTTP requests redirect to HTTPS
HSTS max-age=63072000
HSTS includes subdomains
HSTS preload-eligible
Access
All 10 core AI crawler user-agents receive the same page as a regular client
Access
Missing pages return 404
Homepage answers without a redirect
HEAD requests are supported
Content-Type: text/html with charset
Access · 1 finding to address
Response compressed with Brotli (br)
Cache validator present (ETag)
Conditional request returns 304 Not Modified
Homepage size is reasonable (343.5 KB decompressed)
Roughly 4,148 tokens of content in 87,918 tokens of response (95% markup)
An agent pays to receive the markup and then discards it. Serving Markdown on Accept negotiation is the direct fix.
Homepage responded in 47ms
Access
Homepage is indexable
No directive restricts how AI assistants may use this page
Discovery · 4 findings to address
Missing critical header: X-Content-Type-Options
Add the X-Content-Type-Options response header to your server configuration. This is a critical security header.
Only 1/7 security headers present
Add security headers like Strict-Transport-Security, X-Content-Type-Options, X-Frame-Options, and Referrer-Policy to your server response.
No Link header for AI discovery (llms.txt, Agent Card)
Add a Link response header pointing to your AI discovery files: Link: </llms.txt>; rel="alternate"; type="text/plain", </.well-known/agent-card.json>; rel="alternate"; type="application/json"
No machine-readable discovery relations beyond llms.txt and the Agent Card
Advertise what you publish with Link relations so agents stop guessing paths. Add the ones that apply, for example: Link: </llms.txt>; rel="describedby", </.well-known/api-catalog>; rel="api-catalog". Informational in 3.x: this does not affect your score.
Discovery · 3 findings to address
/llms.txt exists
/llms.txt Content-Type OK (text/plain)
H1 heading: "Whateren"
Blockquote description present
2 section heading(s) found
1 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.
No rel="describedby" link to llms.txt
llms.txt v2 uses this relation so a page can name the file that covers it. Add <link rel="describedby" href="/llms.txt"> or the equivalent Link header, so an agent that landed on a deep page does not have to guess that an index exists.
1 sampled link(s) resolve
No per-page Markdown mirror found
llms.txt v2 documents appending .md to a URL for its Markdown version. The index tells an agent which pages exist; the mirrors are what make reading them cheap.
Consumer note: llms.txt is read by coding agents, not by search
Discovery · 1 finding to address
/robots.txt exists
All 12 core AI crawlers explicitly configured
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, plus the optional use=immediate|reference|full. Generate yours at contentsignals.org.
13/57 known AI crawlers have explicit rules
Discovery
Sitemap located: https://www.whateren.com/sitemap.xml
Content-Type is XML (application/xml)
18 URL(s) declared
100% of URLs have <lastmod>
Newest <lastmod> is recent (0 day(s) ago)
Protocols · 1 finding to address
InformationalNo agent resource catalog found
A catalog is one document listing everything an agent can call here (agent cards, MCP servers, APIs, skills), so a client stops probing four conventions to find out. Worth publishing once you have more than one of those. Informational: both ai-catalog.json and ard.json are still drafts, so this never affects your score.
Protocols · 1 finding to address
No Agent Skills published
This site has documentation, so it has procedures worth teaching. A skill is a SKILL.md an agent installs and follows: setup steps, argument shapes, the mistakes to avoid. Publish one per task at /.well-known/agent-skills/{name}/SKILL.md and list them in /.well-known/agent-skills/index.json.
Protocols
N/ANo agent-facing surface: an Agent Card does not apply to this site
Protocols
N/ANo API surface: API discovery does not apply to this site
Protocols
N/ANo MCP server: MCP discovery does not apply to this site
Protocols
N/ANo commerce surface: agentic-commerce discovery does not apply to this site
Protocols
N/ANothing on this site requires authorization: auth discovery does not apply
Protocols
N/ANo forms and no WebMCP code: nothing here for an agent to invoke as a tool
Policy · 1 finding to address
/.well-known/security.txt not found
Create a /.well-known/security.txt file per RFC 9116. At minimum, include Contact: and Expires: fields. See https://securitytxt.org/ for a generator.
Policy · 1 finding to address
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.
Policy · 1 finding to address
No machine-readable usage policy declared
State your terms where they can be read without a lawyer. The lowest-effort option is a Content-Signal line in robots.txt: Content-Signal: search=yes, ai-input=yes, ai-train=no. Absence is neutral, not permission, but it also gives you nothing to point at.
Give your team full reports, prioritized fixes and monitoring, so improvements last beyond the next release.