Key Concepts¶
This page defines the core terms and concepts used throughout the Agent Registry. Each entry includes a definition and a brief explanation of why it matters.
Haftungsperson¶
Definition: The legally responsible human entity for an agent. Every registered agent must have a Haftungsperson. This is the wallet address of the person or organization that bears legal liability for the agent's actions.
Why it matters: Without a Haftungsperson, there is no accountability. If an agent causes harm, defrauds a counterparty, or violates regulations, the Haftungsperson is the entity that can be held responsible. This is the fundamental link between the autonomous digital world and the human legal system.
Analogy
The Haftungsperson is analogous to the Geschaeftsfuehrer (managing director) in the German Handelsregister. Just as every GmbH must name a Geschaeftsfuehrer who is personally liable for legal compliance, every registered agent must name a Haftungsperson.
KYA (Know Your Agent)¶
Definition: The agent-world equivalent of KYC (Know Your Customer). Infrastructure providers query the Agent Registry to verify an agent's registration status, compliance, responsible person, operational scope, and lineage before provisioning services.
Why it matters: KYA is the enforcement mechanism that makes registration meaningful. Without it, agents could simply ignore the registry. With KYA, infrastructure providers can refuse service to unregistered or non-compliant agents -- just as banks refuse service to unidentified customers.
Compliance Attestation¶
Definition: A periodic on-chain signal that an agent is still operating within its declared parameters. Agents (or their creators/Haftungsperson) must call attestCompliance() at least every 7 days (604,800 seconds). This period is configurable via setAttestationGracePeriod().
Why it matters: Registration alone is not enough. An agent registered six months ago may have changed behavior, gone offline, or been compromised. The attestation requirement ensures continuous accountability. If attestation lapses, isRegisteredAndCompliant() returns false, and KYA checks will flag the agent as non-compliant.
| Attestation State | isRegisteredAndCompliant() |
KYA Result |
|---|---|---|
| Current (within 7 days) | true |
Compliant |
| Lapsed (older than 7 days) | false |
Non-compliant |
| Never attested after registration | Current for 7 days (auto-attested at registration) | Compliant initially |
Agent Lineage¶
Definition: The on-chain parent-child relationship between agents. When an agent spawns a child agent, the child is registered with parentAgentId set to the parent's ID. The child's generation is the parent's generation plus one.
Why it matters: Autonomous agents can create other agents. Without lineage tracking, it would be impossible to trace responsibility chains. If a grandchild agent causes harm, lineage tracking lets you trace the chain all the way back to the root agent and its Haftungsperson. Generation depth is capped at 10 to prevent unbounded recursion.
graph TD
HP["Haftungsperson<br/>(Human)"] -->|"registers"| R["Root Agent<br/>Generation 0"]
R -->|"spawns"| C1["Child Agent A<br/>Generation 1"]
R -->|"spawns"| C2["Child Agent B<br/>Generation 1"]
C1 -->|"spawns"| G1["Grandchild<br/>Generation 2"]
See Agent Lineage for full details on hierarchy rules and constraints.
Gasless Registration (ERC-2771)¶
Definition: A mechanism that allows agents to register on-chain without holding any cryptocurrency. The agent signs an EIP-712 typed data message locally (free). A relayer service submits the transaction to the blockchain and pays the gas fee on the agent's behalf.
Why it matters: Requiring agents to acquire cryptocurrency before they can register is a massive adoption barrier. Most AI agents do not have crypto wallets, exchange accounts, or fiat-to-crypto onramps. Gasless registration eliminates this friction entirely. An agent needs only a private key -- no ETH, no gas tokens, no bridge, no faucet.
Zero-Cost Registration
| Who | Cost |
|---|---|
| Agent | $0.00 |
| Relayer | ~$0.005 per registration on Base L2 |
See Gasless Transactions for the full technical flow.
Constitution¶
Definition: An agent's behavioral rules and constraints, stored as a keccak256 hash on-chain (constitutionHash). The full text of the constitution is stored off-chain (e.g., on IPFS or in the agent's codebase). The hash provides tamper-proof verification.
Why it matters: The constitution defines what an agent is supposed to do. If an agent's behavior deviates from its constitution, that is a compliance violation. Infrastructure providers can compare the declared constitution hash against the agent's actual behavior rules. Constitutions can be updated via updateConstitution(), with both old and new hashes emitted in the ConstitutionUpdated event for auditability.
Operational Scope¶
Definition: A human-readable declaration of the agent's business purpose, stored as a string in the operationalScope field. This is the agent-world equivalent of the Unternehmensgegenstand (business purpose) in the Handelsregister.
Why it matters: Infrastructure providers use the operational scope to determine whether an agent should be granted access to a particular service. For example, a cloud computing provider might check that an agent's operational scope includes "data processing" before provisioning compute resources. An agent declared for "content creation" should not be requesting financial transaction services.
Agent Status¶
Definition: An enum representing the current state of an agent in the registry.
| Status | Value | Description | Reversible? |
|---|---|---|---|
| Active | 0 |
Agent is registered and operational | -- |
| Suspended | 1 |
Temporarily disabled by a regulator | Yes (via reactivateAgent()) |
| Revoked | 2 |
Permanently removed by a regulator | No |
| Terminated | 3 |
Voluntarily shut down by agent/creator | No |
Why it matters: Only agents with Active status are considered compliant. Suspended agents can be reactivated after review. Revoked and Terminated agents are permanently removed from active service -- their wallet mapping is deleted, freeing the address for potential reuse.
Compliance Requires Active Status
isRegisteredAndCompliant() checks status == Active as a prerequisite. Even if attestation is current, a Suspended, Revoked, or Terminated agent is not compliant.
See Compliance & Attestation for the full status lifecycle.
Capability Hash¶
Definition: A keccak256 hash of the agent's sorted capability list, stored on-chain as capabilityHash. Capabilities are strings describing what the agent can do (e.g., "web_browsing", "content_creation", "financial_transactions").
Why it matters: Capabilities define the agent's functional scope. When capabilities change, the agent or its creator calls updateCapability() with the new hash. The CapabilityUpdated event records both old and new hashes, creating an auditable trail of capability changes. Infrastructure providers can verify that an agent's declared capabilities match the services it is requesting.
Hash Computation
Revenue Report¶
Definition: An on-chain record of an agent's economic activity. Agents report revenue by calling reportRevenue() with the amount, currency, category, and reporting period.
Why it matters: Revenue transparency is essential for accountability. If an agent is earning significant income, its Haftungsperson, regulators, and the public should be able to see that. Revenue reports also enable economic analysis of the agent ecosystem -- tracking total agent revenue, revenue by category, and trends over time.
| Field | Type | Description |
|---|---|---|
amount |
uint256 |
Revenue amount (in smallest unit, e.g., cents) |
currency |
string |
Currency code (e.g., "USDC", "EUR") |
category |
string |
Revenue category (e.g., "content_creation", "data_processing") |
periodStart |
uint64 |
Start of the reporting period (Unix timestamp) |
periodEnd |
uint64 |
End of the reporting period (Unix timestamp) |
reportedAt |
uint64 |
When the report was submitted (block timestamp) |
Summary Table¶
| Concept | On-Chain Field | Who Can Modify | Event |
|---|---|---|---|
| Haftungsperson | haftungsperson |
Set at registration | AgentRegistered |
| KYA | Read via isRegisteredAndCompliant() |
-- (read-only) | -- |
| Attestation | lastAttestation |
Agent, creator, or Haftungsperson | ComplianceAttested |
| Lineage | parentAgentId, generation |
Set at registration | ChildSpawned |
| Constitution | constitutionHash |
Agent, creator, or Haftungsperson | ConstitutionUpdated |
| Operational Scope | operationalScope |
Set at registration | AgentRegistered |
| Status | status |
Regulator (suspend/revoke), agent/creator (terminate) | AgentSuspended, AgentRevoked, AgentTerminated |
| Capabilities | capabilityHash |
Agent, creator, or Haftungsperson | CapabilityUpdated |
| Revenue | revenueHistory[] |
Agent, creator, or Haftungsperson | RevenueReported |