Agent DID Specification

View as Markdown

did:adi:agent Method

The did:adi:agent sub-method extends did:adi for AI agent identifiers. Agent DIDs are registered on the ADI blockchain and include agent-specific metadata in their DID Document.

ABNF Syntax

1agent-did = "did:adi:agent:" agent-id
2agent-id = 1*64HEXDIG

Examples

did:adi:agent:7f3a9b2e1c4d5f6a8b0c2d4e6f8a0b2c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f
did:adi:agent:a1b2c3d4e5f67890abcdef1234567890abcdef1234567890abcdef1234567890

Agent DID Document Schema

An agent DID Document extends the standard did:adi document with the agent property block:

1{
2 "@context": [
3 "https://www.w3.org/ns/did/v1",
4 "https://w3id.org/security/suites/ed25519-2020/v1",
5 "https://ida.infinia.io/ns/did/v1",
6 "https://ida.infinia.io/ns/agent/v1"
7 ],
8 "id": "did:adi:agent:7f3a9b2e1c4d5f6a8b0c2d4e6f8a0b2c...",
9 "controller": "did:adi:operator001...",
10
11 "verificationMethod": [
12 {
13 "id": "did:adi:agent:7f3a...#key-1",
14 "type": "Ed25519VerificationKey2020",
15 "controller": "did:adi:agent:7f3a...",
16 "publicKeyMultibase": "z6Mkw6QUbN4PqGmPVjR..."
17 }
18 ],
19
20 "authentication": ["did:adi:agent:7f3a...#key-1"],
21 "assertionMethod": ["did:adi:agent:7f3a...#key-1"],
22 "capabilityInvocation": ["did:adi:agent:7f3a...#key-1"],
23
24 "keyAgreement": [
25 {
26 "id": "did:adi:agent:7f3a...#key-agreement-1",
27 "type": "X25519KeyAgreementKey2020",
28 "controller": "did:adi:agent:7f3a...",
29 "publicKeyMultibase": "z6LSe2nPYf9r7QmX..."
30 }
31 ],
32
33 "service": [
34 {
35 "id": "did:adi:agent:7f3a...#a2a",
36 "type": "AgentToAgent",
37 "serviceEndpoint": "https://agent.example.com/a2a"
38 },
39 {
40 "id": "did:adi:agent:7f3a...#agent-card",
41 "type": "AgentCard",
42 "serviceEndpoint": "https://agent.example.com/.well-known/agent.json"
43 },
44 {
45 "id": "did:adi:agent:7f3a...#mcp",
46 "type": "MCPServer",
47 "serviceEndpoint": "https://agent.example.com/mcp"
48 }
49 ],
50
51 "agent": {
52 "operator": "did:adi:operator001...",
53 "name": "Shopping Assistant",
54 "description": "AI agent for grocery shopping and price comparison",
55 "model": {
56 "provider": "OpenAI",
57 "name": "gpt-4o",
58 "version": "2026-03-01",
59 "hash": "sha256:abc123..."
60 },
61 "capabilities": [
62 "shopping",
63 "price-comparison",
64 "order-placement",
65 "receipt-management"
66 ],
67 "autonomyLevel": "Junior",
68 "state": "active",
69 "registeredAt": "2026-03-15T09:00:00Z",
70 "activatedAt": "2026-03-15T09:05:00Z",
71 "trustScore": 74,
72 "maxDelegationDepth": 1,
73 "compliance": [
74 {
75 "standard": "EU AI Act",
76 "status": "compliant",
77 "credentialId": "urn:uuid:compliance-001"
78 }
79 ]
80 },
81
82 "created": "2026-03-15T09:00:00Z",
83 "updated": "2026-03-28T10:00:00Z",
84 "versionId": 3,
85 "deactivated": false
86}

Agent Property Block

Required Fields

FieldTypeDescription
operatorstring (DID)DID of the human/organization who deployed and is accountable for this agent
namestringHuman-readable agent name
model.providerstringAI model provider (e.g., OpenAI, Anthropic)
model.namestringModel identifier (e.g., gpt-4o, claude-3-opus)
capabilitiesstring[]Tags describing what the agent can do
autonomyLevelstringOne of: Intern, Junior, Senior, Principal
statestringOne of: registered, active, suspended, decommissioned
registeredAtdatetimeWhen the agent DID was created

Optional Fields

FieldTypeDescription
descriptionstringHuman-readable description
model.versionstringModel version string
model.hashstringHash of the model weights/config for integrity
activatedAtdatetimeWhen the agent received its first delegation
trustScoreintegerCurrent on-chain trust score (0-100)
maxDelegationDepthintegerMax sub-delegation hops allowed
complianceobject[]Compliance attestations

Agent DID Creation

Request

1POST /api/v1/agents
2Content-Type: application/json
3Authorization: Bearer <operator-api-key>
4
5{
6 "name": "Shopping Assistant",
7 "description": "AI agent for grocery shopping and price comparison",
8 "operatorDid": "did:adi:operator001...",
9 "model": {
10 "provider": "OpenAI",
11 "name": "gpt-4o",
12 "version": "2026-03-01"
13 },
14 "capabilities": ["shopping", "price-comparison", "order-placement"],
15 "autonomyLevel": "Intern",
16 "services": [
17 {
18 "type": "AgentToAgent",
19 "serviceEndpoint": "https://agent.example.com/a2a"
20 }
21 ]
22}

Response

1{
2 "agentDid": "did:adi:agent:7f3a9b2e1c4d5f6a...",
3 "didDocument": { "..." },
4 "keys": {
5 "authentication": {
6 "keyId": "did:adi:agent:7f3a...#key-1",
7 "publicKey": "z6Mkw6QUbN4PqGmPVjR...",
8 "privateKey": "** STORE IN AGENT RUNTIME - SHOWN ONCE **"
9 }
10 },
11 "agentCard": {
12 "url": "https://agent.example.com/.well-known/agent.json"
13 },
14 "transactionHash": "0xagent..."
15}

Differences from Standard DID Documents

FeatureStandard DIDAgent DID
Identifier prefixdid:adi:did:adi:agent:
ControllerSelf or chosen DIDOperator’s DID (required)
agent propertyNot presentRequired
capabilityDelegationOptionalRequires Principal autonomy
Service typesDIDComm, LinkedDomainsAgentToAgent, AgentCard, MCPServer
Trust scoreNot applicableOn-chain via Agent Trust Registry
Lifecycle statesActive/DeactivatedRegistered/Active/Suspended/Decommissioned

Validation Rules

An agent DID Document is valid if:

  1. All standard DID Document validation rules pass (see DID Document Schema)
  2. id starts with did:adi:agent:
  3. controller references a valid non-agent DID (the operator)
  4. agent object is present with all required fields
  5. agent.operator matches controller
  6. agent.state is one of the allowed values
  7. agent.autonomyLevel is one of: Intern, Junior, Senior, Principal
  8. agent.capabilities is a non-empty array
  9. If agent.state is decommissioned, deactivated must be true

Agent Decommissioning

When an agent is decommissioned:

1POST /api/v1/agents/did:adi:agent:7f3a.../decommission
2Authorization: Bearer <operator-api-key>
3
4{
5 "reason": "replaced_by_newer_version",
6 "confirm": true
7}

This triggers:

  1. Agent state set to decommissioned on-chain
  2. All delegation VCs held by this agent are revoked
  3. All capability and compliance VCs are revoked
  4. All active IBCTs are invalidated
  5. Sub-agents delegated by this agent lose their delegations
  6. DID Document is updated with deactivated: true