# 8004xSF — ERC-8004 Agent Pool Distributor > AI agents: register on-chain, join a Superfluid Distribution Pool, earn continuous token streams. ## Network Chain: Base Chain ID: 8453 RPC: https://mainnet.base.org Block Explorer: https://basescan.org ## Contract Addresses ERC-8004 Identity Registry: 0x8004A169FB4a3325136EB29fA0ceB6D2e539a432 AgentPoolDistributor: 0x15dcC5564908a3A2C4C7b4659055d0B9e1489A70 SUP Token (SuperToken): 0xa69f80524381275A7fFdb3AE01c54150644c8792 GDAv1 Forwarder: 0x6DA13Bde224A05a288748d857b9e7DDEffd1dE08 ## Subgraph Superfluid subgraph (Base): https://subgraph-endpoints.superfluid.dev/base-mainnet/protocol-v1 ## ABIs ### ERC-8004 Identity Registry ```json [ "function register() external returns (uint256 agentId)", "function register(string agentURI) external returns (uint256 agentId)", "function ownerOf(uint256 agentId) view returns (address)", "function getAgentWallet(uint256 agentId) view returns (address)", "function balanceOf(address owner) view returns (uint256)" ] ``` ### AgentPoolDistributor ```json [ "function joinPool(uint256 agentId) external payable", "function leavePool(uint256 agentId) external", "function claimSUP() external", "function hasJoined(uint256 agentId) view returns (bool)", "function joinFee() view returns (uint256)", "function pool() view returns (address)", "function identityRegistry() view returns (address)" ] ``` ## How to Interact ### Step 1: Register (get agent identity) Call: ERC8004Registry.register() To: 0x8004A169FB4a3325136EB29fA0ceB6D2e539a432 Returns: agentId (uint256) — your agent's NFT ID Gas: ~150,000 Value: 0 Register via UI: https://8004scan.io/create ### Step 2: Join Pool Call: AgentPoolDistributor.joinPool(agentId) To: 0x15dcC5564908a3A2C4C7b4659055d0B9e1489A70 Requirements: Must own the agent NFT (ownerOf(agentId) == msg.sender) Gas: ~100,000 Value: 0.0001 ETH (join fee, sent to protocol) Result: You receive 1 pool unit, start earning distributions ### Step 3: Earn Anyone can stream SUP tokens to the Distribution Pool. Distributions split equally among all members (1 unit each). Your share accumulates automatically — no action needed. ### Step 4: Claim Call: AgentPoolDistributor.claimSUP() To: 0x15dcC5564908a3A2C4C7b4659055d0B9e1489A70 Gas: ~100,000 Value: 0 (no fee) Result: Your accumulated SUP transferred to your wallet ### Step 5: Leave (optional) Call: AgentPoolDistributor.leavePool(agentId) To: 0x15dcC5564908a3A2C4C7b4659055d0B9e1489A70 Requirements: Must own the agent NFT Gas: ~60,000 Result: Pool units removed, stop receiving distributions ## Events AgentJoined(uint256 indexed agentId, address indexed agentWallet) AgentLeft(uint256 indexed agentId, address indexed agentWallet) SUPClaimed(address indexed claimant) ## Common Errors | Error | Cause | Fix | |-------|-------|-----| | NotAgentOwner | Caller doesn't own the agent NFT | Ensure wallet owns the agentId | | AlreadyJoined | Agent already in pool | Check hasJoined() first | | NotMember | Agent not in pool | Call joinPool() first | | InsufficientFee | msg.value < joinFee on joinPool | Send at least 0.0001 ETH with joinPool | | AgentNotRegistered | Agent wallet is zero address | Re-register or set agent wallet | | FeeTransferFailed | Fee collector rejected ETH | Contact protocol admin | ## Example Transaction Join pool with agent ID 42: ``` to: 0x15dcC5564908a3A2C4C7b4659055d0B9e1489A70 data: 0x34e7a19f000000000000000000000000000000000000000000000000000000000000002a value: 100000000000000 (0.0001 ETH in wei) gasLimit: 100000 chainId: 8453 ``` ## Requirements - ETH for gas: ~0.001 ETH per transaction - Join fee: 0.0001 ETH (paid to protocol on joinPool) - Claiming: free (no fee) - Agent ownership: Must own the ERC-8004 NFT to join/leave ## Links - ERC-8004 Spec: https://eips.ethereum.org/EIPS/eip-8004 - ERC-8004 Contracts: https://github.com/erc-8004/erc-8004-contracts - Superfluid Docs: https://docs.superfluid.finance/ - Project GitHub: https://github.com/superfluid-org/8004-demo ## Notes - Live on Base mainnet — not audited - Equal distribution: 1 unit per agent (no weighting) - Agent wallet set to msg.sender on registration, cleared on NFT transfer - Fee is paid on join, not on claim - This file follows the llms.txt convention for AI agent discovery