# Agent readiness — https://besthumanizer.app/

**ARI-100 51/100 · grade D (Largely invisible) · level L0**

core 48 + emerging-signal bonus 3 · crawler access 100/100 · accessibility 89/100
scanned 2026-11-11T23:07:49.598Z · 99 checks scored of 120 · 42 pass, 20 partial, 37 fail

## Domains
| domain | weight | score | passed |
|---|---|---|---|
| Reachability & Access | 20 | 82.2 | 9/15 |
| Render & Delivery | 10 | 44.2 | 4/10 |
| Structure & Semantics | 12 | 69.2 | 8/12 |
| Structured Data | 12 | 15.8 | 1/7 |
| Discovery Files | 14 | 46.8 | 6/18 |
| Agent Interfaces | 14 | 53.4 | 11/26 |
| Operability & Commerce | 10 | 0 | 0/1 |
| Trust & Authority | 8 | 41.7 | 3/10 |

## Crawler reachability
| crawler | platform | role | verdict |
|---|---|---|---|
| OAI-SearchBot | ChatGPT search | search | allowed |
| ChatGPT-User | ChatGPT | user | allowed |
| Claude-SearchBot | Claude search | search | allowed |
| Claude-User | Claude | user | allowed |
| PerplexityBot | Perplexity | search | allowed |
| Perplexity-User | Perplexity | user | allowed |
| Googlebot | Google / AI Overviews | search | allowed |
| Google-Agent | Google AI Mode | user | allowed |
| Google-GeminiNotebook | Gemini | user | allowed |
| bingbot | Bing / Copilot | search | allowed |
| Applebot | Siri / Apple Intelligence | search | allowed |
| meta-webindexer | Meta AI | search | allowed |
| meta-externalfetcher | Meta AI | user | allowed |
| MistralAI-Index | Mistral Le Chat | search | allowed |
| MistralAI-User | Mistral Le Chat | user | allowed |
| Amzn-SearchBot | Alexa | search | allowed |
| Amzn-User | Alexa | user | allowed |
| DuckAssistBot | DuckDuckGo AI | search | allowed |
| YouBot | You.com | search | allowed |
| Diffbot | Diffbot | other | allowed |
| GoogleOther | Google other | other | allowed |

## Failing checks, most recoverable first
### Homepage content is in the raw HTML  (+5)
`render/ssr-home` · weight 5 · **fail** · 55 chars of text, 0 H1 in raw HTML

Server-render the homepage of https://besthumanizer.app: ship at least 500 characters of real text and an H1 in the initial HTML response rather than after hydration (SSR/SSG, or prerender). Evidence: 55 chars of text, 0 H1 in raw HTML.

### JSON-LD structured data is present  (+4)
`data/jsonld` · weight 4 · **fail** · no JSON-LD

Add a JSON-LD block to https://besthumanizer.app/ with @context https://schema.org and a @type that matches the page. Evidence: no JSON-LD.

### Structured data validates  (+4)
`data/jsonld-valid` · weight 4 · **fail** · 0 block(s) parse cleanly

Fix the JSON-LD validation errors on https://besthumanizer.app/: 0 block(s) parse cleanly. Every block must parse and carry the required properties for its type.

### robots.txt is reachable and valid  (+3)
`access/robots-valid` · weight 3 · **fail** · robots.txt HTTP 200, 0 groups

Fix robots.txt at https://besthumanizer.app/robots.txt: it must return HTTP 200 with Content-Type text/plain, contain at least one "User-agent: *" group, and contain no HTML. Current evidence: robots.txt HTTP 200, 0 groups.

### Unknown URLs return a real 404  (+3)
`render/real-404` · weight 3 · **fail** · unknown path returned 200 (soft 404)

Return a real 404 status for unknown paths on https://besthumanizer.app instead of a 200 soft-404 page, and include links to real pages in the body. Evidence: unknown path returned 200 (soft 404).

### Primary content does not depend on client rendering  (+3)
`render/no-js-only` · weight 3 · **fail** · empty mount node detected

Remove the JavaScript dependency for primary content on https://besthumanizer.app: the raw response must not be an empty mount node. Render on the server and hydrate. Evidence: empty mount node detected.

### Exactly one H1 states the page subject  (+3)
`structure/one-h1` · weight 3 · **fail** · 0 H1: ""

Ensure exactly one non-empty H1 on https://besthumanizer.app/ that states the page subject; demote extra H1s to H2. Evidence: 0 H1: "".

### Canonical points at itself  (+3)
`structure/canonical` · weight 3 · **fail** · no canonical link

Add a self-referencing rel=canonical to https://besthumanizer.app/ that matches the URL actually served (https, final host, no tracking params). Evidence: no canonical link.

### Declared type matches the page  (+3)
`data/jsonld-type` · weight 3 · **fail** · no declared type

Declare the correct schema type on https://besthumanizer.app/ (no declared type) — Product for a product page, Article for editorial, Service for a service, FAQPage when the page answers questions.

### Publisher entity is declared and linked  (+3)
`data/org-entity` · weight 3 · **fail** · no Organization/Person node

Add an Organization (or Person) JSON-LD node on https://besthumanizer.app with name, url, logo, and sameAs links to the profiles the brand actually owns. Evidence: no Organization/Person node.

### Content negotiation returns Markdown on request  (+3)
`discovery/md-negotiation` · weight 3 · **fail** · Accept: text/markdown → text/html

Support Accept: text/markdown on https://besthumanizer.app: return the Markdown mirror with Content-Type text/markdown and add Vary: Accept so caches stay separate. Evidence: Accept: text/markdown → text/html.

### Search works through a GET URL  (+3)
`commerce/site-search` · weight 3 · **fail** · no GET search form

Make site search on https://besthumanizer.app work over GET with a ?q= parameter that returns results in the server HTML, so an agent can construct a search URL. Evidence: no GET search form.

### AI bot policy is named, not inherited  (+2)
`access/bot-policy-deliberate` · weight 2 · **fail** · 0 named user-agent groups

Name the AI crawlers explicitly in robots.txt for https://besthumanizer.app instead of relying on a wildcard, so each one has a deliberate policy. Evidence: 0 named user-agent groups.

### Text-to-markup ratio is workable  (+2)
`render/text-ratio` · weight 2 · **fail** · text/markup 2.8%

Raise the text-to-markup ratio on https://besthumanizer.app/ to at least 5%: trim wrapper divs and inline styles, and put the copy in plain elements. Evidence: text/markup 2.8%.

### llms.txt follows the published format  (+2)
`discovery/llms-conform` · weight 2 · **fail** · H1 false, blockquote false, 0 H2, 0 links

Restructure /llms.txt on https://besthumanizer.app to the published format: H1, blockquote summary under it, H2 sections whose bullets are [name](url) with optional ": note" suffixes, and a ## Optional section for secondary links. Evidence: H1 false, blockquote false, 0 H2, 0 links.

### HTTP Link headers point at machine resources  (+2)
`discovery/link-headers` · weight 2 · **fail** · no Link header

Add Link response headers on https://besthumanizer.app pointing at its machine-readable resources: rel="describedby" to /llms.txt, rel="api-catalog" to /.well-known/api-catalog, rel="alternate" to the Markdown mirror. Evidence: no Link header.

### Content usage preferences are declared  (+2)
`discovery/content-signal` · weight 2 · **fail** · no Content-Signal line

Add a Content-Signal line to robots.txt on https://besthumanizer.app, e.g. "Content-Signal: search=yes, ai-input=yes, ai-train=no", so usage terms are machine-readable. Evidence: no Content-Signal line.

### An OpenAPI description is published  (+2)
`interfaces/openapi` · weight 4 · **partial** · openapi.json HTTP 200

Publish /openapi.json on https://besthumanizer.app (OpenAPI 3.1) describing every public endpoint, with operation summaries and example responses. Evidence: openapi.json HTTP 200.

### An API catalog linkset is published  (+2)
`interfaces/api-catalog` · weight 2 · **fail** · no linkset

Publish /.well-known/api-catalog on https://besthumanizer.app as an RFC 9727 linkset pointing at the API, its OpenAPI description and its docs. Evidence: no linkset.

### The MCP card carries the fields a client needs  (+2)
`interfaces/mcp-card-fields` · weight 2 · **fail** · 0/4 required groups in the card

Complete the MCP server card on https://besthumanizer.app: transport, endpoint URL, auth requirement, and every tool with a declared input schema and description. Evidence: 0/4 required groups in the card.

### The API is easy to call from a model  (+2)
`interfaces/fc-friendly` · weight 2 · **fail** · 0 described properties in the schema

Simplify the API surface on https://besthumanizer.app for function calling: flat named parameters, enums instead of free-text where possible, and a description on every field in the OpenAPI spec. Evidence: 0 described properties in the schema.

### A developer portal is reachable from the homepage  (+2)
`interfaces/dev-portal` · weight 2 · **fail** · no developer link

Link the developer docs from the homepage and main navigation of https://besthumanizer.app — one hop, not three. Evidence: no developer link.

### The site tells an agent when to use it  (+2)
`interfaces/agent-instruction` · weight 2 · **fail** · no when-to-use block

Add a when-to-use block to https://besthumanizer.app (in llms.txt, the MCP card or the agent manifest) stating what the agent is for, what it must not do, and one worked call. Evidence: no when-to-use block.

### Claims are checkable  (+2)
`trust/sources` · weight 2 · **fail** · 0 outbound source link(s)

Add outbound links to primary sources for the factual claims on https://besthumanizer.app/ — the operator documentation, study or specification, not another summary. Evidence: 0 outbound source link(s).

### About and contact are reachable  (+2)
`trust/about-contact` · weight 2 · **fail** · no about or contact link

Publish a reachable About and Contact page on https://besthumanizer.app and link both from the footer. Evidence: no about or contact link.

### The organization node is complete  (+2)
`trust/org-completeness` · weight 2 · **fail** · legalName missing

Complete the Organization schema on https://besthumanizer.app with legalName, address, contactPoint, logo and sameAs. Evidence: legalName missing.

### /llms.txt exists and is served as text  (+1.5)
`discovery/llms-txt` · weight 3 · **partial** · HTTP 200, 1967 bytes, text/html

Publish /llms.txt on https://besthumanizer.app as text/plain: a single H1, a one-line blockquote summary, then H2 sections of [name](url) links to the pages that answer the most common questions. Evidence: HTTP 200, 1967 bytes, text/html.

### A public API answers without a human  (+1.5)
`interfaces/public-api` · weight 3 · **partial** · no API declared

Expose at least one unauthenticated read endpoint on https://besthumanizer.app that returns the site's core facts as JSON, and document it in the OpenAPI spec. Evidence: no API declared.

### A named, accountable author or publisher  (+1.5)
`trust/author` · weight 3 · **partial** · no author signal

Show a named author or accountable publisher on https://besthumanizer.app/, with a link to an about page that establishes who they are. Evidence: no author signal.

### Training policy is explicit  (+1)
`access/training-policy` · weight 1 · **fail** · no explicit training policy

State a training policy on https://besthumanizer.app: either name CCBot / Google-Extended / Bytespider explicitly in robots.txt, or add a Content-Signal line (search=yes, ai-input=yes, ai-train=no). Evidence: no explicit training policy.

### Snippets and large image previews are allowed  (+1)
`access/snippets-allowed` · weight 2 · **partial** · snippet directives incomplete

On https://besthumanizer.app set "max-snippet:-1, max-image-preview:large" in the meta robots tag or X-Robots-Tag so assistants can quote the page. Evidence: snippet directives incomplete.

### Correct Content-Type and charset  (+1)
`render/content-type` · weight 2 · **partial** · content-type text/html

Set correct Content-Type headers on https://besthumanizer.app: text/html; charset=utf-8 for pages, text/plain; charset=utf-8 for robots.txt, llms.txt and markdown mirrors. Evidence: content-type text/html.

### Headings are sequential and descriptive  (+1)
`structure/heading-order` · weight 2 · **partial** · 0 skipped level(s), 0 H2(s)

Fix the heading outline on https://besthumanizer.app/: no skipped levels (H2 to H4), and make each H2 describe its section. Evidence: 0 skipped level(s), 0 H2(s).

### Content is separated by landmarks  (+1)
`structure/landmarks` · weight 2 · **partial** · no main/article element

Wrap the primary copy of https://besthumanizer.app/ in <main> or <article> and keep nav/header/footer outside it, so a parser can isolate the content. Evidence: no main/article element.

### Published and modified dates are declared  (+1)
`data/dates` · weight 2 · **partial** · no dates in schema

Add datePublished and dateModified to the schema on https://besthumanizer.app/, kept in sync with the visible date. Evidence: no dates in schema.

### BreadcrumbList declares the page position  (+1)
`data/breadcrumb` · weight 1 · **fail** · no BreadcrumbList

Add a BreadcrumbList to https://besthumanizer.app/ whose items match the visible breadcrumb. Evidence: no BreadcrumbList.

### Sitemap entries carry real lastmod  (+1)
`discovery/sitemap-lastmod` · weight 2 · **partial** · no lastmod

Add truthful <lastmod> values to the sitemap on https://besthumanizer.app from real content timestamps. Evidence: no lastmod.

### A Markdown mirror of the page exists  (+1)
`discovery/md-mirror` · weight 2 · **partial** · https://besthumanizer.app.md → HTTP 200

Publish a Markdown mirror for each page on https://besthumanizer.app: serve /<path>.md with Content-Type text/markdown and the same content as the HTML. Evidence: https://besthumanizer.app.md → HTTP 200.

### HTML advertises its Markdown twin  (+1)
`discovery/md-alternate` · weight 1 · **fail** · no <link rel=alternate type=text/markdown>

Add <link rel="alternate" type="text/markdown" href="/<path>.md"> to the head of https://besthumanizer.app/. Evidence: no <link rel=alternate type=text/markdown>.

### DNS advertises agent endpoints  (+1)
`discovery/dns-aid` · weight 1 · **fail** · no _agents TXT record

Publish a DNS discovery record for https://besthumanizer.app (a TXT record listing the agent endpoints the site exposes) so an agent learns the surface before fetching a page. Evidence: no _agents TXT record.

### The page declares the index that covers it  (+1)
`discovery/describedby` · weight 1 · **fail** · rel=describedby to the index

Add a rel="describedby" link to the covering /llms.txt from every page on https://besthumanizer.app so an agent can widen from one page to the index. Evidence: rel=describedby to the index.

### Site actions are exposed to in-browser agents  (+1)
`interfaces/webmcp` · weight 1 · **fail** · no WebMCP registration

Register the site's real actions (search, filter, add to cart) as WebMCP tools on https://besthumanizer.app so a browser agent can call them without guessing at the DOM. Evidence: no WebMCP registration.

### A natural-language query endpoint answers  (+1)
`interfaces/nlweb-ask` · weight 1 · **fail** · /ask → HTTP 200, text/html

Expose a natural-language query endpoint at https://besthumanizer.app/ask that accepts ?query= and returns JSON (answer plus result URLs), so an agent can ask the site directly instead of crawling it. Evidence: /ask → HTTP 200, text/html.

### The interface is declared for agent-driven UI  (+1)
`interfaces/a2ui` · weight 1 · **fail** · no A2UI declaration

Declare an agent-driven UI surface on https://besthumanizer.app: mark the page (or publish a manifest) as A2UI so a reviewing agent knows the controls are renderable from a declared schema rather than inferred from the DOM. Evidence: no A2UI declaration.

### Rate limits are declared in headers  (+1)
`interfaces/rate-limit-headers` · weight 1 · **fail** · no rate-limit headers

Emit RateLimit-Limit / RateLimit-Remaining / RateLimit-Reset (and Retry-After on 429) from the API on https://besthumanizer.app. Evidence: no rate-limit headers.

### Writes are retry-safe  (+1)
`interfaces/idempotency` · weight 1 · **fail** · Idempotency-Key documented

Accept an Idempotency-Key header on mutating endpoints of https://besthumanizer.app and document it, so an agent can retry without duplicating work. Evidence: Idempotency-Key documented.

### Paid access is discoverable by an agent  (+1)
`interfaces/payment-negotiation` · weight 1 · **fail** · x402 discovery HTTP 404

Make paid access discoverable on https://besthumanizer.app: return HTTP 402 with a machine-readable list of accepted payment options, or publish a machine-readable price list. Evidence: x402 discovery HTTP 404.

### A visible publish or update date  (+1)
`trust/visible-date` · weight 2 · **partial** · no visible date

Show a visible publish or last-updated date on https://besthumanizer.app/ that matches dateModified in the schema. Evidence: no visible date.

### Every page is served over HTTPS  (+1)
`trust/https` · weight 2 · **partial** · https origin, http:// answered 200

Serve https://besthumanizer.app only over HTTPS and 301 every http:// URL to https://. Evidence: https origin, http:// answered 200.

### Baseline security headers are set  (+1)
`trust/security-headers` · weight 1 · **fail** · HSTS no, nosniff no

Set Strict-Transport-Security, X-Content-Type-Options: nosniff and Referrer-Policy: strict-origin-when-cross-origin on https://besthumanizer.app. Evidence: HSTS no, nosniff no.

### Infrastructure paths are excluded from crawl budget  (+0.5)
`access/crawl-budget` · weight 1 · **partial** · no /api/ or /cdn-cgi/ exclusion

On https://besthumanizer.app exclude infrastructure from crawl budget: Disallow /api/ and /cdn-cgi/, then re-Allow /static/ and your badge/sitemap paths. Evidence: no /api/ or /cdn-cgi/ exclusion.

### Text responses are compressed  (+0.5)
`render/compression` · weight 1 · **partial** · no compression header relayed

Enable Brotli/gzip compression for HTML and JSON on https://besthumanizer.app. Evidence: no compression header relayed.

### A Markdown sitemap lists the pages in one read  (+0.5)
`discovery/sitemap-md` · weight 1 · **partial** · sitemap.md lists 0 link(s)

Publish /sitemap.md on https://besthumanizer.app: a Markdown list of the site's pages as [title](url), one line each, so an agent gets the whole map in one cheap request. Evidence: sitemap.md lists 0 link(s).

### The skill file is substantive  (+0.5)
`discovery/agents-md-depth` · weight 1 · **partial** · 0/3 of install, configuration, examples

Deepen /AGENTS.md on https://besthumanizer.app to include install steps, configuration, and at least one complete usage example. Evidence: 0/3 of install, configuration, examples.

### A wildcard agent manifest is published  (+0.5)
`interfaces/agents-json` · weight 1 · **partial** · 0 agent(s) enumerated

Publish /.well-known/agents.json on https://besthumanizer.app: a JSON document naming each agent or action the site accepts, with the URL to call and the input it expects. Evidence: 0 agent(s) enumerated.

### Per-action permissions are declared  (+0.5)
`interfaces/agent-permissions` · weight 1 · **partial** · permissions file has no scope/consent keys

Publish /.well-known/agent-permissions.json on https://besthumanizer.app mapping each action an agent may take to the scope it needs and whether a human must confirm it. Evidence: permissions file has no scope/consent keys.

### The site publishes its own bot signing keys  (+0.5)
`access/web-bot-auth` · weight 1 · **partial** · 0 signing key(s)

Publish a signing-key directory at https://besthumanizer.app/.well-known/http-message-signatures-directory so another site can verify requests this site's bots send. Evidence: 0 signing key(s).

## Paste-ready prompt for a coding agent
```text
You are fixing the agent readability of https://besthumanizer.app/ (Agent Readiness Index 51/100, grade D).
Work top to bottom. Each item states the observed evidence, the required outcome, and the check id that will be re-run to verify it.
Do not restyle the site. Do not invent facts: prices, reviews, dates and author names must come from content that already exists.

1. [ssr-home] (weight 5, +5) Homepage content is in the raw HTML
   Observed: 55 chars of text, 0 H1 in raw HTML
   Fix: Server-render the homepage of https://besthumanizer.app: ship at least 500 characters of real text and an H1 in the initial HTML response rather than after hydration (SSR/SSG, or prerender). Evidence: 55 chars of text, 0 H1 in raw HTML.
2. [jsonld] (weight 4, +4) JSON-LD structured data is present
   Observed: no JSON-LD
   Fix: Add a JSON-LD block to https://besthumanizer.app/ with @context https://schema.org and a @type that matches the page. Evidence: no JSON-LD.
3. [jsonld-valid] (weight 4, +4) Structured data validates
   Observed: 0 block(s) parse cleanly
   Fix: Fix the JSON-LD validation errors on https://besthumanizer.app/: 0 block(s) parse cleanly. Every block must parse and carry the required properties for its type.
4. [robots-valid] (weight 3, +3) robots.txt is reachable and valid
   Observed: robots.txt HTTP 200, 0 groups
   Fix: Fix robots.txt at https://besthumanizer.app/robots.txt: it must return HTTP 200 with Content-Type text/plain, contain at least one "User-agent: *" group, and contain no HTML. Current evidence: robots.txt HTTP 200, 0 groups.
5. [real-404] (weight 3, +3) Unknown URLs return a real 404
   Observed: unknown path returned 200 (soft 404)
   Fix: Return a real 404 status for unknown paths on https://besthumanizer.app instead of a 200 soft-404 page, and include links to real pages in the body. Evidence: unknown path returned 200 (soft 404).
6. [no-js-only] (weight 3, +3) Primary content does not depend on client rendering
   Observed: empty mount node detected
   Fix: Remove the JavaScript dependency for primary content on https://besthumanizer.app: the raw response must not be an empty mount node. Render on the server and hydrate. Evidence: empty mount node detected.
7. [one-h1] (weight 3, +3) Exactly one H1 states the page subject
   Observed: 0 H1: ""
   Fix: Ensure exactly one non-empty H1 on https://besthumanizer.app/ that states the page subject; demote extra H1s to H2. Evidence: 0 H1: "".
8. [canonical] (weight 3, +3) Canonical points at itself
   Observed: no canonical link
   Fix: Add a self-referencing rel=canonical to https://besthumanizer.app/ that matches the URL actually served (https, final host, no tracking params). Evidence: no canonical link.
9. [jsonld-type] (weight 3, +3) Declared type matches the page
   Observed: no declared type
   Fix: Declare the correct schema type on https://besthumanizer.app/ (no declared type) — Product for a product page, Article for editorial, Service for a service, FAQPage when the page answers questions.
10. [org-entity] (weight 3, +3) Publisher entity is declared and linked
   Observed: no Organization/Person node
   Fix: Add an Organization (or Person) JSON-LD node on https://besthumanizer.app with name, url, logo, and sameAs links to the profiles the brand actually owns. Evidence: no Organization/Person node.
11. [md-negotiation] (weight 3, +3) Content negotiation returns Markdown on request
   Observed: Accept: text/markdown → text/html
   Fix: Support Accept: text/markdown on https://besthumanizer.app: return the Markdown mirror with Content-Type text/markdown and add Vary: Accept so caches stay separate. Evidence: Accept: text/markdown → text/html.
12. [site-search] (weight 3, +3) Search works through a GET URL
   Observed: no GET search form
   Fix: Make site search on https://besthumanizer.app work over GET with a ?q= parameter that returns results in the server HTML, so an agent can construct a search URL. Evidence: no GET search form.
13. [bot-policy-deliberate] (weight 2, +2) AI bot policy is named, not inherited
   Observed: 0 named user-agent groups
   Fix: Name the AI crawlers explicitly in robots.txt for https://besthumanizer.app instead of relying on a wildcard, so each one has a deliberate policy. Evidence: 0 named user-agent groups.
14. [text-ratio] (weight 2, +2) Text-to-markup ratio is workable
   Observed: text/markup 2.8%
   Fix: Raise the text-to-markup ratio on https://besthumanizer.app/ to at least 5%: trim wrapper divs and inline styles, and put the copy in plain elements. Evidence: text/markup 2.8%.
15. [llms-conform] (weight 2, +2) llms.txt follows the published format
   Observed: H1 false, blockquote false, 0 H2, 0 links
   Fix: Restructure /llms.txt on https://besthumanizer.app to the published format: H1, blockquote summary under it, H2 sections whose bullets are [name](url) with optional ": note" suffixes, and a ## Optional section for secondary links. Evidence: H1 false, blockquote false, 0 H2, 0 links.
16. [link-headers] (weight 2, +2) HTTP Link headers point at machine resources
   Observed: no Link header
   Fix: Add Link response headers on https://besthumanizer.app pointing at its machine-readable resources: rel="describedby" to /llms.txt, rel="api-catalog" to /.well-known/api-catalog, rel="alternate" to the Markdown mirror. Evidence: no Link header.
17. [content-signal] (weight 2, +2) Content usage preferences are declared
   Observed: no Content-Signal line
   Fix: Add a Content-Signal line to robots.txt on https://besthumanizer.app, e.g. "Content-Signal: search=yes, ai-input=yes, ai-train=no", so usage terms are machine-readable. Evidence: no Content-Signal line.
18. [openapi] (weight 4, +2) An OpenAPI description is published
   Observed: openapi.json HTTP 200
   Fix: Publish /openapi.json on https://besthumanizer.app (OpenAPI 3.1) describing every public endpoint, with operation summaries and example responses. Evidence: openapi.json HTTP 200.
19. [api-catalog] (weight 2, +2) An API catalog linkset is published
   Observed: no linkset
   Fix: Publish /.well-known/api-catalog on https://besthumanizer.app as an RFC 9727 linkset pointing at the API, its OpenAPI description and its docs. Evidence: no linkset.
20. [mcp-card-fields] (weight 2, +2) The MCP card carries the fields a client needs
   Observed: 0/4 required groups in the card
   Fix: Complete the MCP server card on https://besthumanizer.app: transport, endpoint URL, auth requirement, and every tool with a declared input schema and description. Evidence: 0/4 required groups in the card.
21. [fc-friendly] (weight 2, +2) The API is easy to call from a model
   Observed: 0 described properties in the schema
   Fix: Simplify the API surface on https://besthumanizer.app for function calling: flat named parameters, enums instead of free-text where possible, and a description on every field in the OpenAPI spec. Evidence: 0 described properties in the schema.
22. [dev-portal] (weight 2, +2) A developer portal is reachable from the homepage
   Observed: no developer link
   Fix: Link the developer docs from the homepage and main navigation of https://besthumanizer.app — one hop, not three. Evidence: no developer link.
23. [agent-instruction] (weight 2, +2) The site tells an agent when to use it
   Observed: no when-to-use block
   Fix: Add a when-to-use block to https://besthumanizer.app (in llms.txt, the MCP card or the agent manifest) stating what the agent is for, what it must not do, and one worked call. Evidence: no when-to-use block.
24. [sources] (weight 2, +2) Claims are checkable
   Observed: 0 outbound source link(s)
   Fix: Add outbound links to primary sources for the factual claims on https://besthumanizer.app/ — the operator documentation, study or specification, not another summary. Evidence: 0 outbound source link(s).
25. [about-contact] (weight 2, +2) About and contact are reachable
   Observed: no about or contact link
   Fix: Publish a reachable About and Contact page on https://besthumanizer.app and link both from the footer. Evidence: no about or contact link.
26. [org-completeness] (weight 2, +2) The organization node is complete
   Observed: legalName missing
   Fix: Complete the Organization schema on https://besthumanizer.app with legalName, address, contactPoint, logo and sameAs. Evidence: legalName missing.
27. [llms-txt] (weight 3, +1.5) /llms.txt exists and is served as text
   Observed: HTTP 200, 1967 bytes, text/html
   Fix: Publish /llms.txt on https://besthumanizer.app as text/plain: a single H1, a one-line blockquote summary, then H2 sections of [name](url) links to the pages that answer the most common questions. Evidence: HTTP 200, 1967 bytes, text/html.
28. [public-api] (weight 3, +1.5) A public API answers without a human
   Observed: no API declared
   Fix: Expose at least one unauthenticated read endpoint on https://besthumanizer.app that returns the site's core facts as JSON, and document it in the OpenAPI spec. Evidence: no API declared.
29. [author] (weight 3, +1.5) A named, accountable author or publisher
   Observed: no author signal
   Fix: Show a named author or accountable publisher on https://besthumanizer.app/, with a link to an about page that establishes who they are. Evidence: no author signal.
30. [training-policy] (weight 1, +1) Training policy is explicit
   Observed: no explicit training policy
   Fix: State a training policy on https://besthumanizer.app: either name CCBot / Google-Extended / Bytespider explicitly in robots.txt, or add a Content-Signal line (search=yes, ai-input=yes, ai-train=no). Evidence: no explicit training policy.
31. [snippets-allowed] (weight 2, +1) Snippets and large image previews are allowed
   Observed: snippet directives incomplete
   Fix: On https://besthumanizer.app set "max-snippet:-1, max-image-preview:large" in the meta robots tag or X-Robots-Tag so assistants can quote the page. Evidence: snippet directives incomplete.
32. [content-type] (weight 2, +1) Correct Content-Type and charset
   Observed: content-type text/html
   Fix: Set correct Content-Type headers on https://besthumanizer.app: text/html; charset=utf-8 for pages, text/plain; charset=utf-8 for robots.txt, llms.txt and markdown mirrors. Evidence: content-type text/html.
33. [heading-order] (weight 2, +1) Headings are sequential and descriptive
   Observed: 0 skipped level(s), 0 H2(s)
   Fix: Fix the heading outline on https://besthumanizer.app/: no skipped levels (H2 to H4), and make each H2 describe its section. Evidence: 0 skipped level(s), 0 H2(s).
34. [landmarks] (weight 2, +1) Content is separated by landmarks
   Observed: no main/article element
   Fix: Wrap the primary copy of https://besthumanizer.app/ in <main> or <article> and keep nav/header/footer outside it, so a parser can isolate the content. Evidence: no main/article element.
35. [dates] (weight 2, +1) Published and modified dates are declared
   Observed: no dates in schema
   Fix: Add datePublished and dateModified to the schema on https://besthumanizer.app/, kept in sync with the visible date. Evidence: no dates in schema.
36. [breadcrumb] (weight 1, +1) BreadcrumbList declares the page position
   Observed: no BreadcrumbList
   Fix: Add a BreadcrumbList to https://besthumanizer.app/ whose items match the visible breadcrumb. Evidence: no BreadcrumbList.
37. [sitemap-lastmod] (weight 2, +1) Sitemap entries carry real lastmod
   Observed: no lastmod
   Fix: Add truthful <lastmod> values to the sitemap on https://besthumanizer.app from real content timestamps. Evidence: no lastmod.
38. [md-mirror] (weight 2, +1) A Markdown mirror of the page exists
   Observed: https://besthumanizer.app.md → HTTP 200
   Fix: Publish a Markdown mirror for each page on https://besthumanizer.app: serve /<path>.md with Content-Type text/markdown and the same content as the HTML. Evidence: https://besthumanizer.app.md → HTTP 200.
39. [md-alternate] (weight 1, +1) HTML advertises its Markdown twin
   Observed: no <link rel=alternate type=text/markdown>
   Fix: Add <link rel="alternate" type="text/markdown" href="/<path>.md"> to the head of https://besthumanizer.app/. Evidence: no <link rel=alternate type=text/markdown>.
40. [dns-aid] (weight 1, +1) DNS advertises agent endpoints
   Observed: no _agents TXT record
   Fix: Publish a DNS discovery record for https://besthumanizer.app (a TXT record listing the agent endpoints the site exposes) so an agent learns the surface before fetching a page. Evidence: no _agents TXT record.
41. [describedby] (weight 1, +1) The page declares the index that covers it
   Observed: rel=describedby to the index
   Fix: Add a rel="describedby" link to the covering /llms.txt from every page on https://besthumanizer.app so an agent can widen from one page to the index. Evidence: rel=describedby to the index.
42. [webmcp] (weight 1, +1) Site actions are exposed to in-browser agents
   Observed: no WebMCP registration
   Fix: Register the site's real actions (search, filter, add to cart) as WebMCP tools on https://besthumanizer.app so a browser agent can call them without guessing at the DOM. Evidence: no WebMCP registration.
43. [nlweb-ask] (weight 1, +1) A natural-language query endpoint answers
   Observed: /ask → HTTP 200, text/html
   Fix: Expose a natural-language query endpoint at https://besthumanizer.app/ask that accepts ?query= and returns JSON (answer plus result URLs), so an agent can ask the site directly instead of crawling it. Evidence: /ask → HTTP 200, text/html.
44. [a2ui] (weight 1, +1) The interface is declared for agent-driven UI
   Observed: no A2UI declaration
   Fix: Declare an agent-driven UI surface on https://besthumanizer.app: mark the page (or publish a manifest) as A2UI so a reviewing agent knows the controls are renderable from a declared schema rather than inferred from the DOM. Evidence: no A2UI declaration.
45. [rate-limit-headers] (weight 1, +1) Rate limits are declared in headers
   Observed: no rate-limit headers
   Fix: Emit RateLimit-Limit / RateLimit-Remaining / RateLimit-Reset (and Retry-After on 429) from the API on https://besthumanizer.app. Evidence: no rate-limit headers.
46. [idempotency] (weight 1, +1) Writes are retry-safe
   Observed: Idempotency-Key documented
   Fix: Accept an Idempotency-Key header on mutating endpoints of https://besthumanizer.app and document it, so an agent can retry without duplicating work. Evidence: Idempotency-Key documented.
47. [payment-negotiation] (weight 1, +1) Paid access is discoverable by an agent
   Observed: x402 discovery HTTP 404
   Fix: Make paid access discoverable on https://besthumanizer.app: return HTTP 402 with a machine-readable list of accepted payment options, or publish a machine-readable price list. Evidence: x402 discovery HTTP 404.
48. [visible-date] (weight 2, +1) A visible publish or update date
   Observed: no visible date
   Fix: Show a visible publish or last-updated date on https://besthumanizer.app/ that matches dateModified in the schema. Evidence: no visible date.
49. [https] (weight 2, +1) Every page is served over HTTPS
   Observed: https origin, http:// answered 200
   Fix: Serve https://besthumanizer.app only over HTTPS and 301 every http:// URL to https://. Evidence: https origin, http:// answered 200.
50. [security-headers] (weight 1, +1) Baseline security headers are set
   Observed: HSTS no, nosniff no
   Fix: Set Strict-Transport-Security, X-Content-Type-Options: nosniff and Referrer-Policy: strict-origin-when-cross-origin on https://besthumanizer.app. Evidence: HSTS no, nosniff no.
51. [crawl-budget] (weight 1, +0.5) Infrastructure paths are excluded from crawl budget
   Observed: no /api/ or /cdn-cgi/ exclusion
   Fix: On https://besthumanizer.app exclude infrastructure from crawl budget: Disallow /api/ and /cdn-cgi/, then re-Allow /static/ and your badge/sitemap paths. Evidence: no /api/ or /cdn-cgi/ exclusion.
52. [compression] (weight 1, +0.5) Text responses are compressed
   Observed: no compression header relayed
   Fix: Enable Brotli/gzip compression for HTML and JSON on https://besthumanizer.app. Evidence: no compression header relayed.
53. [sitemap-md] (weight 1, +0.5) A Markdown sitemap lists the pages in one read
   Observed: sitemap.md lists 0 link(s)
   Fix: Publish /sitemap.md on https://besthumanizer.app: a Markdown list of the site's pages as [title](url), one line each, so an agent gets the whole map in one cheap request. Evidence: sitemap.md lists 0 link(s).
54. [agents-md-depth] (weight 1, +0.5) The skill file is substantive
   Observed: 0/3 of install, configuration, examples
   Fix: Deepen /AGENTS.md on https://besthumanizer.app to include install steps, configuration, and at least one complete usage example. Evidence: 0/3 of install, configuration, examples.
55. [agents-json] (weight 1, +0.5) A wildcard agent manifest is published
   Observed: 0 agent(s) enumerated
   Fix: Publish /.well-known/agents.json on https://besthumanizer.app: a JSON document naming each agent or action the site accepts, with the URL to call and the input it expects. Evidence: 0 agent(s) enumerated.
56. [agent-permissions] (weight 1, +0.5) Per-action permissions are declared
   Observed: permissions file has no scope/consent keys
   Fix: Publish /.well-known/agent-permissions.json on https://besthumanizer.app mapping each action an agent may take to the scope it needs and whether a human must confirm it. Evidence: permissions file has no scope/consent keys.
57. [web-bot-auth] (weight 1, +0.5) The site publishes its own bot signing keys
   Observed: 0 signing key(s)
   Fix: Publish a signing-key directory at https://besthumanizer.app/.well-known/http-message-signatures-directory so another site can verify requests this site's bots send. Evidence: 0 signing key(s).
```

---

Cached report for besthumanizer.app · TTL 6 hours · JSON at /report/besthumanizer.app.json
