The Agent Identity Bridge (AIB) protocol defines a portable identity format for AI agents operating across multiple communication protocols. It provides a single credential — the Agent Passport — that is valid across [[MCP]], [[A2A]], ANP (Agent Network Protocol), and AG-UI (Agent-User Interaction). This specification defines the passport format, credential translation semantics, cryptographic audit trail, policy engine, OIDC federation, and webhook notification system.

This is a draft community specification. It has not been reviewed or endorsed by the W3C. It is published to solicit feedback from the AI agent interoperability community.

A reference implementation is available at github.com/tntech-consulting/agent-identity-bridge with 1,094 tests passing.

As well as sections marked as non-normative, all authoring guidelines, diagrams, examples, and notes in this specification are non-normative. Everything else in this specification is normative.

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [[RFC2119]].

Introduction

AI agents increasingly operate across multiple communication protocols simultaneously. An agent may receive tasks via [[MCP]], collaborate with peers via [[A2A]], register on discovery networks via ANP, and interact with users via AG-UI. Each protocol has its own identity and credential format, creating fragmentation.

AIB solves this by defining a single Agent Passport that encapsulates an agent's identity, capabilities, and protocol bindings. Credentials can be translated between formats in sub-millisecond time. Every action is recorded in a cryptographically signed audit trail using Ed25519 ([[RFC8032]]).

Design Goals

  1. Portability: One identity credential valid across all supported protocols.
  2. Verifiability: Every action produces a cryptographically signed receipt.
  3. Policy enforcement: Declarative rules evaluated before every action.
  4. Federation: External identity providers (OIDC) accepted natively.
  5. Minimal footprint: Zero external dependencies in the SDK.

Terminology

Agent Passport
A structured credential identifying an AI agent across protocols.
Receipt
A signed record of an action (create, revoke, translate, etc.).
Binding
Protocol-specific authentication configuration within a passport.
Capability
A declared ability of an agent (e.g., booking, support).
Policy Rule
A declarative constraint evaluated before an action is permitted.
Tier
The lifetime class of a passport: permanent, session, or ephemeral.

Agent Passport Format

URN Scheme

Agent passports MUST use the following hierarchical URN scheme:

urn:aib:agent:{org_slug}:{agent_slug}

Where:

Organization issuers MUST follow:

urn:aib:org:{org_slug}

Passport Object

A conforming Agent Passport is a JSON object with the following structure:

{
  "passport_id": "urn:aib:agent:myorg:booking-bot",
  "display_name": "myorg/booking-bot",
  "issuer": "urn:aib:org:myorg",
  "capabilities": ["booking", "scheduling"],
  "protocols": ["mcp", "a2a"],
  "protocol_bindings": {
    "mcp": { "auth_method": "oauth2" },
    "a2a": { "auth_method": "bearer" }
  },
  "tier": "permanent",
  "status": "active",
  "version": 1,
  "issued_at": "2026-03-28T10:00:00Z",
  "expires_at": "2027-03-28T10:00:00Z",
  "metadata": {}
}
      

Required Fields

FieldTypeDescription
passport_idstring (URN)MUST be unique. Follows the URN scheme defined above.
display_namestringHuman-readable name for the agent.
issuerstring (URN)MUST follow the organization URN scheme.
capabilitiesstring[]Array of declared agent capabilities.
protocolsstring[]MUST contain at least one of: mcp, a2a, anp, ag-ui.
protocol_bindingsobjectPer-protocol authentication configuration.
tierstringMUST be permanent, session, or ephemeral.
statusstringMUST be active, revoked, or expired.
versionintegerMonotonically increasing version number.
issued_atISO 8601Creation timestamp.
expires_atISO 8601Expiration timestamp.

Protocol Bindings

Each entry in protocol_bindings maps a protocol to its auth configuration:

ProtocolAuth MethodAdditional Fields
mcpoauth2
a2abearer
anpdid-authdid (DID Web URI)
ag-uinone

Tiers

TierDefault TTLMax TTLUse Case
permanent365 days3650 daysLong-lived service agents
session1 hour24 hoursTask-scoped agents
ephemeral5 minutes5 minutesOne-shot delegated actions

Credential Translation

Conforming implementations MUST support bidirectional translation between all supported protocol credential formats. Translation SHOULD complete in under 1 millisecond.

Supported Translation Paths

FromToStatus
A2A Agent CardMCP Server CardREQUIRED
MCP Server CardA2A Agent CardREQUIRED
A2A Agent CardAG-UI DescriptorREQUIRED
MCP Server CardAG-UI DescriptorREQUIRED
AG-UI DescriptorA2A Agent CardREQUIRED
AG-UI DescriptorMCP Server CardREQUIRED

Translation Semantics

Translated credentials MUST include the following metadata fields:

Audit Trail

Receipt Format

Every action MUST produce a Receipt:

{
  "passport_id": "urn:aib:agent:myorg:bot",
  "action": "create",
  "status": "success",
  "receipt_hash": "a1b2c3d4e5f6...",
  "signature": "ed25519hex...",
  "signed_by": "publickeyhex...",
  "created_at": "2026-03-28T10:00:00Z"
}
      

Hash Chain

Each receipt's receipt_hash MUST be computed as:

SHA-256("{action}|{passport_id}|{timestamp}")

This creates a tamper-evident chain — modifying any receipt invalidates subsequent hashes.

Ed25519 Signatures

Receipts MUST be signed using Ed25519 ([[RFC8032]]). The signing key SHOULD be persistent across server restarts. The public key MUST be stored in the signed_by field of each receipt for independent verification.

Denied Actions

Policy violations MUST also generate signed receipts with status: "denied", the error code in error_code, and violation details in metadata.violations.

Policy Engine

Rule Types

Conforming implementations MUST support the following 12 policy rule types:

#TypeDescription
1deliverable_gateRequire specific capabilities before an action is permitted.
2capability_requiredAgent MUST possess specific capabilities.
3separation_of_dutiesBlock self-actions on resources the requesting identity created.
4protocol_restrictBlock passports using specific protocols.
5domain_blockBlock agents matching specific domain patterns.
6domain_allowAllow only agents matching specific domain patterns.
7tier_restrictRestrict actions to specific passport tiers.
8time_restrictRestrict actions to specific time windows (UTC).
9action_blockBlock specific actions entirely.
10rate_limitLimit the number of actions per time period.
11attestation_requiredRequire cryptographic attestation for specific actions.
12capability_limitLimit the number of capabilities per passport.

Severity Levels

Each policy rule MUST have a severity level:

block
Action is denied. A signed denial receipt is emitted.
warn
Action proceeds. Violation is recorded in receipt metadata.
log
Action proceeds. Violation is counted in rule hit statistics.

Evaluation Order

All active rules MUST be evaluated for every action. If any rule with block severity produces a violation, the action MUST be denied. Violations from warn and log rules SHOULD be included in the response metadata.

OIDC Federation

AIB SHOULD accept external OIDC tokens ([[RFC7519]]) as authentication. This enables agents authenticated via enterprise identity providers to obtain passports without creating AIB-specific accounts.

Verification Flow

Conforming implementations MUST perform the following steps when processing an OIDC token:

  1. Extract the JWT payload from the Bearer token.
  2. Look up the iss (issuer) claim in the federation trust registry.
  3. Verify exp (expiration) is in the future.
  4. If an expected audience is configured, verify the aud claim matches.
  5. Fetch the JWKS from the issuer's jwks_uri.
  6. Verify the JWT signature using the appropriate algorithm (RS256, RS384, or RS512).
  7. If valid, create or authenticate the identity linked to the OIDC subject.

Supported Algorithms

Conforming implementations MUST support RS256 and SHOULD support RS384 and RS512 (RSASSA-PKCS1-v1_5).

JWKS Caching

JWKS responses SHOULD be cached for at least 1 hour per issuer URI to minimize network overhead.

Webhooks

Event Types

Conforming implementations SHOULD support the following webhook events:

EventTriggered By
passport.createdSuccessful passport creation.
passport.revokedSuccessful passport revocation.
policy.violationA policy rule blocks an action.
translate.completedSuccessful credential translation.

Payload Format

{
  "event": "passport.created",
  "timestamp": "2026-03-28T10:00:00Z",
  "data": {
    "passport_id": "urn:aib:agent:myorg:bot",
    "protocols": ["mcp", "a2a"],
    "capabilities": ["booking"]
  }
}
      

Signature

When a webhook has a secret configured, the payload body MUST be signed with HMAC-SHA256. The hex-encoded signature MUST be sent in the X-AIB-Signature HTTP header.

Error Codes

CodeHTTP StatusDescription
AIB-001400Invalid or missing request body.
AIB-002400Invalid agent_slug format.
AIB-003400No valid protocols specified.
AIB-101401Unauthorized — invalid or missing credentials.
AIB-201404Passport not found.
AIB-301409Passport already exists (duplicate).
AIB-302409Passport already revoked.
AIB-401400Unsupported translation path.
AIB-501500Internal server error.
AIB-601403Policy violation (blocked).
AIB-602403Separation of duties violation.
AIB-701429Webhook quota exceeded.

Security Considerations

Privacy Considerations