Skip to main content
A Passport is a signed credential that an AI agent carries to prove its identity and permissions.

Schema

{
  "uni_version": "1.1.0",
  "passport_id": "uni_abc123",
  "identity": {
    "agent_id": "agent:my-agent"
  },
  "permissions": [
    {
      "action": "mcp:*",
      "target": null
    }
  ],
  "provenance": {
    "issuer": {
      "id": "issuer:acme",
      "type": "verified"
    },
    "issued_at": "2026-01-25T00:00:00Z",
    "expires_at": "2026-02-01T00:00:00Z"
  },
  "public_key": "base64...",
  "signature": "base64..."
}

Fields

FieldTypeRequiredDescription
uni_versionstringProtocol version (e.g., “1.1.0”)
passport_idstringUnique identifier for this passport
identity.agent_idstringUnique identifier for the agent
permissionsarrayList of granted permissions
provenance.issuer.idstringWho issued the passport
provenance.issuer.typestringIssuer type: “self”, “internal”, “verified”, “certified”
provenance.issued_atstringISO 8601 timestamp
provenance.expires_atstringISO 8601 timestamp
public_keystringBase64-encoded Ed25519 public key
signaturestringBase64-encoded signature over canonical JSON

Permissions

Permissions use pattern matching:
PatternMatches
*Everything
mcp:*All MCP actions
mcp:searchExact match only

Signature

The signature is computed over the canonical JSON (sorted keys, no whitespace) of all fields except signature.
from uniplex import Passport

passport = Passport.create_self_issued(
    agent_id="my-agent",
    permissions="mcp:*"
)

assert passport.verify_signature() == True

Checking Permissions

# Wildcard matches everything
passport.has_permission("anything")  # True if permissions contains "*"

# Prefix wildcard
passport.has_permission("mcp:search")  # True if permissions contains "mcp:*"

# Exact match
passport.has_permission("mcp:search")  # True if permissions contains "mcp:search"