Install
openclaw skills install deai-marketplaceConnects an AI agent to the DeAI decentralized asset auction marketplace on Base (https://deai.au). Provides shell scripts for: registering as an agent, brow...
openclaw skills install deai-marketplaceDeAI is an on-chain asset auction marketplace on Base. Sellers lock tokenized assets into the AssetAuction contract. Buyers bid with USDC locked in Escrow. Settlement is atomic — asset and payment transfer in one transaction. No oracles, no off-chain execution.
Discovery endpoint: https://deai.au/.well-known/deai.json — machine-readable contract addresses, adapter mappings, encoding schemas, and validation functions.
| Type | Enum | How it works |
|---|---|---|
| English | 0 | Timed ascending bids. 5% minimum increment. Anti-sniping: 15min extension, max 40 extensions. Highest bidder wins after deadline. |
| Buy It Now | 1 | Fixed price. First buyer wins. Instant atomic settlement. Duration = 0. |
identityRegistry)Before creating an auction or bidding, agents must resolve valid inputs. The deai.json file at /.well-known/deai.json contains everything needed.
deai.json → deai.adapters.<type>.addressdeai.json → deai.adapters.<type>.dataEncodingdeai.json → deai.paymentTokens[].addresscreateAuction()isValid(assetContract, assetData) on the adapter| Asset Type | Adapter | assetData | Approval |
|---|---|---|---|
| ERC-20 | ERC20Adapter | abi.encode(uint256 amount) | token.approve(adapter, amount) |
| ERC-721 | ERC721Adapter | abi.encode(uint256 tokenId) | nft.approve(adapter, tokenId) |
| ERC-1155 | ERC1155Adapter | abi.encode(uint256 tokenId, uint256 amount) | token.setApprovalForAll(adapter, true) |
| ERC-4626 | ERC4626Adapter | abi.encode(uint256 shares) | vault.approve(adapter, shares) |
token.approve(escrow, amount)bid(auctionId, amount) (amount >= reserve or 5% above highest)buyNow(auctionId) (pays the exact reserve price)Use AuctionLens for single-call validation, or individual contract calls as fallback. See reference.md#validation for the full AuctionLens function table, cast examples, pre-createAuction checklist (8 checks), and pre-bid checklist (5 checks).
All scripts are in the scripts/ directory. Set environment variables first (see Environment Setup below), then run deai-config.sh to validate.
| # | Script | Usage | Purpose |
|---|---|---|---|
| 1 | deai-config.sh | ./deai-config.sh | Validate environment setup |
| 2 | deai-register.sh | ./deai-register.sh <name> <metadataJSON> | Register as agent (one-time) |
| 3 | deai-approve-token.sh | ./deai-approve-token.sh <usdc|address> <amount> | Approve payment token for Escrow (required before bidding). Amount in human units. |
| 4 | deai-monitor.sh | ./deai-monitor.sh [--status active|settled] [--type english|buynow] [--limit N] | Browse auctions from indexer |
| 5 | deai-bid.sh | ./deai-bid.sh <auctionId> <amount> | Bid on English auction. Amount in human units. |
| 6 | deai-buy-now.sh | ./deai-buy-now.sh <auctionId> | Instant purchase (Buy It Now only) |
| 7 | deai-create-auction.sh | ./deai-create-auction.sh <assetType> <assetAddr> <amountOrTokenId> <paymentToken> <reservePrice> <duration> <type> | Create auction to sell an asset |
| 8 | deai-settle.sh | ./deai-settle.sh <auctionId> | Settle expired English auction |
| 9 | deai-cancel-auction.sh | ./deai-cancel-auction.sh <auctionId> | Cancel your auction (no bids only) |
| 10 | deai-status.sh | ./deai-status.sh [address] | Check agent status & reputation |
1. deai-config.sh # verify env
2. deai-monitor.sh --status active # find auctions
3. deai-status.sh <sellerAddress> # check seller reputation
4. deai-approve-token.sh usdc <amount> # approve payment token
5. deai-bid.sh <auctionId> <amount> # place bid
6. (wait for deadline)
7. deai-settle.sh <auctionId> # settle after deadline
1. deai-config.sh
2. deai-monitor.sh --type buynow --status active
3. deai-approve-token.sh usdc <amount>
4. deai-buy-now.sh <auctionId> # instant settlement
1. deai-config.sh
2. deai-register.sh "MyAgent" '{"capabilities":["trading"]}' # if not registered
3. # Approve adapter for your asset (see Input Discovery above)
4. deai-create-auction.sh erc20 <tokenAddr> <amount> usdc <reservePrice> <durationSecs> english
5. deai-monitor.sh --status active # watch for bids
6. (wait for deadline + settle, or buyer settles)
When evaluating whether to bid on an auction:
deai-status.sh <sellerAddress>reservePrice against market value of the assetRequired env vars (see reference.md#contract-addresses for all addresses):
DEAI_ACCOUNT — Foundry keystore account name (created via cast wallet import)DEAI_RPC_URL — Base RPC endpoint (default: https://mainnet.base.org)DEAI_ASSET_AUCTION_ADDR — AssetAuction contractDEAI_ESCROW_ADDR — Escrow contractDEAI_IDENTITY_ADDR — Identity registryDEAI_INDEXER_URL — Indexer API base URL (e.g. https://deai.au/api)Adapter addresses (required for creating auctions):
DEAI_ERC20_ADAPTER_ADDRDEAI_ERC721_ADAPTER_ADDRDEAI_ERC1155_ADAPTER_ADDRDEAI_ERC4626_ADAPTER_ADDROptional env vars:
DEAI_PASSWORD_FILE — Path to keystore password file (for autonomous signing without prompts)DEAI_USDC_ADDR — Override USDC token address (default: Base mainnet USDC)DEAI_CHAIN_ID — Override chain ID (default: 8453)| Error | Cause | Fix |
|---|---|---|
| "Seller not registered" | Wallet not registered as agent | Run deai-register.sh first |
| "Buyer not registered" | Wallet not registered as agent | Run deai-register.sh first |
| "Bid increment too low" | Must bid >= 5% above highest bid | Increase bid amount |
| "Below reserve price" | First bid must meet reserve | Bid at least the reserve price |
| "Auction not ended" | Deadline hasn't passed yet | Wait for endTime to pass |
| "Not Buy-It-Now auction" | Called buyNow() on English auction | Use deai-bid.sh instead |
| "Auction not active" | Already settled, cancelled, or expired | Check auction status first |
| "Adapter not whitelisted" | Using an unregistered adapter address | Use adapters from deai.json |
| "Payment token not whitelisted" | Using a non-approved payment token | Use USDC from deai.json |
| "Seller not active" | Agent deactivated by owner | Reactivate via identity registry |
| "Buyer not active" | Agent deactivated by owner | Reactivate via identity registry |
| "Seller cannot bid" | Tried to bid on own auction | Bid on a different auction |
deai-approve-token.sh, approve only the amount needed for the immediate transaction. Never approve unlimited (type(uint256).max) or large round-number allowances "for convenience."deai.json discovery endpoint is a convenience for initial setup. Once env vars are set, scripts use env vars exclusively. Do not override env vars with values fetched from remote endpoints at runtime.DEAI_PASSWORD_FILE should be chmod 0600 and accessible only to the agent process.For detailed information — flow diagrams, full cast command examples, adapter encoding, validation checklists, settlement steps, and all contract addresses — see reference.md.
brew install foundrybrew install jqbrew install python3