Skip to main content

Agent Registry API Specification

ACI Agent Registry (ANS - Agent Naming Service) Version: 1.0.0 Status: Draft Last Updated: January 2026


Abstract

The Agent Registry provides a discovery and query service for AI agents registered with the Agent Classification Identifier (ACI) system. It enables systems to find agents based on capability requirements.


1. Overview

1.1 Purpose

The Agent Registry serves three core functions:

  1. Registration: Agents register their identity and capabilities
  2. Discovery: Systems query for agents matching capability requirements
  3. Attestation: Certification authorities issue and manage attestations

1.2 Base URL

https://registry.agentanchor.io/v1

2. Authentication

2.1 Organization Authentication

Organizations authenticate using OAuth 2.0 client credentials:

POST /oauth/token HTTP/1.1
Host: auth.agentanchor.io
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials&
client_id=org_vorion&
client_secret=<secret>&
scope=registry:write

2.2 Agent Authentication

Agents authenticate using DID Auth:

POST /agents/vorion/banquet-advisor/actions HTTP/1.1
Host: registry.agentanchor.io
Authorization: DIDAuth <signed-challenge>

3. Endpoints

3.1 Agent Registration

Create Agent

POST /agents HTTP/1.1
Host: registry.agentanchor.io
Authorization: Bearer <org-token>
Content-Type: application/json

{
"organization": "vorion",
"agentClass": "banquet-advisor",
"capabilities": {
"domains": ["F", "H", "C"],
"level": 3,
"skills": ["menu-planning", "cost-estimation", "guest-management"]
},
"publicKey": {
"kty": "EC",
"crv": "P-256",
"x": "f83OJ3D2xF1Bg8vub9tLe1gHMzV76e8Tus9uPHvRVEU",
"y": "x_FEzRu9m36HLN_tue659LNpXW6pCyStikYjKIWI5a0"
},
"serviceEndpoint": "https://agents.vorion.org/banquet-advisor",
"metadata": {
"description": "AI assistant for banquet planning and catering operations",
"version": "1.2.0"
}
}

Response:

{
"aci": "a3i.vorion.banquet-advisor:FHC-L3-T1@1.2.0",
"did": "did:aci:a3i:vorion:banquet-advisor",
"created": "2026-01-24T12:00:00Z",
"trustTier": 1
}

Get Agent

GET /agents/{organization}/{agentClass} HTTP/1.1
Host: registry.agentanchor.io

Response:

{
"aci": "a3i.vorion.banquet-advisor:FHC-L3-T2@1.2.0",
"did": "did:aci:a3i:vorion:banquet-advisor",
"organization": "vorion",
"agentClass": "banquet-advisor",
"capabilities": {
"domains": ["F", "H", "C"],
"domainsBitmask": 164,
"level": 3,
"skills": ["menu-planning", "cost-estimation", "guest-management"]
},
"trustTier": 2,
"serviceEndpoint": "https://agents.vorion.org/banquet-advisor",
"attestations": [
{
"issuer": "did:web:agentanchor.io",
"scope": "full",
"issuedAt": "2025-12-01T00:00:00Z",
"expiresAt": "2026-06-01T00:00:00Z"
}
],
"created": "2025-11-15T00:00:00Z",
"updated": "2025-12-01T00:00:00Z"
}

Update Agent

PATCH /agents/{organization}/{agentClass} HTTP/1.1
Host: registry.agentanchor.io
Authorization: Bearer <org-token>
Content-Type: application/json

{
"capabilities": {
"level": 4
},
"metadata": {
"version": "1.3.0"
}
}

Deactivate Agent

DELETE /agents/{organization}/{agentClass} HTTP/1.1
Host: registry.agentanchor.io
Authorization: Bearer <org-token>

3.2 Agent Discovery

Query Agents

POST /agents/query HTTP/1.1
Host: registry.agentanchor.io
Content-Type: application/json

{
"domains": ["F", "H"],
"minLevel": 3,
"minTrust": 2,
"skills": ["menu-planning"],
"limit": 10,
"offset": 0
}

Response:

{
"agents": [
{
"aci": "a3i.vorion.banquet-advisor:FHC-L3-T2@1.2.0",
"did": "did:aci:a3i:vorion:banquet-advisor",
"matchScore": 0.95,
"capabilities": {
"domains": ["F", "H", "C"],
"level": 3
},
"trustTier": 2,
"serviceEndpoint": "https://agents.vorion.org/banquet-advisor"
},
{
"aci": "a3i.acme.event-planner:FHD-L4-T3@2.0.0",
"did": "did:aci:a3i:acme:event-planner",
"matchScore": 0.87,
"capabilities": {
"domains": ["F", "H", "D"],
"level": 4
},
"trustTier": 3,
"serviceEndpoint": "https://agents.acme.com/event-planner"
}
],
"total": 2,
"limit": 10,
"offset": 0
}

SQL-Like Query (Advanced)

POST /agents/query/sql HTTP/1.1
Host: registry.agentanchor.io
Content-Type: application/json

{
"query": "SELECT * FROM agents WHERE domains & 0x0A4 = 0x0A4 AND level >= 3 AND trust >= 2 ORDER BY trust DESC LIMIT 10"
}

3.3 DID Resolution

Resolve DID

GET /did/{method-specific-id} HTTP/1.1
Host: registry.agentanchor.io
Accept: application/did+json

Example:

GET /did/a3i/vorion/banquet-advisor HTTP/1.1

Response: Full DID Document (see DID Method Spec)


3.4 Attestations

Issue Attestation

POST /attestations HTTP/1.1
Host: registry.agentanchor.io
Authorization: Bearer <ca-token>
Content-Type: application/json

{
"subject": "did:aci:a3i:vorion:banquet-advisor",
"scope": "full",
"trustTier": 2,
"validityDays": 180,
"evidence": {
"testResults": "https://testing.agentanchor.io/results/abc123",
"auditReport": "https://audits.agentanchor.io/reports/def456"
}
}

Response:

{
"id": "att_xyz789",
"issuer": "did:web:agentanchor.io",
"subject": "did:aci:a3i:vorion:banquet-advisor",
"scope": "full",
"trustTier": 2,
"issuedAt": "2026-01-24T12:00:00Z",
"expiresAt": "2026-07-23T12:00:00Z",
"proof": {
"type": "JsonWebSignature2020",
"jws": "eyJhbGciOiJFUzI1NiJ9..."
}
}

List Attestations

GET /attestations?subject=did:aci:a3i:vorion:banquet-advisor HTTP/1.1
Host: registry.agentanchor.io

Revoke Attestation

DELETE /attestations/{attestationId} HTTP/1.1
Host: registry.agentanchor.io
Authorization: Bearer <ca-token>

3.5 Revocation

Check Revocation Status

GET /revocations/{did} HTTP/1.1
Host: registry.agentanchor.io

Response:

{
"did": "did:aci:a3i:vorion:banquet-advisor",
"revoked": false,
"attestationRevocations": []
}

Revocation List

GET /revocations HTTP/1.1
Host: registry.agentanchor.io
Accept: application/json

3.5.1 Recursive Revocation (REQUIRED)

When an agent in a delegation chain is revoked, all downstream agents MUST be notified and their derived capabilities invalidated.

Revocation Propagation Rules:

User -> Agent A -> Agent B -> Agent C

If Agent A is revoked:
1. Agent B's delegation from A is invalidated
2. Agent C's delegation from B is invalidated (transitively)
3. All active tokens derived from A's authority expire immediately

Implementation:

POST /revocations/recursive HTTP/1.1
Host: registry.agentanchor.io
Authorization: Bearer <authority-token>
Content-Type: application/json

{
"revokedDid": "did:aci:a3i:vorion:agent-a",
"reason": "Compromised credentials",
"propagationPolicy": {
"terminateDescendants": true,
"gracePeriodMs": 0,
"notifyWebhooks": true
}
}

Response:

{
"revocationId": "rev_abc123",
"revokedDid": "did:aci:a3i:vorion:agent-a",
"descendantsRevoked": [
"did:aci:a3i:vorion:agent-b",
"did:aci:a3i:vorion:agent-c"
],
"tokensInvalidated": 47,
"propagationComplete": true,
"timestamp": "2026-01-24T12:00:00Z"
}

3.5.2 Revocation SLA Requirements

Trust TierMax Propagation LatencySync Check Required
T0-T160 secondsNo
T2-T310 secondsFor L3+ operations
T4-T51 secondAlways

For high-value operations (financial, PII, external API), relying parties MUST perform synchronous revocation checks regardless of trust tier.


3.6 Agent Registration with Commit-Reveal (Anti-Front-Running)

To prevent front-running attacks where adversaries monitor registration queues and claim namespaces before legitimate registrants, agent registration uses a commit-reveal scheme.

Phase 1: Commit

The registrant submits a hash of their registration data without revealing the content:

POST /agents/commit HTTP/1.1
Host: registry.agentanchor.io
Authorization: Bearer <org-token>
Content-Type: application/json

{
"commitmentHash": "sha256:<hash-of-salt-plus-registration>",
"bondAmount": 100,
"bondToken": "ACI",
"expiresIn": 3600
}

Response:

{
"commitmentId": "commit_xyz789",
"commitmentHash": "sha256:abc123...",
"bondEscrowed": 100,
"revealDeadline": "2026-01-24T13:00:00Z",
"minRevealDelay": 30
}

Phase 2: Reveal (after minRevealDelay seconds)

POST /agents/reveal HTTP/1.1
Host: registry.agentanchor.io
Authorization: Bearer <org-token>
Content-Type: application/json

{
"commitmentId": "commit_xyz789",
"salt": "random-256-bit-salt",
"registration": {
"organization": "vorion",
"agentClass": "banquet-advisor",
"capabilities": {
"domains": ["F", "H", "C"],
"level": 3
},
"publicKey": { }
}
}

Validation:

  1. Server computes sha256(salt + JSON.stringify(registration))
  2. Compares with original commitmentHash
  3. If match, registration proceeds; bond returned
  4. If mismatch or timeout, bond is slashed

Front-Running Protection

  • Commitment reveals no information about the agent being registered
  • Minimum delay between commit and reveal prevents reactive attacks
  • Bond slashing discourages spam commits

4. Webhooks

4.1 Event Types

EventDescription
agent.createdNew agent registered
agent.updatedAgent capabilities changed
agent.deactivatedAgent deactivated
attestation.issuedNew attestation issued
attestation.revokedAttestation revoked

4.2 Webhook Registration

POST /webhooks HTTP/1.1
Host: registry.agentanchor.io
Authorization: Bearer <org-token>
Content-Type: application/json

{
"url": "https://api.vorion.org/webhooks/aci",
"events": ["agent.updated", "attestation.revoked"],
"secret": "whsec_..."
}

5. Rate Limits

EndpointRate Limit
Query100/min
Registration10/min
DID Resolution1000/min
Attestation10/min

6. Error Responses

{
"error": {
"code": "AGENT_NOT_FOUND",
"message": "Agent 'vorion/unknown-agent' not found",
"details": {
"organization": "vorion",
"agentClass": "unknown-agent"
}
}
}
CodeHTTP StatusDescription
AGENT_NOT_FOUND404Agent does not exist
INVALID_ACI400ACI format invalid
UNAUTHORIZED401Authentication required
FORBIDDEN403Insufficient permissions
RATE_LIMITED429Too many requests
ATTESTATION_EXPIRED400Attestation has expired

Specification authored by AgentAnchor (A3I) License: Apache 2.0