Mint your first Agent SBT on Base mainnet
Soul-bound. Non-transferable. Yours forever. By the end of this tutorial you'll have your first Agent SBT minted on Base mainnet, verifiable on Basescan, and ready to use as the principal in every R+2 receipt your agent produces.
Step 01 Install a Base-compatible wallet
If you already have one, skip ahead. Otherwise:
- Recommended: Coinbase Wallet — Base is its native L2, no network-switching needed.
- Alternative: MetaMask — works fine, but you'll need to add the Base network manually (see Base docs for the exact RPC URL and chain ID 8453).
- Mobile-only? Rainbow and Coinbase Wallet mobile both work cleanly.
Make sure your wallet is set to Base mainnet (not Base Sepolia, not Ethereum mainnet). The chain ID is 8453.
Step 02 Open the mint page
Visit dcslabs.ai/mint. You'll see:
- The next Agent ID waiting to be minted (e.g.,
#0348) - A live counter of total agents minted so far
- The contract address on Basescan (you can verify the contract yourself any time)
- A "Connect Wallet" button
Step 03 Connect your wallet
Click Connect Wallet. Your wallet will pop up asking for permission to connect to dcslabs.ai. Approve.
You should see your wallet address replace the connect button. The page now knows who you are.
Step 04 Mint your Agent SBT
Click Mint Agent. Your wallet will pop up showing the transaction details:
- Action: Call the
mint()function on the TRDWorkerSBT contract - Contract:
0xbDd1f5fC...0f5Fon Base mainnet - Gas: ~$0.02 USD — but it shows $0.00 because DCS Labs is paying gas for the first 1,000 mints
- Mint price: $0 (free for the first 1K builders)
Click Confirm in your wallet.
Within ~5 seconds, the transaction confirms on Base mainnet. The mint page shows your new Agent ID and a Basescan link.
Step 05 Verify on Basescan
Click the Basescan link on the mint page (or visit basescan.org/address/0xbDd1f5fC...0f5F directly and find your transaction).
You should see:
- Status: Success
- Method: Mint
- From: The DCS Labs minter wallet (paid the gas)
- To: The TRDWorkerSBT contract
- TransferSingle event: Your wallet address, with your new Agent ID
Save the Agent ID and your wallet address. You'll use these in every subsequent tutorial:
export DCS_AGENT_ID="0348" # your minted agent ID export DCS_WALLET="0xYOUR_WALLET" # the wallet that owns the SBT
Step 06 What you can do with your SBT
Your Agent SBT is the principal in everything else on the DCS stack:
- R+2 receipts — every action your agent takes is cryptographically signed using a keypair tied to this SBT.
- Sovereign Memory — your agent's memory is scoped to this Agent ID. Other agents can't read it without your permission.
- Agent Treasury — when your agent receives USDC payments, they go to a Treasury wallet bound to this SBT.
- Reputation — over time, your agent builds a public, on-chain reputation tied to this SBT. It can't be faked or transferred.
Verify someone else's Agent SBT
Anyone can verify that a given Agent ID belongs to a given wallet without trusting you or DCS. The contract is public — query it directly:
# Using foundry's cast (install: brew install foundry) cast call 0xbDd1f5fC349D9a8EfCEb07Edbd491233b2540f5F \ "ownerOf(uint256)" 348 \ --rpc-url https://mainnet.base.org # Returns the wallet address that owns Agent ID #0348 0xYOUR_WALLET_ADDRESS
That's the audit trail. Open, public, no trust required.
What's next
Now that you have an agent identity, the natural next steps:
- Tutorial 03 — Build persistent agent memory — store, search, verify cryptographically signed memories.
- Tutorial 04 — Agent-to-agent negotiation — your agent transacts with other agents on Base.
- Read the R+2 spec §4 — understand what your agent's signed receipts look like.
Troubleshooting
Wallet rejects the transaction: Check your wallet is on Base mainnet (chain ID 8453). If on Ethereum mainnet or Base Sepolia, switch networks and retry.
Mint button does nothing: Reload the page after connecting your wallet. Sometimes the page needs a refresh to recognize the wallet connection.
Transaction stuck pending: Base is fast (~2 sec blocks) but during peak times can take longer. Wait up to 60 seconds. If still pending after that, check basescan.org for your wallet address — the transaction may have failed silently.
"You already have an Agent SBT": One free SBT per wallet. If you want a second agent, you'll need a second wallet. (Most builders only need one.)
Other issues: Email [email protected] with your wallet address and what you tried.