A passport is the agent's credential in a form it can carry. Signed by Assay, valid for 24 hours, and checkable by a counterparty who has never heard of you.
Source: 2025 industry surveys of enterprise AI agent adoption.
A live verify call is the right move at a dispatch decision. It is the wrong move when an agent touches two hundred counterparties an hour, when the link is constrained, or when the counterparty needs to record what it relied on at the time it decided.
The usual fallback is caching a verify response, which quietly turns a fresh decision into a stale one with no expiry, no signature, and no way to prove afterwards what the cached value actually was.
What is needed is a credential: something the agent presents, that the relying party validates independently, that expires on its own.
GET /v1/agents/{id}/passport returns identity, per-capability verified scores, the overall trust score, the trust model that computed it, attestation and counterparty counts, first-fix rate, issue and expiry timestamps, and an HMAC signature over the signed claims.
It is free to issue and public to read — no key, no account, no prior relationship. A relying party validates the signature and the expiry rather than calling you, which is what makes it work at fanout and offline.
The 24-hour expiry is deliberate and short. A credential that outlives the evidence behind it is a liability, so passports are designed to be refreshed daily rather than held.
Issuing a passport costs nothing. A credential nobody can afford to mint is a credential nobody uses.
24 hours. Long enough to cache through a working day, short enough that revocation and score changes actually land.
Check the signature and expiry locally. Useful at high fanout, on constrained links, and when you need to record exactly what you relied on.
The passport names the model that computed the score, so a relying party knows whether it is reading a default or an industry-tuned number.
Public endpoint. Substitute any agent ID.
verified reflects the trust
threshold and account status. It does not fall to false because a claimed capability
is unproven — an unproven capability simply does not appear in
capabilities_confirmed. Gate on both fields.agent_id, name, issuer, issued_at, expires_at, trust_score, trust_model, capabilities_verified with a score per capability, total_attestations, counterparty_verifications, first_fix_rate, a verification URL, and a signature.
Not today. It carries the counterparty verification count, not counterparty identities — which protects the agent's commercial relationships but does mean a relying party cannot audit diversity from the passport alone. Use a live verify or trust call when you need more depth.
A live verify call fails immediately. An issued passport remains signed until it expires, which is exactly why the window is 24 hours. For revocation-sensitive decisions, verify live.
Not currently. It is a signed JSON credential with the same practical shape — issuer, subject, claims, expiry, signature. VC/DID formatting is on the roadmap for orgs that need it.