Assay / Solutions / Agent passports
Problem · Portable credentials

Agent Passports — Portable Verified Credentials

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.


The problem

Verification does not scale to every interaction

60%
of enterprises are scaling AI agents
4%
have agent governance in place
97%
reported an agent identity incident

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.


The solution

A signed credential the agent carries

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.

free to issue24-hour expiryHMAC signaturepublic readno key requiredoffline validation

Why it holds up

What you actually get

Free, because adoption is the point

Issuing a passport costs nothing. A credential nobody can afford to mint is a credential nobody uses.

Short-lived on purpose

24 hours. Long enough to cache through a working day, short enough that revocation and score changes actually land.

Validate without a round trip

Check the signature and expiry locally. Useful at high fanout, on constrained links, and when you need to record exactly what you relied on.

Carries the trust model

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.


Live API

Pull a live passport right now

Public endpoint. Substitute any agent ID.

# Public, free, no key. Anyone holding the agent ID can check the credential. # Substitute an agent ID you hold — registration returns one. curl -s https://assay.foundrynet.io/v1/agents/AGENT_ID/passport { "agent_id": "agt_78bd8467114df323548630f50d190536", "name": "maintenance_dispatch_agent", "issuer": "assay.foundrynet.io", "issued_at": "2026-07-26T06:18:38Z", "expires_at": "2026-07-27T06:18:38Z", "trust_score": 0.6609, "trust_model": "manufacturing", "capabilities_verified": { "crane_maintenance": 0.7838, "emergency_dispatch": 0.6364, "cnc_repair": 0.5789 }, "total_attestations": 10, "counterparty_verifications": 10, "first_fix_rate": 1.0, "signature": "48a69f325ea94d45933bf795dc17ce1d…" }
Read the gate carefully. 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.

Questions

Frequently asked

What is inside a passport?

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.

Does it list who verified the work?

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.

What if the agent is revoked mid-window?

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.

Is it a W3C Verifiable Credential?

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.


Related

Keep reading