01
Issue
Register your agent with one POST. You get back a signed passport — a standard ES256 JWT only we could have signed.
POST /v1/agents
{ "name": "my-agent" }
Stripe Atlas for AI agents
Issue a signed passport for your agent in one API call. Anyone can verify it. Every check is logged.
No signup. No API key. Thirty seconds.
$ curl -X POST https://api.agentsmufye.com/v1/agents \
-d '{"name":"my-agent"}'
{ "agent_id": "ag_…", "passport": "eyJ…" }
$ curl -X POST https://api.agentsmufye.com/v1/verify \
-d '{"passport":"eyJ…"}'
{ "valid": true, "agent_id": "ag_…" }
One POST registers your agent and returns a signed passport.
Anyone checks the passport with one call. valid: true.
Every issuance and verification is timestamped and logged.
01
Register your agent with one POST. You get back a signed passport — a standard ES256 JWT only we could have signed.
POST /v1/agents
{ "name": "my-agent" }
02
Anyone — a user, another agent, an auditor — checks the passport with one call and gets a straight answer.
POST /v1/verify
{ "passport": "eyJ…" }
03
Every issuance and verification is written to an append-only log with a timestamp. The record you'd hand an auditor.
{ "event": "passport.verified",
"agent_id": "ag_…",
"at": "2026-09-26T…" }
This calls the real API. No signup, no key — issue a passport and verify it right here.
Your passport will appear here.
Uses the passport you just issued. Checks the signature, expiry, and revocation status.
The verdict will appear here.
We changed one character in the passport before verifying. Watch the signature check fail — that's the cryptography doing its job.
A live illustration of what the audit log records for your actions above. Every issue and verification also writes a real timestamped entry server-side.
Issue or verify a passport above and the entries appear here.
An agent books, buys, and messages on your behalf — and the other side takes its word for it. Smufye Agent gives every agent a verifiable identity, so counterparties can check before they trust.
Regulators are asking the same question. The EU AI Act requires logging for high-risk AI systems — those obligations phase in through 2027–2028. The audit trail keeps that log for you automatically, so the record exists before it's required.
Questions developers actually ask
OAuth proves a user approved access; a passport proves which agent acted — to anyone, with no login flow. API keys are shared secrets you manage and rotate; passports are signed credentials anyone can verify.
We do, on Cloudflare's edge. Your agents never touch private keys — they just carry their passport, and verification needs only our published public key.
Passports are standard ES256 JWTs. Cache our public key once and verify signatures anywhere — including offline; revocation checks call the API, and a passport that can't be checked doesn't pass.
Revoke its passport with one call. Every later verification fails with reason revoked, and the revocation lands in your audit log.
The Act requires logging for high-risk AI systems — those obligations phase in through 2027–2028. We timestamp and store every issuance and verification now, so the record you'd hand an auditor already exists.
$0.10 / verification
For side projects and experiments.
For production teams
$199 / month
For teams running agents in production.
Unlimited means no meter — fair use applies.
Billing isn't wired up yet — the API is free while we finish it.
Docs
No API key needed. Copy, paste, done.
# 1. Issue a passport for your agent
curl -X POST https://api.agentsmufye.com/v1/agents \
-d '{"name":"my-agent"}'
# → { "agent_id": "ag_…", "passport": "eyJ…" }
# 2. Verify it (anyone can do this)
curl -X POST https://api.agentsmufye.com/v1/verify \
-d '{"passport":"eyJ…"}'
# → { "valid": true, "agent_id": "ag_…" }
# 3. Read an agent's public identity
curl https://api.agentsmufye.com/v1/agents/ag_…
# → { "agent_id": "ag_…", "name": "my-agent", … }
| Method | Endpoint | Description |
|---|---|---|
POST |
/v1/agents |
Register an agent and issue its passport. Body: {"name"}. Returns agent_id, passport, and passport_id. |
GET |
/v1/agents/:id |
Public identity document for an agent: id, name, status, and the issuer's public key. |
POST |
/v1/verify |
Verify a passport. Body: {"passport"}. Returns {"valid": true, "agent_id", "name"} — or a reason it's not. |
POST |
/v1/passports/:id/revoke |
Revoke a passport immediately. Later verifications return {"valid": false, "reason": "revoked"}. |
GET |
/health |
Service health. Returns {"ok": true}. |