skills/t2000-save/SKILL.md
Deposit USDC or USDsui into savings to earn yield on Sui via NAVI Protocol. Use when asked to save money, earn interest, deposit to savings, "swap and save" a non-USDC token, or put funds to work. Not for sending to other addresses — use t2000-send for that.
npx skillsauth add mission69b/t2000-skills t2000-saveInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Deposit USDC or USDsui into savings to earn yield on NAVI Protocol. Funds remain non-custodial and withdrawable at any time. USDsui is permitted as a strategic exception (v0.51.0+) because it has its own NAVI pool, often at a different APY than USDC. Every other token (GOLD, SUI, USDT, USDe, ETH, NAVX, WAL) is not saveable — swap to USDC or USDsui first.
t2000 save <amount> [--asset USDC|USDsui]
t2000 save all [--asset USDC|USDsui]
# Examples:
t2000 save 80 # 80 USDC (default)
t2000 save 80 --asset USDsui # 80 USDsui
t2000 save all # full USDC balance (minus $1 gas reserve)
t2000 save all --asset USDsui # full USDsui balance (minus 1.0 reserve)
save all: deposits full available balance of the chosen asset minus 1.0 of that asset for safety--asset defaults to USDC when omitted✓ Gas manager: $1.00 USDC → SUI [only shown if auto-topup triggered]
✓ Saved $XX.XX <asset> to best rate
✓ Current APY: X.XX%
✓ Savings balance: $XX.XX <asset>
Tx: https://suiscan.xyz/mainnet/tx/0x...
t2000 supply is an alias for t2000 saveIf the user wants to save a token that's not USDC or USDsui — GOLD, SUI, USDT, USDe, ETH, NAVX, WAL — the agent must swap first, then save. The right flow depends on the consumer:
Emit BOTH tool_use blocks in the SAME assistant turn. The engine's
permission gate compiles them into ONE Payment Intent: the swap's
received coin handles off as the save's input via coin-ref inside the
same PTB. Atomic — both succeed or both revert. User signs once.
[ASSISTANT TURN — emit in parallel]
tool_use: swap_execute({ from: "SUI", to: "USDC", amount: 1.0 })
tool_use: save_deposit({ amount: <swap_received>, asset: "USDC" })
Before emitting, always preview to the user:
swap_quote)Do NOT call swap then save in separate turns — that loses atomicity and exposes the user to price drift between the legs.
Do NOT auto-decide for the user. If they say "save 10 SUI", confirm the intent: "That requires swapping ~10 SUI to ~$XX USDC first, then depositing. Proceed?" Some users want to hold SUI.
The CLI doesn't support Payment Intent bundling. Run two commands:
t2000 swap 1.0 SUI to USDC
t2000 save all
Each command prices against on-chain state at the moment of execution, so there's small price drift between them. For large amounts ($1k+), prefer the agent path which bundles into one Payment Intent.
GOLD, SUI, USDT, USDe, ETH, NAVX, WAL — none of these have NAVI lending
pools today, so they can't be saved directly. Must swap to USDC or
USDsui first. This is enforced by the SDK's assertAllowedAsset('save', asset) allow-list — calling save_deposit({ asset: 'SUI' }) returns
UNSUPPORTED_ASSET.
development
Swap tokens on Sui via Cetus Aggregator (20+ DEXs, best-route across SUI, USDC, USDsui, USDT, USDe, ETH, GOLD, NAVX, WAL, vSUI, and more). Use when asked to swap, trade, convert, exchange, or "turn X into Y". Do not use for sending — use the t2000-send skill for transfers.
tools
Set up a t2000 Agent Wallet end-to-end on the user's machine. Use when the user says "set up t2000", "install the wallet", "create my Agent Wallet", "connect t2000 to Claude / Cursor", or pastes a one-prompt install URL. Covers wallet creation, optional spending limits, and MCP wiring. Read this first when bootstrapping a new user; the other skills assume this has run.
development
Discover MPP services payable via `t2 pay`. Use when the user asks "what can I pay for?", "what AI models are available?", "show me the service catalog", "is there a weather API?", or any other discovery question. Pairs with the t2000-pay skill (discovery first, then pay).
data-ai
Rebalance the wallet to a target allocation by executing multiple swaps in one atomic Payment Intent. Use when asked to rebalance, adjust allocation, "shuffle my positions", or move from one set of holdings to another. Every leg prices against the same on-chain snapshot — no cross-leg slippage drift; user signs once.