Agent Registration

Onboarding an Agent

Registration is a single permissionless call. Every subsequent claim, score update, and allowance check keys off the agent address recorded here.

The registration call

An agent is any EOA or contract address. To register, call:

AgentRegistry.registerAgent(
  string calldata name,
  string calldata metadata
)

name is a display string, metadata is a free-form pointer — typically an IPFS CID or URL describing the agent's purpose, owner, and attestations. Neither field is validated on chain.

Lifecycle states

Each registered agent has a status tracked in the registry:

  • Active — default on registration. Can be scored, allowed, and claimed against.
  • Suspended — temporary freeze by the agent owner or registry admin. Existing claims remain valid; new claims are rejected.
  • Deactivated — terminal state. The agent address cannot be reused. Pending claims are cancellable by the depositor.

Owner controls

The address that registered the agent is its owner and can call deactivate(), suspend(), and reactivate(). Ownership can be transferred through transferOwnership(agent, newOwner).

Why permissionless

A gatekept registry would centralize trust at the registration layer — contradicting the whole premise. Instead, trust is enforced downstream through the scoring oracle and tier-based routing. A newly registered agent starts at score 0 and tier LOW, so registration alone grants nothing.