The readiness rubric

Readiness is measured, not claimed. A daily probe runs the checks below against every listing; each line is worth the points shown, and a line the probe could not see counts for nothing on either side of the slash. Definition tokens are counted with o200k_base over the JSON of tools/list, minus whitespace. A score change is a rubric version: mcp-2026-09-11.1, skill-2026-09-11.1.

MCP servers over streamable-http and sse mcp-2026-09-11.1

Reachable

20 points
  • answers at all: discovery, initialize or a well-formed 40110 pts
  • https, with no redirect chain5 pts
  • p50 under 500 ms5 pts

Speaks the protocol

25 points
  • `server/discover` answers (15), or `initialize` answers (8)15 pts
  • revision 2026-07-285 pts
  • deterministic tool order across two `tools/list` calls5 pts

Cheap to hold

20 points
  • definition tokens under 5,000 (12, sliding to 0 at 25,000)12 pts
  • `ttlMs` and `cacheScope` present on the result8 pts

Honest

20 points
  • annotation coverage at least 90%10 pts
  • `outputSchema` coverage at least 50%5 pts
  • a 401 carrying RFC 9728 metadata, or no auth needed5 pts

Trustworthy

15 points
  • namespace proven: a verified claim, or an import from the registry5 pts
  • repository public and pushed within 12 months5 pts
  • injection scan clean5 pts

Agent Skills skill-2026-09-11.1

Reachable

20 points
  • SKILL.md fetched15 pts
  • repository public5 pts

Speaks the format

25 points
  • frontmatter valid, with only portable keys15 pts
  • name matches the folder5 pts
  • description under 1,024 characters5 pts

Cheap to hold

20 points
  • body under 5,000 tokens (12, sliding to 0 at 15,000)12 pts
  • description under 100 tokens8 pts

Honest

20 points
  • says when to use it10 pts
  • licence declared5 pts
  • allowed tools declared5 pts

Trustworthy

15 points
  • pushed within 12 months5 pts
  • not archived5 pts
  • injection scan clean5 pts

What one probe does

Every night, against every listing, in the order to understand them in. A step that cannot run — no door, no domain, no repository — records nothing rather than a failure.

  1. 1Ask the server to describe itself over the discovery method of the 2026-07-28 revision.
  2. 2Fall back to the initialize handshake when discovery answers nothing, and read the protocol revision from it.
  3. 3Stop at a 401 and read the WWW-Authenticate header, because a server that asks for a token is alive and honest about it.
  4. 4Read tools/list and count the tools, the required arguments and the tokens the definitions occupy.
  5. 5Call one tool that declares readOnlyHint with deliberately bad arguments, and judge how legible the error is.
  6. 6Canonicalise tools/list and hash it, so a change to the manifest can be counted later as churn.
  7. 7Scan the tool descriptions for the phrases a prompt injection is written in.
  8. 8Look on the publisher's domain for /llms.txt and for a markdown door.
  9. 9Ask GitHub for the repository's status, its last push and whether it is archived.
  10. 10Record the round trip in milliseconds and whether the server answered at all.