Agent identity · Proof
Agent identity, two ways
Two ways to hold an agent identity record. On one side, a record that is public, signed and recomputable: every figure below is computed from the platform's own records at read time and carries the URL a stranger re-runs to get the same number. On the other, the announced-framework pattern: claims published as announcements, with the public record a reader can check stated beside each one. This page prints evidence, not verdicts; it names no competitor.
The recomputable record
| Figure | Value | Counting rule | |
|---|---|---|---|
| Ledger blocks | 6054 | Blocks in the append-only ledger. Every block commits to the previous block's hash, so the newest block commits to the whole chain beneath it. | recompute |
| Sealed ledger entries | 33305 | Entries sealed across all blocks. Any entry can be recomputed from its public proof; the chain verifies end to end from genesis. | recompute |
| Bitcoin anchoring | {"confirmed_through_block":6024,"bitcoin_block_height":975400} | The highest ledger block whose OpenTimestamps calendar proof has been confirmed in a Bitcoin block. Confirmations lag submissions; the submitted frontier is on the recompute link. | recompute |
| Verifications by independent parties | 12537 | one row per call to a verification surface: receipt checks (POST /v1/receipts/verify, GET /v1/receipts/:id), evidence reads (GET /v1/evidence-payloads/:id or /raw), ledger verification (GET /v1/ledger/verify and the ledger_verify tool), ledger entry proofs (GET /v1/ledger/entries/:seq and the ledger_entry tool) and reviewer opens of a shared signed statement. Independent = the asker is not the record's creator; the ledger's own records count anyone else as independent. Sandbox and canary accounts, the service's own probes and accounts the operator marked internal never count as independent. (counted since 2026-11-06) | recompute |
| Verifications in total | 12537 | one row per call to a verification surface: receipt checks (POST /v1/receipts/verify, GET /v1/receipts/:id), evidence reads (GET /v1/evidence-payloads/:id or /raw), ledger verification (GET /v1/ledger/verify and the ledger_verify tool), ledger entry proofs (GET /v1/ledger/entries/:seq and the ledger_entry tool) and reviewer opens of a shared signed statement. Independent = the asker is not the record's creator; the ledger's own records count anyone else as independent. Sandbox and canary accounts, the service's own probes and accounts the operator marked internal never count as independent. (counted since 2026-11-06) | recompute |
| Public agent records | 12 | Public agent profiles on live accounts — the same population the status feed counts. | recompute |
| Agent registrations | 18 | Registration records on live accounts, all-time, in every current status. The status feed breaks the same population down by status. | recompute |
| Agent identity levels issued | [{"level":"L0","name":"Declared"},{"level":"L1","name":"Key-bound"},{"level":"L2","name":"Operator-verified"}] | The levels the published specification defines as issuable and that this service issues today. Levels defined but not issued are listed separately, never implied as held. | recompute |
| Agent identity levels defined, not issued | [{"level":"L3","name":"Operator-identified"},{"level":"L4","name":"Runtime-attested"},{"level":"L5","name":"Bonded"}] | Levels the published specification defines that this service does not issue. Printed so the issued list cannot be mistaken for the whole ladder. | recompute |
| Agents by level | {"L0":6,"L1":6,"L2":0,"L3":0,"L4":0,"L5":0} | Public agents on live accounts, grouped by the level computed from their verified facts at read time — the status feed's own distribution. | recompute |
| Credential formats | [{"type":"kya+jwt","alg":"EdDSA","ttl_seconds":3600,"holder_binding":"cnf.jkt (RFC 7638 thumbprint of the agent's Ed25519 key)"},{"type":"RightsholdKYACredential","shape":"W3C VC 2.0 data model, signed with Ed25519 over canonical JSON","ttl_days":7}] | The credential documents and tokens the identity endpoints issue and verify, named in the published configuration. | recompute |
| Published identity specification | {"spec":"rs-kya/0.1","license":"CC-BY-4.0","url":"https://www.rightshold.com/kya/spec"} | The specification the endpoints implement, published under an open license so an independent implementation can check conformance. | recompute |
| Status and revocation feed | {"registrations_by_status":{"valid":18,"expired":0,"suspended":0,"revoked":0},"agents_by_status":{"active":12,"unregistered":0,"expired":0,"suspended":0,"revoked":0},"credential_revocations":0} | The signed status feed's own current counts, recomputed in the same session as this page. | recompute |
| Pre-flight evaluations sealed | 56 | Ledger entries of type preflight.checked: one seal per answered pre-flight evaluation, each carrying the query's SHA-256 and the ledger head it ran against. | recompute |
| Witnesses | {"registered":{"total":2,"affiliated":2,"unaffiliated_unconfirmed":0,"confirmed_unaffiliated":0}} | Witnesses registered on the ledger, counted with affiliation computed the way the witness health endpoint computes it (operator keys and domains are affiliated; a declaration aged past its challenge window with no open challenge is confirmed unaffiliated). Finality requires confirmed unaffiliated witnesses; until the quorum is met the finality state below reads not reached, and this page says so. | recompute |
| Witness finality | {"state":"not reached","confirmed_unaffiliated":0,"quorum_required":2} | Finality is reached only when the required number of unaffiliated witnesses have cosigned. The count and the requirement are both printed; while the count is below the requirement the state is not reached. | recompute |
The announced pattern
| Area | Announced claim | Public record |
|---|---|---|
| Identity issuance | A framework announcing that agent identities will be issued, linked to authenticated owners. | No public registry, issued count, or per-agent lookup is published, so nothing about issuance can be recomputed by a reader. |
| Credential format | A framework announcing credentials on an established verifiable-credential standard. | No issuer keys, credential schema, or sample credential is published, so no credential can be checked against the announcement. |
| Delegated permissions | A framework describing permission dimensions for agents acting for owners. | No grant records and no permission-check endpoint are published, so a claimed permission cannot be tested by the party being acted on. |
| Status and revocation | A framework stating that permissions and credentials can be revoked. | No public status list or revocation feed is published, so a revocation cannot be observed by anyone but the operator. |
| Activity records | A framework stating that agent activity is recorded in signed records held by the service. | The records are held by the operator and are not published for recomputation, so their completeness rests on the operator's statement. |
| Pilot | A pilot announced with participants to be confirmed. | No participant list, pilot dataset, or results are published, so the pilot's operation cannot be examined from outside. |
Figures are computed at read time, in the same session, from the records each counting rule names. Because the underlying records grow, two reads at different times can differ; a figure is checkable by re-running its recompute link, and the signed status feed can be verified against the issuer key it names.
Rightshold publishes records and verification, never rankings of named parties. This comparison states the two public records; it does not grade either.
Machine form: GET /v1/agent-identity · the signed status feed: /kya-status · Markdown
