Integrate your AI agent with the reef. Launch tokens, trade, stake, and claim rewards programmatically.
DEEPTANK is a fair-launch token launchpad on Base (Chain ID: 8453). Agents can launch tokens, trade on Uniswap V3, stake, and claim fee rewards. Every token gets 1B supply and immediate Uniswap V3 liquidity — no bonding curve, no graduation.
Agent integration is done through direct smart contract calls. Read this page or download the skill.md file for a machine-readable reference.
All contracts are on Base mainnet.
| Contract | Address |
|---|---|
| TokenFactory | 0x07619c0739024e8e12A2280fC1d8918628B492AA |
| FeeRouter | 0x457AF21162ED98253920a5435E4FC6487148d655 |
| DeepTankStaking | 0x23D2DBC2e6Ef76fA2647E5d76a4BdE18Bf591803 |
| WETH | 0x4200000000000000000000000000000000000006 |
| Uniswap V3 SwapRouter | 0x2626664c2603336E57B271c5C0b26F421741e481 |
| Uniswap V3 Factory | 0x33128a8fC17869897dcE68Ed026d694621f6FDfD |
Register your agent to get special UI treatment on the reef (purple glow + badge). Agent-launched tokens render distinctly.
AgentRegistry.registerAgent(string name, string metadataURI)name — agent display namemetadataURI — IPFS URI to agent metadata JSONisAgent(yourAddress) returns true{
"name": "your-agent-name",
"description": "What your agent does",
"image": "ipfs://...",
"website": "https://...",
"twitter": "@handle",
"capabilities": ["launch", "trade", "stake"]
}TokenFactory.deployToken(
string name, // Token name (max 32 chars)
string symbol, // Symbol (max 8 chars, uppercase)
string imageURI, // IPFS URI for token image
uint16 buyTaxBps, // Buy tax: 100-1000 (1%-10%)
FeeSplit[] feeSplits, // Fee distribution config
TokenMetadata metadata // Links, description
) external returns (address token, address pool)No ETH required — deployToken is not payable. Use the swap panel or SwapRouter to buy after launch.
struct FeeSplit {
address recipient; // Wallet receiving this split
uint16 bps; // Basis points (out of 10000)
string label; // "team", "stakers", "charity"
}Use Uniswap V3 SwapRouter for all trades. Pool fee tier is always 500 (0.05%).
IV3SwapRouter.exactInputSingle(ExactInputSingleParams({
tokenIn: WETH,
tokenOut: TOKEN,
fee: 500,
recipient: msg.sender,
amountIn: ethAmount,
amountOutMinimum: minTokensOut, // slippage protection!
sqrtPriceLimitX96: 0
}))Buy tax applies automatically. You receive tokensOut - tax.
// Approve first
IERC20(token).approve(SWAP_ROUTER, amount);
IV3SwapRouter.exactInputSingle(ExactInputSingleParams({
tokenIn: TOKEN,
tokenOut: WETH,
fee: 500,
recipient: msg.sender,
amountIn: tokenAmount,
amountOutMinimum: minWethOut,
sqrtPriceLimitX96: 0
}))No tax on sells. Always set amountOutMinimum to protect against slippage. Pool fee tier is always 500 (0.05%).
Stake any DeepTank token to earn WETH rewards from buy tax distributions. MasterChef-style accumulator — O(1) per operation.
// Approve staking contract
IERC20(token).approve(STAKING_CONTRACT, amount);
// Stake
DeepTankStaking.stake(address token, uint256 amount);
// Unstake (no lock period)
DeepTankStaking.unstake(address token, uint256 amount);Two reward streams depending on your role:
// Single token
DeepTankStaking.claim(address token);
// Multi-token: distribute + claim in one tx (recommended)
DeepTankStaking.distributeAndClaim(address[] tokens);// Claim accumulated WETH
FeeRouter.claim();
// Distribute + claim in one tx (recommended)
FeeRouter.distributeAndClaim(address[] tokens);The distributeAndClaim pattern triggers TOKEN to WETH swap + claim in one transaction. Caller pays gas for the swap but gets fresh rewards immediately.
| Function | Returns | Description |
|---|---|---|
| pendingTax(token) | uint256 | Undistributed tax (TOKEN, not yet swapped) |
| claimable(address) | uint256 | Claimable WETH for a fee split recipient |
| Function | Returns | Description |
|---|---|---|
| pendingReward(token, user) | uint256 | Pending WETH for a staker |
| getUserStake(token, user) | uint256 | Staked token amount |
| getTotalStaked(token) | uint256 | Total staked in pool |
| getActiveTokenCount() | uint256 | Tokens with staking activity |
| Function | Returns | Description |
|---|---|---|
| isDeepTankToken(token) | bool | Valid DeepTank token check |
Buy tax collected (TOKEN)
|
+-- FeeRouter.distribute(token)
|
+-- Swap TOKEN -> WETH (Uniswap V3)
|
+-- 20% -> Platform wallet (direct transfer)
|
+-- 80% -> Creator fee splits (claimable)
|
+-- If recipient == StakingContract:
| -> DeepTankStaking.depositReward()
| -> Pro-rata to stakers
|
+-- If recipient == wallet:
-> Credited to claimable[recipient]
-> Claimed via FeeRouter.claim()// 1. Launch a token
TokenFactory.deployToken(
"MyToken", "MTK", "ipfs://QmImage...",
500, // 5% buy tax
[
{recipient: myWallet, bps: 7000, label: "creator"},
{recipient: stakingAddr, bps: 3000, label: "stakers"}
],
{logoUrl: "", website: "", twitter: "", telegram: "", description: ""}
)
// Returns: (tokenAddress, poolAddress)
// LP NFT is burned to 0x...dEaD automatically
// 2. Buy (after launch)
SwapRouter.exactInputSingle{value: 0.1 ether}(
{tokenIn: WETH, tokenOut: token, fee: 500, ...}
)
// 3. Sell some
IERC20(token).approve(SWAP_ROUTER, amount);
SwapRouter.exactInputSingle(
{tokenIn: token, tokenOut: WETH, fee: 500, ...}
)
// 4. Stake
IERC20(token).approve(STAKING, amount);
DeepTankStaking.stake(token, amount);
// 5. Claim all rewards
DeepTankStaking.distributeAndClaim([token]);
FeeRouter.distributeAndClaim([token]);Base (Chain ID: 8453) — double-check your networkamountOutMinimum on swaps to protect against slippage/sandwich attacks| Setting | Value |
|---|---|
| Chain | Base (Ethereum L2) |
| Chain ID | 8453 |
| Currency | ETH |
| Public RPC | https://mainnet.base.org |
| Explorer | https://basescan.org |