Paste a deal id — or just the first few characters of one — and read the policy it names: what it is allowed to move, what has to be true before it may, and whether the body really hashes to that id. Read-only, and nothing here can sign anything.
A deal id is a hash of the deal, not an address. It says exactly what the document is — change one character of the body and the id no longer matches — but it says nothing about where a copy lives. That is the whole point: a deal is verifiable wherever you got it, so it needs no trusted registry. It is also the catch: from an id alone, nothing tells you who published it.
So this page tries, in order:
<base>/deals/index.json
listing every deal it has, and <base>/deals/<id>.json for the body —
the same files a signer vendors with
kea/tools/catalogue.cjs vendor --from <base>. Known here:
.Every answer is checked. Whatever the source, the body is re-hashed here in your
browser and compared to the id — JCS (RFC 8785) for a v2 policy, PHP json_encode
form for a v1 template. A verified badge means this really is the
deal that id names. does not match means the copy is wrong or
altered, and you should not trust it whoever served it.
What is not here. There is no database of v2 deals, and deliberately so — a registry
would be a thing to trust, and the hash already does that job. A quiet deal that nobody
publishes and nobody is raising is not findable from its id, by design. If you want a deal to
be findable, publish it: a directory of deals/ on any web host is the entire
protocol.
v1 deals. The 2022–2026 archive has its own browser at /legacy/deals/ and its own lookup, and is being retired. This page is v2-first: it will read and verify a v1 template if a publisher serves one, but it does not search the archive. If nothing is found here, that is the other place to look.
Part of the signer tooling: who is on duty and what is in the pool · turn a v1 template into its v2 policy · design notes