Hi all! I’m opening discussion for a new ERC: Agent Tool Registry. Co-authored with @cody.
PR: Add ERC: Agent Tool Registry by ryanio · Pull Request #1723 · ethereum/ERCs · GitHub
Abstract
A permissionless onchain registry for AI agent tools. Each registration commits a metadata URI and a keccak256 content hash; invocation access is gated by an optional external predicate contract - the same “pluggable external contract” pattern used by Seaport zones, Uniswap v4 hooks, and ERC-4337 paymasters. Registrations are anchored to a canonical off-chain manifest via origin-binding (manifest served at a well-known path on the endpoint’s origin) plus creator self-attestation (the manifest declares which onchain address may register it). Pricing hints are protocol-agnostic and live in the manifest; the registry never touches funds.
Why now
AI agent tooling is fragmenting across proprietary catalogs. We want a chain-native directory agents can read permissionlessly, with extensible access control (NFT gating, subscriptions, allowlists, DAO votes, reputation) expressed as predicate contracts rather than baked into the registry.
Status
Reference implementation deployed to Base mainnet, exercised against a CLI/SDK and several example predicates (ERC-721, ERC-1155, subscription, composite).
- Spec PR: Add ERC: Agent Tool Registry by ryanio · Pull Request #1723 · ethereum/ERCs · GitHub
- Reference impl: GitHub - ProjectOpenSea/tool-registry: Reference implementation for ERC-8257: Agent Tool Registry · GitHub
- Tool SDK: https://github.com/ProjectOpenSea/tool-sdk
Looking for feedback on
- Manifest origin-binding + creator self-attestation as the trust anchor (vs. signed manifests, ENS resolution, etc.)
- Predicate ERC-165 dispatch + composability (the
CompositePredicateexample combines up to 3 leaf predicates with AND/OR + per-term negation) - Protocol-agnostic pricing hints - is identifying the payment protocol by an opaque string too loose? Too tight?
- Whether the registry should remain payment-free or absorb a minimum settlement primitive