FEATURES
TabBot: pay anywhere you chat
Tip, send, and split from inside X, Telegram, Discord, and Farcaster. After one setup signature, Tab's executor signs and submits every payment on your behalf, so you never touch gas, never sign per-message, and your balance just moves when you type the command.
How it works (EIP-7702 gasless delegation)
TabBot uses EIP-7702 (the Pectra upgrade, May 2025) plus MetaMask's Delegation Framework to give Tab's executor permission to spend on your behalf within per-tip and per-day caps you set. The whole stack is non-custodial: every spend is bounded by on-chain caveats you signed, and you can revoke at any time.
- Your Tab wallet signs one EIP-712 Delegation per chain (Base, BSC, Ink, Celo). Silent signatures, no popup per chain. The same signature also installs the MetaMask Stateless Delegator on your EOA via a SET_CODE authorization.
- Tab's relayer submits the SET_CODE tx for each chain (you pay zero gas). After it lands, your EOA "has code" per EIP-7702 and Tab can compose tips against it.
- When you /tip in any chat, the bot routes through
/api/bot/seven702/redeem. Tab's executor callsDelegationManager.redeemDelegations, which validates the signature, runs every caveat enforcer, then transfers USDC (or your native asset) to the recipient.
Setup
- Link a platform identity to your Tab handle via
/dashboard/connections(wallet-signed) or the bot's/connectcommand. - Open
/dashboard/tabbotand click Enable gasless tipping. Default caps: $100/tip, $500/day on stables; 0.05 ETH/tip, 0.25 ETH/day; 0.2 BNB/tip, 1 BNB/day; 200 CELO/tip, 1000 CELO/day. Adjust via the cog icon any time. - Use any of the commands below.
Commands
/tip @alice 5 # tip $5 USDC on Base (default) /tip @alice 5 on bsc # tip $5 USDC on BSC /tip @alice 0.05 eth # tip 0.05 ETH on Base /tip @alice 0.05 eth on ink # tip 0.05 ETH on Ink /tip @alice 1 bnb # tip 1 BNB on BSC /tip @alice 100 celo # tip 100 CELO on Celo /send @alice 5 # alias for /tip /pay @alice 5 for lunch # alias with note /split 30 with @a @b @c # split USDC evenly /connect @yourtabhandle # link this platform identity
Discord uses the slash format: /tab tip, /tab send, /tab split, /tab connect.
TabBot tips vs Smart Pay
Two different flows for two different intents. Both gasless, both 7702-powered, but they answer different questions:
- TabBot tip (this page): you specify the asset.
/tip @alice 0.05 ethsends ETH. Alice receives 0.05 ETH, not USDC. Same for BNB, CELO, USDC, etc. Use this for casual peer tips where the asset itself matters. - Smart Pay (dashboard Smart Pay button, agent SDK
tab.pay.smart()): you specify a USD amount. Tab picks the cheapest source asset from your balances and converts to USDC at the recipient. Use this when you want to send a dollar amount regardless of what you hold (e.g. paying a $5 bill or invoice).
Both share the same underlying 7702 delegation. Enabling gasless tipping on the dashboard unlocks both flows. The difference is whether the bot/UI preserves the asset you typed (TabBot tip) or denominates in USD (Smart Pay).
Per-tip and per-day caps
Caveats baked into your signed Delegation enforce both on-chain. The per-day cap is the strict bound. Tab's executor literally cannot exceed it without a fresh signature from you, because MetaMask's ERC20PeriodTransferEnforcer reverts at the contract level. The per-tip cap is enforced off-chain by the bot (no audited per-call enforcer ships in v1.3.0 yet).
Revoke
Click Revoke on /dashboard/tabbot. Tab marks the delegation rows as revoked server-side and the bot stops accepting tips against them immediately. The on-chain SET_CODE stays in place (it's a no-op without an active delegation), so re-enabling later doesn't need another SET_CODE tx.
Reply format
Successful tip:
@alice got 5 USDC from @you (free) TX: 0x…
Tip with note:
@alice got 5 USDC from @you · "thanks for the coffee" TX: 0x…
Recipient not on Tab yet?
The bot replies with a one-click OpenTab deep-link to /dashboard/escrow?handle=…&amount=…&chain=… so the sender can lock funds on-chain that the recipient claims when they sign up.
Anti-spam and replay protection
- The bot includes a
tipId(e.g.telegram:chat:message) with every redeem; the server inserts it intodelegation_redemptionsand rejects duplicates. - The bot pre-validates the per-tip cap before submitting, so a doomed call never costs Tab gas.
- Bot reply messages always include the executor-signed
txhash, verifiable on the chain's explorer. - Every redeem call hits a pre-flight
eth_callsimulation on Tab's side; if any caveat enforcer would revert, the bot replies with the actual revert reason instead of sending a doomed tx.