# Agent Pool V2 — AI operation guide V2 is a new contract. Never substitute the old pool address. Read `https://agentpoolapp.com/api/v2/config`: if `configured` is false, no V2 subscription destination is available. Use the returned address and chain ID, then verify them on-chain. Chain 97 is testnet only. Agentic Wallet does not support this testnet; use an explicitly supported test signer. Mainnet acceptance with Agentic Wallet is a separate final check. ABI: https://agentpoolapp.com/agent-pool-v2-abi.json ## Subscription 1. The user signs in to X and proves ownership of the linked Agent wallet on the official website. One X account, wallet and Agent ID map to one binding. X age must be at least 90 days, with more than 50 followers. 2. From the signed-in browser, request `POST /api/v2/qualification` with JSON `{"shares":1}` (1–3). The service uses its own verified profile and binding; do not supply follower counts or another wallet. The server reuses the X profile verified during the current one-hour login session. Completing wallet binding automatically updates subscription eligibility; a second X login is not required while this session remains valid. Expired sessions require sign-in again. Transaction credentials still expire after five minutes. 3. The response contains `qualification`, `signature`, `expires` and a complete unsigned `transaction` with `chainId`, `from`, `to`, decimal wei `value` and hex `inputData`. The page copies these into instructions. No X session cookie, OAuth token or issuer private key belongs in the AI prompt. 4. Decode calldata as `subscribe(Qualification,signature)`. Verify the destination, chain, active wallet and exact payment. Simulate from the actual wallet, display the preview and gas, and wait for explicit user confirmation. Do not execute a failed simulation or an expired credential. Refresh from the official browser if needed. Submissions are 0.01 BNB increments, at most 0.03 BNB per binding. The hard cap is 20 BNB: the final successful subscription reaching it opens trading atomically, before the deadline if full. No oversubscription is retained. If the final order exceeds remaining capacity, accept only the remainder and automatically return excess BNB to the original wallet in the same transaction. A rejecting wallet retains a claimable refund, payable via claimRefund or pushRefunds without duplicate payment. The original transaction value is the submitted amount; cost basis and contribution limits use the actual accepted amount. Competing orders execute in chain order; a preview does not reserve capacity. Once full, later orders revert entirely. Show submitted, estimated accepted and estimated returned amounts, then simulate before signing. At the 24-hour deadline, if not already full: below 16 BNB cancels and refunds; 16 BNB or more opens on settlement, burning unsold presale and matching inventory. Deployment fixtures may use reduced targets/duration and historical pools retain old rules: read actual target/startsAt/deadline and confirm deployment version. ## Trading and other actions All token values use 18 decimals. Deadlines use Unix seconds. Ordinary buying and selling require Agent ID after launch without X login. Only the fixed immutable Dev may buy after launch without Agent ID; Dev still cannot sell, transfer or bypass presale qualification. Ordinary transfer/approve are disabled. The designated Dev cannot sell. | Action | Read / preview | Transaction | |---|---|---| | Buy | `quoteBuy(grossWei)` | `buy(minUnits,validUntil)` with native value | | Sell | `availablePosition(wallet)`, `quoteSell(wallet,units)` | `sell(units,minFinalReceiptWei,validUntil)` | | Dust exit | `quoteDustExit(wallet)`; entire position must have zero AMM gross quote | `exitDust(minFinalReceiptWei,validUntil)`; explicit user confirmation, receipt may be zero | | Activate | `availablePosition`, `balanceOf`, `entitlement` | `claimAllocation()` | | Refund | `state()`, `claimableRefund(wallet)` | `claimRefund()` from original wallet | | Settle | `state()`, `deadline()` and latest block timestamp | `finalize()` only after expiry | `availablePosition` includes presale tokens not yet activated; `balanceOf` does not. First trading action activates allocation automatically. Never report zero holdings solely from `balanceOf`. `quoteSell.receipt` is the final BNB amount after sell tax, profit deduction and actual available compensation. Apply the user-approved tolerance to that final amount. Gas is extra. Dev withdrawals and intervening transactions can reduce the receipt; a stale quote can revert. Refresh rather than silently lowering the user's minimum. Dust exit is opt-in, not an automatic deletion during buying. It preserves the consumed FIFO costs and mature-loss calculation. It can release 64 blocked lots even when the eventual receipt is zero. Show this clearly before requesting confirmation. Do not use dust exit for a nonzero-gross position. Trade tax is 1%, split 80% to compensation and 20% to Dev. Whole-sale FIFO net profit pays 20%; eligible net losses receive 20%, capped by available reserves. Presale lots mature five minutes after actual launch; later lots mature five minutes after buying. Dev can withdraw the entire compensation reserve. Never promise unconditional reimbursement. ## Wallet signing For mainnet Agentic Wallet, check Developer Mode first. Run contract-call preview with the exact `from`, `to`, `value` and `inputData`; present its simulation and risks; wait for explicit confirmation; execute only the successful preview's requestId. Never ask for private keys. The website prepares transactions and does not connect or sign for the wallet. ## Refunds and automation Reaching a timestamp does not itself send a transaction. A keeper or any caller must trigger finalization, then refund batches of at most 32 to the recorded original wallets. Refusing recipients retain their claim; successful payments cannot be repeated. Original wallets retain self-service access. If an expired pool is still Funding, settle first, then read its final Trading/Refunding state. Never assume every expired pool should refund. ## 中文要点 必须核对新版配置与链上参数,不得向旧 CA 认购。通过浏览器获取限时资格凭证,AI 核对绑定钱包、链、金额与 calldata,模拟后等用户确认。过期重新生成,不转交登录 Cookie 或私钥。持仓以 availablePosition 为准;卖出最低到账必须包括税、盈利扣款和实际赔付。极小仓位退出需要单独确认,原成本和成熟赔付照常结算,实际到账可能为零。退款原路执行,已成功领取不能重复领取。 ## Deployment identity Token name: agent pool. Symbol: AP. Formal Dev: 0xa52a7281d0a3eb39d171725291926de7a051457d. Existing historical test pools and the old mainnet pool retain their original deployed metadata, Dev and rules. The Dev buy-only exception applies to this new mainnet contract; existing older pools retain their original permissions. ## Final acceptance update The current 1% candidate passed isolated short-window chain-97 acceptance for early sellout with change refund, exact 80% deadline launch, underfunded refunds, mature compensation, profit deduction and Dev buy-only behavior. Historical 24-hour testing remains paused. The exact mainnet creation input and runtime have been verified against the frozen release. Real Agentic Wallet acceptance remains pending; historical test addresses must not be used for this mainnet sale. ## Mainnet deployment Chain ID: 56. Official pool: 0x77e30c984C1b553957FD7685aab5a6Fe3c6438D9. Deployment block: 132429326. Starts at Unix 1794160800 (2026-11-09 02:00 Asia/Shanghai); deadline 1794247200 (2026-11-10 02:00 Asia/Shanghai). Qualifier: 0x778e8C8fBe19a901851fE1CF79126351464EfE20. Fixed Dev: 0xa52a7281d0a3eb39d171725291926de7a051457d. Buy/sell tax: 1%. Earlier testnet deployment references are historical only. Verify /api/v2/config and on-chain values before every operation. ## Agentic Wallet binding signature format Sign only the current server-issued binding challenge shown by the signed-in official website. Preserve its domain, primaryType Binding, wallet, X ID, nonce and expiry. With baw CLI, signType is EIP712, not Binding. For sign-message preview, serialize a complete JSON-RPC request as the message argument: {"method":"eth_signTypedData_v4","params":[wallet,JSON.stringify(typedData)]}. The second params entry is a JSON string. Check Developer Mode first, show the successful preview and risks, obtain explicit user confirmation, then execute only that requestId. Paste the complete result JSON including signature and signatureRecovery into the website. Never rename types to Permit, switch to personal_sign, or bypass a rejected preview. If rejected, preserve the original error code/name/message and command arguments for diagnosis.