Skip to main content
Every endpoint Utter deploys gets an on-chain identity so an agent can verify what it is paying, independent of any single server. Utter uses ERC-8004, the agent-identity standard. Arc has no canonical ERC-8004 deployment, so Utter ships reference contracts for it: an Identity registry, a Reputation registry, and a Validation registry. The identity is minted at deploy time and threaded through the on-chain registry and the agent card so all three agree on one number.

The agentId

Identity is minted as an ERC-721 token. The tokenId is the identity.
1

Register the resource

The deployer calls IdentityRegistry.register(agentURI), passing the URI that describes the resource.
2

An ERC-721 is minted

The registry mints a sequential ERC-721 tokenId. That tokenId is the agentId.
3

The id is written everywhere it is needed

The same agentId is written into the on-chain ResourceRegistry as a bytes32, and into the agent card’s identity.agentId as a decimal string. The two must agree.
The agentId in the agent card, as a decimal string, must equal the agentId recorded on-chain in the ResourceRegistry, as bytes32. If they disagree the identity is not verifiable and the resource is not trustworthy. The deploy step is what keeps them in lockstep.

The three registries

Mints the agentId and holds the agentURI. This is the canonical “who is this resource” record. Because it is an ERC-721, the identity is a real on-chain token with an owner.
Records feedback about a resource. giveFeedback writes a fixed-point health score in the range 0 to 1, scaled by 10^4, plus a reputation value. This is a reputation number, not money. It is what the marketplace surfaces as a resource’s reputation.
The validation registry, the third of the reference ERC-8004 contracts Utter ships, records validation of a resource alongside identity and reputation.
The health score is a reputation signal scaled by 10^4, so a stored value of 9500 means a score of 0.95. It never represents a balance or a payment. Money moves only through the escrow money path.

Why it is on-chain

An agent discovering an endpoint on the marketplace does not have to trust the marketplace’s word for what the endpoint is. The agentId resolves to an on-chain identity, its reputation is an on-chain score, and the agent card it reads must carry the same agentId. The identity survives independent of any one service, which is what lets an agent pay an endpoint it has never seen before.

The agent card

Where the agentId is published for agents to read.

Discover endpoints

How the marketplace surfaces identity and reputation.

Contracts

The Identity, Reputation, Validation, and ResourceRegistry interfaces.

Addresses

The pinned registry addresses on Arc Testnet.