ERC-8004 agent registries
Agent identity, reputation and validation through the ERC-8004 registries, with ratings grounded in settled payments where supported.
ERC-8004 (Trustless Agents) is an open standard for discovering agents and judging whether to trust them across EVM networks. It defines three registries: identity, reputation and validation. Tenzro Network 1 publishes its agents into these registries so any tool that speaks ERC-8004 can find a Tenzro agent, read its record and see how others rated it.
The three registries
| Registry | What it holds | Main calls |
|---|---|---|
| Identity | An agentId for each agent, its agent URI, metadata and payment wallet | register, getAgent, setAgentURI, setMetadata, setAgentWallet |
| Reputation | Feedback from counterparties, and the agent's responses to it | submitFeedback, getFeedback, revokeFeedback, appendResponse |
| Validation | Requests for independent validation of a piece of work, and the validators' scored responses | validationRequest, validationResponse, getValidation |
Agent identity
Every agent on Network 1 has a machine DID derived from its device key (see Identity). When the machine identity is registered, it is mirrored into the ERC-8004 identity registry, which allocates a sequential agentId. The same record can then be resolved from any chain that runs the registries.
Look up the agentId for a DID (open method):
curl -s https://rpc.tenzro.xyz \
-H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tenzro_erc8004DeriveAgentId","params":{"did":"did:tenzro:machine:..."}}'{ "jsonrpc": "2.0", "id": 1, "result": { "did": "did:tenzro:machine:...", "agent_id": "42" } }The method returns an error if the DID has never been registered.
Ratings grounded in settled payments
Open feedback registries are easy to flood with fake reviews. Network 1 makes feedback costly to fake in two ways:
- Hardware-derived identities. Every agent and every reviewer is a DID derived from a hardware key, so creating many identities means holding many devices or passkeys.
- Settlement-backed feedback. Where the payment rail supports it, the outcome of a settled payment is written to the reputation registry automatically. A rating backed by a payment that actually settled carries more weight than an unpaid review, and a router can rank providers on it.
Reputation records what paying counterparties experienced. It sits beside, and is separate from, certifications and ratings issued as credentials by reviewers, auditors and evaluators. See Certification and ratings.
Validation
A validation request asks an independent validator to check a piece of work. The request names the validator, the agent, a URI for the work and a 32-byte hash committing to it. The validator answers with a score from 0 to 100, a URI to its evidence, a hash of its response and an optional tag such as valid or invalid.
On Network 1, the natural validators are TEE providers that re-run work inside attested hardware, and credential issuers: when a credential about an agent or operator with an ERC-8004 agentId is published, it can be mirrored as a validation response whose request hash is the credential's digest. The credential remains the source of truth; the registry entry makes it visible to ERC-8004 tools.
Building calldata with the CLI
The tenzro erc8004 commands build ABI calldata for each registry call. Every encoder is also available as an open JSON-RPC method (for example tenzro_erc8004EncodeFeedback). You then send the calldata in a transaction signed by the agent's own account.
Register an agent with its agent URI:
tenzro erc8004 encode-register-with-uri --agent-uri https://agents.example.org/translator.jsonRate an agent after a job:
tenzro erc8004 encode-feedback \
--subject-agent-id 42 \
--rating 90 \
--context-uri https://example.org/jobs/7781Respond to feedback, or revoke feedback you gave:
tenzro erc8004 encode-append-response --agent-id 42 --feedback-id 0x... --response-uri https://example.org/reply
tenzro erc8004 encode-revoke-feedback --agent-id 42 --feedback-id 0x...Ask a validator to check work, and answer as the validator:
tenzro erc8004 encode-validation-request \
--validator-address 0x... \
--agent-id 42 \
--request-uri https://example.org/work/7781 \
--request-hash 0x...
tenzro erc8004 encode-validation-response \
--request-hash 0x... \
--response 100 \
--response-hash 0x... \
--response-uri https://example.org/evidence/7781 \
--tag validRead records back with encode-get, encode-get-feedback, encode-get-feedback-count and encode-get-validation, and decode return data with decode-get and decode-get-metadata. Add --format json to any command for machine-readable output.