Skip to content

Latest commit

 

History

History
351 lines (321 loc) · 10.1 KB

File metadata and controls

351 lines (321 loc) · 10.1 KB

Agent Registry Schema — ADP Specification v0.1

Overview

The Agent Registry is the central inventory of all AI agents deployed within an organization. Each agent entry documents its identity, capabilities, constraints, governance parameters, and designated human oversight.

The registry serves as the foundation for:

  • Accountability — Every agent has a designated human owner
  • Compliance — Regulators can inspect which agents operate and under what rules
  • Risk management — Organizations maintain visibility over their agent landscape
  • Audit — Complete history of agent configuration changes

Schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "ADP Agent Registry Entry",
  "type": "object",
  "required": [
    "agent_id", "name", "description", "autonomy_level",
    "owner", "status", "created_at"
  ],
  "properties": {
    "agent_id": {
      "type": "string",
      "pattern": "^agent-[a-z0-9-]+$",
      "description": "Unique, human-readable agent identifier"
    },
    "name": {
      "type": "string",
      "description": "Display name of the agent"
    },
    "description": {
      "type": "string",
      "description": "Detailed description of what the agent does"
    },
    "version": {
      "type": "string",
      "description": "Agent version (semver recommended)"
    },
    "status": {
      "type": "string",
      "enum": ["draft", "testing", "active", "suspended", "decommissioned"],
      "description": "Current lifecycle status"
    },

    "autonomy": {
      "type": "object",
      "required": ["level"],
      "properties": {
        "level": {
          "type": "string",
          "enum": ["A1", "A2", "A3", "A4", "A5"]
        },
        "allowed_decisions": {
          "type": "array",
          "items": { "type": "string", "enum": ["D1", "D2", "D3", "D4"] }
        },
        "max_risk_level": {
          "type": "string",
          "enum": ["R1", "R2", "R3", "R4"]
        },
        "self_modification_allowed": {
          "type": "boolean",
          "default": false
        }
      }
    },

    "owner": {
      "type": "object",
      "required": ["email", "name"],
      "properties": {
        "email": { "type": "string", "format": "email" },
        "name": { "type": "string" },
        "department": { "type": "string" },
        "role": { "type": "string" }
      }
    },

    "escalation_chain": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "email": { "type": "string", "format": "email" },
          "name": { "type": "string" },
          "role": { "type": "string" }
        }
      },
      "description": "Ordered list of humans for escalation"
    },

    "capabilities": {
      "type": "object",
      "properties": {
        "tools": {
          "type": "array",
          "items": { "type": "string" },
          "description": "MCP tools/APIs the agent can access"
        },
        "data_access": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "source": { "type": "string" },
              "access_level": {
                "type": "string",
                "enum": ["read", "write", "admin"]
              },
              "data_classification": {
                "type": "string",
                "enum": ["public", "internal", "confidential", "restricted"]
              }
            }
          }
        },
        "can_delegate_to": {
          "type": "array",
          "items": { "type": "string" },
          "description": "Other agent_ids this agent can delegate to"
        },
        "external_access": {
          "type": "array",
          "items": { "type": "string" },
          "description": "External services/channels the agent can reach"
        }
      }
    },

    "constraints": {
      "type": "object",
      "properties": {
        "operating_hours": {
          "type": "object",
          "properties": {
            "start": { "type": "string" },
            "end": { "type": "string" },
            "timezone": { "type": "string" }
          }
        },
        "rate_limits": {
          "type": "object",
          "properties": {
            "decisions_per_hour": { "type": "integer" },
            "external_actions_per_hour": { "type": "integer" }
          }
        },
        "financial_limits": {
          "type": "object",
          "properties": {
            "max_transaction_amount": { "type": "number" },
            "max_daily_total": { "type": "number" },
            "currency": { "type": "string" }
          }
        },
        "prohibited_actions": {
          "type": "array",
          "items": { "type": "string" }
        }
      }
    },

    "compliance": {
      "type": "object",
      "properties": {
        "applicable_regulations": {
          "type": "array",
          "items": { "type": "string" },
          "description": "Regulatory identifiers from ADP regulatory mapping"
        },
        "risk_assessment_date": {
          "type": "string",
          "format": "date"
        },
        "next_review_date": {
          "type": "string",
          "format": "date"
        },
        "eu_ai_act_risk_class": {
          "type": "string",
          "enum": ["minimal", "limited", "high", "unacceptable"]
        },
        "impact_assessment_ref": {
          "type": "string",
          "description": "Reference to impact assessment document"
        }
      }
    },

    "technical": {
      "type": "object",
      "properties": {
        "model_provider": { "type": "string" },
        "model_id": { "type": "string" },
        "framework": {
          "type": "string",
          "description": "Agent framework (CrewAI, LangGraph, AutoGen, custom)"
        },
        "mcp_servers": {
          "type": "array",
          "items": { "type": "string" },
          "description": "Connected MCP servers"
        },
        "observability": {
          "type": "object",
          "properties": {
            "provider": {
              "type": "string",
              "description": "Langfuse, OpenTelemetry, LangSmith, etc."
            },
            "trace_endpoint": { "type": "string" }
          }
        }
      }
    },

    "created_at": {
      "type": "string",
      "format": "date-time"
    },
    "updated_at": {
      "type": "string",
      "format": "date-time"
    },
    "change_history": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "timestamp": { "type": "string", "format": "date-time" },
          "changed_by": { "type": "string" },
          "field_changed": { "type": "string" },
          "old_value": {},
          "new_value": {},
          "reason": { "type": "string" }
        }
      }
    }
  }
}

Example Entry

{
  "agent_id": "agent-billing-001",
  "name": "Billing Reconciliation Agent",
  "description": "Reconciles monthly billing discrepancies by comparing invoice data with payment records and flagging anomalies for review",
  "version": "1.2.0",
  "status": "active",

  "autonomy": {
    "level": "A3",
    "allowed_decisions": ["D1", "D2"],
    "max_risk_level": "R2",
    "self_modification_allowed": false
  },

  "owner": {
    "email": "j.tremblay@company.com",
    "name": "Julie Tremblay",
    "department": "Finance",
    "role": "Finance Controller"
  },

  "escalation_chain": [
    { "email": "j.tremblay@company.com", "name": "Julie Tremblay", "role": "Finance Controller" },
    { "email": "m.gagnon@company.com", "name": "Marc Gagnon", "role": "CFO" }
  ],

  "capabilities": {
    "tools": ["query_billing_db", "compare_invoices", "flag_anomaly", "generate_report"],
    "data_access": [
      { "source": "billing_database", "access_level": "read", "data_classification": "confidential" },
      { "source": "customer_records", "access_level": "read", "data_classification": "restricted" }
    ],
    "can_delegate_to": [],
    "external_access": []
  },

  "constraints": {
    "operating_hours": { "start": "06:00", "end": "22:00", "timezone": "America/Montreal" },
    "rate_limits": { "decisions_per_hour": 100, "external_actions_per_hour": 0 },
    "financial_limits": { "max_transaction_amount": 0, "max_daily_total": 0, "currency": "CAD" },
    "prohibited_actions": ["external_communication", "data_deletion", "payment_processing"]
  },

  "compliance": {
    "applicable_regulations": ["loi25_art12", "sox_section404"],
    "risk_assessment_date": "2026-01-15",
    "next_review_date": "2026-07-15",
    "eu_ai_act_risk_class": "limited",
    "impact_assessment_ref": "IA-2026-FIN-003"
  },

  "technical": {
    "model_provider": "Anthropic",
    "model_id": "claude-sonnet-4-5-20250929",
    "framework": "custom",
    "mcp_servers": ["billing-mcp", "reporting-mcp"],
    "observability": {
      "provider": "Langfuse",
      "trace_endpoint": "https://langfuse.company.com"
    }
  },

  "created_at": "2026-01-10T09:00:00-05:00",
  "updated_at": "2026-02-20T14:00:00-05:00",
  "change_history": [
    {
      "timestamp": "2026-02-01T10:00:00-05:00",
      "changed_by": "j.tremblay@company.com",
      "field_changed": "autonomy.max_risk_level",
      "old_value": "R1",
      "new_value": "R2",
      "reason": "Agent now processes customer payment data for reconciliation"
    }
  ]
}

Lifecycle States

draft → testing → active → suspended → decommissioned
                    ↑          ↓
                    └──────────┘ (can be reactivated)
State Description Governance
draft Agent is being designed, not yet operational No decisions permitted
testing Agent operates in sandbox with test data All decisions logged, no real effects
active Agent is operational in production Full governance applies
suspended Agent is temporarily disabled All decisions blocked, investigation possible
decommissioned Agent permanently retired Traces retained per retention policy

State transitions require:

  1. Approval from the designated owner
  2. Audit log entry documenting the change
  3. For active → any other state: notification to escalation chain