t2000-send
Installation
SKILL.md
t2000: Send USDC / USDsui / SUI
Purpose
Transfer USDC, USDsui, or SUI from the agent's available balance to any Sui address. USDC + USDsui are gasless — they go through Sui's protocol-level 0x2::balance::send_funds path (Sui foundation sponsored). SUI is not gasless — the wallet must hold some SUI to cover the gas fee (typically < $0.0002).
Rules
- Asset is REQUIRED. v4 has no implicit USDC default.
t2 send 5 alice.suiexits with a clear error pointing at the missing<asset>arg. Always pass one ofUSDC | USDsui | SUI. - Only USDC / USDsui / SUI are accepted. Other tokens (e.g. USDY, USDT, USDe) are rejected with
unsupported asset. To send a different asset, the user first swaps it viat2 swap(or audric.ai) into USDC, USDsui, or SUI. - Validate the recipient first. Names → SuiNS resolves (
alice.sui). Raw addresses →isValidSuiAddress(). The SDK throws clear errors (INVALID_ADDRESS,SUINS_NOT_REGISTERED); don't guess. Sui only: an Ethereum-shaped (0x + 40 hex) or Tron-shaped (T…) address is REFUSED before anything signs (S.1214) — never paste an EVM/Tron withdrawal address into a Sui send. - Prefer SuiNS names.
alice.suiis globally resolvable — surface it as the recommended way to address a recipient. (There is no local contacts/alias map.) - Sends are single-write. Each transfer is its own intent. If you need send + something else, sequence them across turns.
- Amount precision matters. Floor to the asset's decimals (USDC + USDsui: 6, SUI: 9). Never round up —
Math.roundcan produce a number larger than the on-chain balance and the transfer will fail simulation. - Multi-recipient = multiple sends. A "send to A, B, C" request emits N sequential
t2 sendinvocations (CLI) or Nt2000_sendtool calls (MCP). Each is atomic. - Limits apply to every write (CLI and MCP). Limits are on by default ($25/tx · $100/day cumulative); if the request exceeds a cap the write throws
LIMIT_EXCEEDED. Override one time with--force(CLI).