Score verdict
Needs focused fixes
Level 3
Findable
Quotable
Understandable
Trustworthy
AI Readiness
Technical SEO
Security
Performance
Production Quality
Report brief
What stands out
ihateheic.com scored 80/100 on this public readiness scan. 12 pages were sampled from 123 discovered URLs.
Top findings
- Needs workStructured DataTechnical SEO
10 sampled page(s) publish FAQPage JSON-LD without matching visible FAQ questions.
ihateheic.com, /batch-heic-converter, /compress-heic, /compress-heic-to-100kb (+6 more) - Needs workMarkdown negotiationAI Readiness
No markdown response for Accept: text/markdown
- Needs workContent SignalsSecurity
No Content Signals were detected
- Needs workDiscovery Link HeadersProduction Quality
Homepage Link headers do not advertise agent-useful discovery artifacts
- Needs workLink headersTechnical SEO
No discovery-oriented Link headers were detected on the homepage response
Category context
- AI Readiness: 50/100
- Technical SEO: 86/100
- Security: 73/100
- Performance: no signal
- Production Quality: 67/100
ihateheic.com/sitemap-index.xml returned 200 with 1 URLs declared.
Coverage evidence
What this scan proved
12 representative pages were fetched from 123 discovered URLs.
- Checked
- 12
- Found
- 123
- Mode
- Sampled
- Non-200
- 0
Sitemap sources
- ihateheic.com/sitemap-index.xml200 · 1 URLs declared
- ihateheic.com/sitemap-0.xml200 · 123 URLs declared
Pages checked
Saved-site dashboard
Keep the full public URL map alive.
Save the site when you need URL, sitemap, and robots changes tracked between scans.
- URL inventorySource, status, canonical, and indexability for discovered public pages.
- Sitemap healthParent indexes, child sitemaps, parse errors, and missing URL coverage.
- Robots policyCrawler access, AI bot rules, and implementation-ready robots.txt output.
AI Readiness
Markdown negotiation
Return a markdown version of HTML pages when agents request it via Accept: text/markdown so LLMs ingest your content cleanly.
No markdown response for Accept: text/markdown
Enable Markdown for Agents so requests with `Accept: text/markdown` return a markdown version of your HTML response while HTML stays the default for browsers. Set `Content-Type: text/markdown` on the markdown variant and add `Vary: Accept` so caches differentiate the two representations. Verify with `curl -H "Accept: text/markdown" https://yoursite.com/`.
A2A Agent Card
Publish an A2A Agent Card so other agents can discover your agent-to-agent capabilities and supported interfaces.
No agent-to-agent surface was detected, so A2A agent-card discovery may not apply
Publish /.well-known/agent-card.json describing your agent: `name`, `description`, `endpoints`, `version`, and a complete `supportedInterfaces` array with the protocols and message types you accept. Include a `capabilities` block so calling agents can negotiate, and keep the URL stable across deploys — agents cache discovery responses.
Agent Skills
Publish a discoverable agent-skills index so AI agents can find and load your structured skill bundles.
No agent skill surface was detected, so agent-skills discovery may not apply
Publish a skills discovery index at /.well-known/agent-skills/index.json (per the Agent Skills Discovery RFC v0.2.0) with a `$schema` field and a `skills` array. Each entry should have `name`, `type`, `description`, `url`, and a `sha256` digest of the SKILL.md so agents can verify integrity. Make sure each `url` resolves to a reachable SKILL.md.
API Catalog
Publish an API catalog at /.well-known/api-catalog so agents can discover your API documentation and schemas without crawling.
No public API surface was detected, so API catalog discovery may not apply
Create /.well-known/api-catalog returning `application/linkset+json` with a `linkset` array. Each entry should include an `anchor` URL for the API and link relations like `service-desc` (OpenAPI spec), `service-doc` (human docs), and `status` (health endpoint). See RFC 9727 Appendix A for examples and RFC 9264 for the linkset format.
MCP Server Card
Serve an MCP Server Card so agents can discover your Model Context Protocol surface and connect with the right capabilities.
No MCP server surface was detected, so MCP server-card discovery may not apply
Serve an MCP Server Card at /.well-known/mcp/server-card.json with `serverInfo` (name, version), the transport endpoint URL, and the `capabilities` you support. Accept /.well-known/mcp.json as a fallback for clients on the legacy path. The schema is being standardized — track the active proposal at github.com/modelcontextprotocol/modelcontextprotocol/pull/2127.
OAuth discovery
Expose OAuth/OIDC discovery metadata so agents can authenticate against your APIs programmatically.
No public login, signup, or protected API surface was detected, so OAuth/OIDC discovery may not apply
If your site has protected APIs, publish /.well-known/openid-configuration (for OpenID Connect) or /.well-known/oauth-authorization-server (for OAuth 2.0) with `issuer`, `authorization_endpoint`, `token_endpoint`, `jwks_uri`, and `grant_types_supported`. This lets agents discover how to authenticate without parsing your docs.
OAuth Protected Resource
Publish OAuth Protected Resource metadata so agents know which auth servers issue valid tokens for your APIs.
No protected API surface was detected, so OAuth protected-resource metadata may not apply
Publish /.well-known/oauth-protected-resource (per RFC 9728) with your `resource` identifier, `authorization_servers` (the list of OAuth/OIDC issuer URLs that can issue tokens for this resource), and `scopes_supported`. This tells agents which auth server to obtain access tokens from and which scopes to request.
OpenAPI Discovery
Publish a discoverable OpenAPI 3.x document so agents and developers can understand your public HTTP API without scraping docs.
No public API surface was detected, so OpenAPI discovery may not apply
Publish a valid OpenAPI 3.x document at /openapi.json or /.well-known/openapi.json, and advertise it with a `Link: <...>; rel="service-desc"` header or from /.well-known/api-catalog. Include `openapi`, `info.title`, `info.version`, `servers`, and `paths`; give operations stable `operationId` and `summary` values so agents can choose the right endpoint safely.
WebMCP
Expose in-page tools to AI agents via the WebMCP browser API so agents can act on your site directly.
No in-page agent tool surface was detected, so WebMCP may not apply
Implement the WebMCP API by calling `navigator.modelContext.provideContext()` with tool definitions exposing your site's key actions to AI agents. Each tool needs `name`, `description`, `inputSchema` (JSON Schema), and an `execute` callback. Register tools at the points an agent could meaningfully use them — after page hydration, on route changes, or when permission state changes.
Technical SEO
Structured Data
Pages publish JSON-LD structured data so search engines and AI agents can extract entities, products, FAQs, and offers reliably.
10 sampled page(s) publish FAQPage JSON-LD without matching visible FAQ questions.
Embed JSON-LD `<script type="application/ld+json">` blocks in the head describing the page's primary entity — Article, Product, FAQPage, Organization, etc. — using schema.org types and required fields per Google's structured data guidelines. Validate with the Rich Results Test before shipping, and keep the JSON strictly parseable (no trailing commas, no comments).
Link headers
Expose Link response headers so agents can discover related resources (API catalog, skills, agent card) without parsing HTML.
No discovery-oriented Link headers were detected on the homepage response
Add Link response headers on your homepage and key API endpoints pointing agents to discovery documents. For example: `Link: </.well-known/api-catalog>; rel="api-catalog"` for your API catalog, or `Link: </docs/api>; rel="service-doc"` for documentation. See RFC 8288 for the format and the IANA Link Relations registry for valid `rel` values.
FAQ Content
FAQPage schema is treated as a bonus only when it matches visible question-and-answer content.
10 page(s) publish FAQPage schema without matching visible FAQ questions.
Keep FAQ sections visible and useful. Only add FAQPage JSON-LD when the same questions and answers are present in the page body; remove FAQ schema for hidden, fabricated, or irrelevant questions.
Content Freshness
Article-like and substantial pages expose reliable freshness signals so answer engines know whether the content is current.
12 content page(s) have no reliable date signal and 0 have a newest signal older than six months.
Add truthful freshness metadata only where it reflects a real content update: JSON-LD dateModified/datePublished, article modified-time meta tags, a visible updated or reviewed date, or sitemap lastmod. Do not stamp every page with build time unless the visible content actually changed.
Content Depth and Duplication
Each indexable page carries enough unique, substantive content to merit indexing on its own without overlapping siblings.
0 page(s) are under 100 words; 1 page(s) are between 100 and 300 words; 0 duplicate-content fingerprint group(s) were detected.
Audit indexable pages for substantive, unique content — at minimum a few hundred words of original copy that delivers on the title and description. Consolidate near-duplicate pages with canonical tags or merge them into a single richer page. Don't ship placeholder "Coming soon" pages to production indexable URLs.
External Citation Links
Content pages with factual claims link out to credible external primary sources so readers and answer engines can verify context.
11 content page(s) have fewer than two contextual external citation links.
For articles, guides, and research-like pages, cite official docs, standards, primary research, or authoritative sources where claims need support. Do not add arbitrary outbound links to transactional pages, and avoid vague anchors like "click here".
Page and Server Snapshot
Lightweight server and document metrics from the sampled homepage are captured every scan so drift in HTML size, server stack, or DOM complexity is observable across reports.
Captured lightweight server and document metrics from the sampled homepage.
Security
Content Signals
Declare AI-usage preferences via Content-Signal directives in robots.txt (ai-train, search, ai-input).
No Content Signals were detected
Add Content-Signal directives to your robots.txt declaring preferences for ai-train, search, and ai-input. Example: `Content-Signal: ai-train=no, search=yes, ai-input=no`. Pair with explicit User-agent blocks so each signal targets specific bots, and review quarterly as the spec evolves.
Web Bot Auth
Identify your own bot traffic with Web Bot Auth signed requests so receiving sites can verify and trust them.
Web Bot Auth HTTP Message Signatures directory is missing
Publish a JWKS at /.well-known/http-message-signatures-directory containing the public keys you use to sign outgoing bot requests, so receiving sites can verify those requests via HTTP Message Signatures (RFC 9421). Rotate keys on a regular cadence and keep the previous key in the JWKS until in-flight requests have aged out.
HTTP Observatory
HTTP Observatory grade B+ with score 80.
Tighten response headers and HTTP posture where Observatory reports gaps.
Cloudflare Challenge Signals
No Cloudflare Challenge Page marker was detected on the homepage response.
DNSSEC Signals
No DNSSEC DS or DNSKEY records were detected for the DNS zone.
Performance
Cloudflare Cache Signals
Cloudflare reported cache status DYNAMIC.
PageSpeed Insights
PageSpeed Insights returned no Lighthouse result.
PageSpeed sometimes throttles or skips a URL. The miss is cached on our side for ~15 minutes, so refreshing this report often returns the same answer. A fresh scan is the surest fix.
- The URL might be unsupported (e.g. a single-page route Lighthouse can't reach).
- Google could be rate-limiting our project key — usually clears within a few minutes.
- The page returned a redirect chain or a non-200 that Lighthouse refused to score.
CrUX Field Data
Chrome doesn't have enough real-user traffic for this site to publish field metrics yet — this isn't a failure on your side.
The Chrome User Experience Report only covers public origins with enough opted-in Chrome traffic. Smaller or newly launched sites typically appear after they accumulate sufficient sample size. Lab performance (PageSpeed Insights) below stays a useful proxy in the meantime.
Production Quality
Discovery Link Headers
Homepage Link headers do not advertise agent-useful discovery artifacts
Expose Link headers for api-catalog, service-desc, agent-skills, or related discovery artifacts.
Scan Coverage
Scanned 12 representative pages out of 123.
ACP
Publish Agentic Commerce Protocol discovery so agents can transact with your commerce surfaces without scraping.
No payable API surface was detected, so ACP discovery may not apply
Serve /.well-known/acp.json at the origin root with `protocol.name` set to `"acp"`, the `protocol.version`, `api_base_url`, supported transports, and `capabilities.services`. Agents can then discover your ACP implementation without first creating a checkout session.
Cloudflare Error Diagnostics
No Cloudflare-generated error diagnostics were detected on the homepage response.
Cloudflare Product Signals
No Cloudflare product beacons were detected in the homepage response.
DNS Service Discovery
Detected 1 public DNS/service signal(s).
MPP
Publish Machine Payment Protocol metadata so agents can discover paid endpoints in your API.
No payable API surface was detected, so MPP discovery may not apply
Publish an OpenAPI document at /openapi.json with `x-payment-info` extensions on payable operations. Each operation should declare `intent` (charge or session), `method` (tempo, stripe, lightning, card), `amount`, and `currency`. Use the MPP SDK (`mppx` for TypeScript, `pympp` for Python) with framework middleware for Hono, Express, Next.js, or Elysia to handle the payment flow.
UCP
Expose Universal Commerce Protocol metadata so agents can transact for content or services through a standard interface.
No payable API surface was detected, so UCP discovery may not apply
Serve /.well-known/ucp with your protocol version, declared `services`, supported `capabilities`, and reachable `endpoints`. Make sure any spec URLs and referenced JSON Schemas resolve so agents can validate against them at discovery time.
x402
Support x402-style HTTP 402 payment flows so agents can pay for API access machine-to-machine.
No payable API surface was detected, so x402 discovery may not apply
Add x402 payment middleware to your API routes so AI agents can pay for access via HTTP. Use `@x402/express`, `@x402/hono`, or `@x402/next` middleware with a facilitator URL and wallet address. Protected routes will return HTTP 402 with payment requirements that agents can fulfill automatically.
HTML Validation
HTML validation is temporarily unavailable.