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 revocation is written to an append-only log with a timestamp. A record exists — it is not a compliance certification.
{ "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.
A passport proves our key signed it — not who operates the agent.
Demo passports expire 24 hours after issuance and are marked as demos.
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.
Revoked with the one-time token from issuance. Verifying again below — watch it come back revoked.
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.
Billing opens soon — leave your email and we'll tell you. We'll only email about billing. See our Privacy Policy.
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 confirm our key signed it before they engage.
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 our key signed the claim about which agent acted — to anyone, with no login flow. It does not prove who operates the agent. 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 — you'll need the revoke token returned when the passport was issued, so nobody else can kill your credential. 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 revocation now, so a tamper-evident record already exists. This is not a compliance certification.
$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 (exact monthly limit published before billing starts).
Billing isn't wired up yet — the API is free while we finish it.
Docs
No API key needed. Copy, paste, done.
Rate limits: 10 issues and 60 verifications per minute per IP — no key needed.
# 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, passport_id, and a one-time revoke_token. Impersonation-style names are blocked (400); bodies over 64KB are rejected (413); issuance is throttled per IPv6 /64 in addition to edge rate limits. |
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", "demo", "expires_at"} — or a reason it's not. Bodies over 64KB are rejected (413). |
POST |
/v1/passports/:id/revoke |
Revoke a passport immediately. Requires the revoke_token returned once at issuance. Later verifications return {"valid": false, "reason": "revoked"}. |
POST |
/v1/waitlist |
Join the billing waitlist. Body: {"email"}. |
GET |
/health |
Service health. Returns {"ok": true}. |