knowngood.sh
menu

How we grade

rubric v1.2 · 57,266 sites currently listed

A site is listed when at least two of its agent-facing signals are present and at least one of them is strong: an MCP endpoint that returns its tool list, markdown served on request or at a markdown URL, or an API catalogue or MCP server card at its well-known path. An llms.txt counts as a second signal and never lists a site by itself. Placement in the index cannot be bought. Behavioural verification, an agent completing the action end to end, is a separate test and not part of the listing rule. What it is and whether it can be bought is stated in one place.

How a site is listed

Every probed site is graded into one of 4 tiers from the signals below. Only Confirmed is listed; every listed site is Confirmed.

Confirmed CONFIRMED
at least one strong signal and at least two signals in all
listed
Probable PROBABLE
one strong signal and nothing else, or at least two medium signals and no strong one
not listed
Declared only DECLARED_ONLY
no strong signal and at most one medium signal
not listed
Uncertain UNCERTAIN
a signal the probe could not measure would decide the tier: the grade is worked out both ways, counting it as present and as absent, and the two answers differ
not listed

The signals

9 strong and 3 medium. A signal the probe could not measure is never counted as absent: the tier is worked out both ways.

Markdown on request
the page is fetched with Accept: text/markdown and the body is markdown that differs from the HTML
strong
Markdown at a markdown URL
/page.md answers with markdown
strong
MCP endpoint answers tools/list
an MCP endpoint, found by any route (server card, /.well-known/ucp, a storefront fingerprint, llms.txt), returns its tool list without credentials
strong
API catalog
/.well-known/api-catalog answers 200 with JSON
strong
MCP server card
/.well-known/mcp/server-card.json answers 200 with JSON
strong
Agent Skills index
/.well-known/agent-skills/index.json answers 200 with JSON
strong
OAuth authorization server metadata
/.well-known/oauth-authorization-server answers 200 with JSON; it counts only beside an MCP or A2A endpoint that answers
strong
OAuth protected resource metadata
/.well-known/oauth-protected-resource answers 200 with JSON; it counts only beside an MCP or A2A endpoint that answers
strong
HTTP message signatures directory
/.well-known/http-message-signatures-directory answers 200 with JSON
strong
llms.txt
/llms.txt answers with a list of the site's pages
medium
AI agents named in robots.txt
robots.txt names AI agents and is not a template; the template half is not measured in this pass, so this signal is recorded as could not ask
medium
Link headers
the response carries Link headers beyond boilerplate
medium

The five checks on a report page

A report page scores 5 of the signals as its checks and shows the MCP server card and the other well-known agent files as lines beside them; its “N of 5” is a summary, not the listing rule. Each is fetched live. A check passes only on a real response, never on a claim in a file. Since v1.1, markdown negotiation passes only when the body is markdown and differs from the HTML response — a text/markdown header on an HTML page does not count. Since v1.2, an MCP server counts when it returns its tool list (tools/list) without credentials, whether we found it through a server card or through the site’s /.well-known/ucp profile; one that asks for credentials is recorded as could not ask, not as a pass. OAuth discovery documents count only beside a server that answers — a sign-in document with nothing behind it is not a capability.

Markdown negotiation
Accept: text/markdown
9,176 pass
llms.txt
/llms.txt
53,524 pass
API catalog
RFC 9727
6,652 pass
MCP endpoint answers tools/list
initialize → tools/list, no credentials
48,819 pass

What the numbers do not mean

Negotiation. 4,121 of the 9,176 sites that negotiate markdown are documentation sites on Mintlify, which serves markdown by default; each such report says via mintlify. A platform default is one decision by the platform, recorded as such.

MCP. MCP is counted only where the server returned its tool list without credentials: 48,819 of the 49,609 sites we tested do. 790 of the 49,609 have a card that points at nothing; they are not counted as answering servers. A valid card still counts toward a listing, as the rule above says.

Platform-supplied. A server is platform-supplied when its tool set is served by at least 200 unrelated domains, when it sits off the site’s own domain, or when it was found through the Shopify storefront fingerprint. 46,427 of the 48,819 answering servers are platform-supplied. 4,484 are Mintlify docs searches. 309 are Teachify course catalogues. 2,392 of the 48,819 are not platform-supplied and are listed at /mcp-servers.

Units. Counts here are of sites (hostnames), not of companies.

Excluded. 25 sites pass the probes but are parked pages or generated content; they are excluded from the index and never returned in results.

llms.txt. No model provider has committed to reading llms.txt in production. We test for it because it is cheap and coherent with the rest of the rubric, not because it is proven to drive citations.

What is not in the results

Gambling and pharmacy sites are listed on the same terms as everything else when they are real businesses under a real jurisdiction; category finds candidates, hostname and country decide. Flags are reviewed by hand and re-checked every crawl. To dispute one: hello@knowngood.sh with the host.

abuse · excluded
pirated streaming, ROM/APK downloads, rogue pharmacies, gambling affiliates and login mirrors, phishing-shaped sites
235
adult · excluded by default
escort and adult directories; the pages still exist and are probed honestly
11
farm / parked · excluded
generated content networks and domainer placeholders that pass every probe
25
platform_subdomain / platform_preview · listed, ranked last, not indexed
trial and preview deployments on a platform's free subdomain (*.mintlify.app etc.); the same product on its own domain ranks normally
401

Changelog

Every row here is a change to the index itself, or to what its sitemap offers search engines, dated by the day it changed rather than the day the row was written, and labelled with the rubric version in force. Releases of the API and MCP server are logged by software version on /api. What these roll up into is the census — a monthly measurement of the agent-ready web, with the population and the date beside every figure.

v1.2 · 2026-10-14The old numbered pages of the 11 listings that split by the first letter of the domain, and of the directory, now redirect: any ?page=N from 2 up answers 301 to the listing’s own address, which carries its letter index. 5,089 addresses that answered as pages are now redirects; ?page=1 and the letter pages are unchanged.
v1.2 · 2026-10-14Report-page descriptions now name the checks that passed; they did not before.
v1.2 · 2026-10-13Report pages now state whether the MCP endpoint that answered is platform-supplied, and the host it is served from; get_site_report carries the same as platform_supplied. The rubric v1.2 row below says each report says so; until this change, no report page did.
v1.2 · 2026-10-08Report pages now show the MCP endpoint that answered tools/list, found by any route, and the MCP server card on separate lines, both as the grade recorded them, with a line for the other agent files at well-known paths. Until this change the fifth check, “MCP server card answers”, showed a pass for 42,536 listed sites whose card the grade did not find (their endpoint was found by another route), a pass for 308 with no endpoint answering, and a fail for 3,101 whose card the grade counts toward their listing. The fifth check now counts only an endpoint that answered, so those 308 reports pass one check fewer and 97 of them leave the sitemap. This page said a card that points at nothing is not counted; that is true of the MCP count and not of the listing rule, which counts a valid card as a strong signal. The rule is now stated in full above.
v1.2 · 2026-10-07What is listed did not change; what the sitemap offers did. Report pages are now submitted strongest first, 10,000 of the 39,075 we would submit, and the next file of them is listed as Google’s crawl of this site recovers (the rule). Long listings split by the first letter of the domain, so every page bar shows every page.
v1.2 · 2026-10-07Report pages for sites that declined the probe, and for sites removed from the index, are no longer served; they answer as unknown hosts.
v1.2 · 2026-10-04The index was re-probed in full under rubric v1.2 and reloaded: 14,351 → 57,266 sites listed. An MCP server now counts when it returns its tool list without credentials, whether it was found by card or by /.well-known/ucp, and OAuth documents count only beside a server that answers. 46,427 listed sites carry a capability their platform supplies to its sites, and each report says so. 1,382 previously listed sites did not re-qualify and leave the index, flagged unconfirmed, not deleted; 18 now refuse and are removed. 182 sites carrying placed gambling-affiliate posts are excluded as abuse. Markdown negotiation: 10,877 → 9,176. 792 sites had passed on the header alone and were re-tested under the v1.1 rule; 689 fail it. 1,035 negotiating sites left the index. “Sites that built their own MCP server” is now “not platform-supplied”: 632 → 2,392.
v1.1 · 2026-09-22The API’s markdown_negotiation field and the has_md filter now use the strict re-grade the report pages have used since 25 August. 98 listed sites that passed on headers alone no longer report it; the figures on this page are unchanged.
v1.1 · 2026-09-01Five internal test records were removed from the index.
v1.1 · 2026-08-3023 listed ecommerce sites now record an MCP endpoint discovered through their /.well-known/ucp profile, which answers tools/list. MCP answering 48,796 → 48,819, the re-graded total 49,590 → 49,609, cards pointing at nothing 794 → 790; Sites that built their own is unchanged at 632, and 23 report pages updated their “N of 5”.
v1.1 · 2026-08-2936 listed sites that switched robots.txt to ai-input=no since the 23 Aug probe were removed the same day the change was read — explicit refusal excludes absolutely, reversibly. Listed count falls accordingly.
v1.1 · 2026-08-26378 www/apex host pairs examined; 360 collapsed to one report each. The host's own redirect or declared canonical decides; 18 pairs that express no preference keep both pages. Alias pages 301 to the canonical and leave the sitemap; the listed count falls accordingly.
v1.1 · 2026-08-26MCP re-graded strictly on 8,947 of 8,957 card holders: card → initialize → tools/list. 2,904 cards point at a server that did not answer and no longer count; tool names recorded and searchable; platform attribution (Mintlify, Teachify).
v1.1 · 2026-08-25Markdown negotiation re-graded strictly on 10,579 header passes: markdown content-type, non-HTML body, body differs from the HTML response. 10,444 passed; 135 header-only passes removed. Platform attribution and parked/farm exclusion added.
Rubric change: both v1 and v1.1 are scored so the trend stays comparable.
v1.0 · 2026-08Initial rubric. Five probe checks; tiers defined.

Method: about the index.
Figures generated 16 Oct 2026 12:53 UTC