Directory Verifier

Check a Web Bot Auth key directory against the draft, rule by rule, with the fix for each.

Input

🔒 Nothing is storedThe domain and the report are not saved.

Enter the domain from your Signature-Agent header. Its key directory file is fetched and checked rule by rule.

Terminal

Console ready. Execute a command to see output...

About Directory Verifier

What a key directory is

An agent that signs its requests with Web Bot Auth publishes its public keys in one file on its own domain, at /.well-known/http-message-signatures-directory. A site that receives a signed request reads the address from the Signature-Agent header, fetches that file, finds the key and checks the signature against it. If the file is wrong, every signature that points at it is worth nothing, and the operator usually finds out only when requests start being refused.

This page checks the file itself. No signed request is needed, only the domain. To check a request your agent actually sent, use the Agent Verifier.

What is checked

  • How the file is served. HTTPS, a 200 answer with no redirect, the media type application/http-message-signatures-directory+json, a size within limits, and caching headers.
  • The keys. A real key set, usable Ed25519 keys, a kid equal to each key's thumbprint, no duplicates, no private key material, no test key from RFC 9421, and no expired key left in place.
  • The proof that the file is yours. Whether the response is signed, with the directory tag, by every key it lists, over a content-digest of the body, and for at least as long as it asks to be cached.

How to read the result

Every check prints one line. A red line is a violation: a broken MUST of the draft, or private key material in the file. A yellow line is a deviation: a departure from a SHOULD, an entry this check cannot use, or a threshold of this check where the draft sets none. The data below the report names the keyword or the threshold behind each finding. Under each finding is the change that clears it. There is no grade: the standard has none, and a letter does not say what to fix.

The last line counts what passed, what deviates and what violates. Below it, the same report as data, with each key and what its own signature proved.

Faults worth checking first

  • A kid that is a short label rather than the key thumbprint. The draft requires the thumbprint, and a verifier that looks keys up by it will not find yours.
  • A response signed without covering the body. That proves the server holds a key and says nothing about the list of keys beside it.
  • A proof that expires long before the cached copy does, so verifiers hold a key set whose proof has already lapsed.
  • The file served as plain application/json, or behind a redirect between the apex and www. A verifier following the draft does not follow redirects, so the host your agents name has to answer directly.

The implementation guide shows how to publish a directory that passes every line, and how to sign its response.

Further reading

The standards behind this

  • RFC 9421 HTTP Message Signatures. The mechanism everything here is built on.
  • RFC 7638 JWK Thumbprint. How a key identifier is derived from the key itself.
  • RFC 9651 Structured Field Values. The grammar the Signature-Agent header follows.

For machines

  • API catalog Every API here, each with its description and its documentation. Standard address, RFC 9727.
  • openapi.json The response contract, machine-readable. The same source the reference page is built from.
  • MCP server card What an MCP registry reads about this server: address, transport, and the tool it exposes.
  • packet.guru key directory The public keys this site signs its own outbound requests with. A working example of the file you publish.
  • packet.guru agent card What the fetcher on this site promises about itself, including the exact User-Agent it sends.