From t2000-agent-wallet
Send USDC, USDsui, or SUI from the t2000 Agent Wallet to another Sui address. Use when asked to pay someone, transfer funds, send money, tip a creator, or make a payment to a specific Sui address, SuiNS name, or saved contact. Do NOT use for API payments — use the t2000-pay skill for x402-protected services.
How this skill is triggered — by the user, by Claude, or both
Slash command
/t2000-agent-wallet:t2000-sendThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
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).
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).
t2 send 5 alice.sui exits with a clear error pointing at the missing <asset> arg. Always pass one of USDC | USDsui | SUI.unsupported asset. To send a different asset, the user first swaps it via t2 swap (or audric.ai) into USDC, USDsui, or SUI.alice.sui). Raw addresses → isValidSuiAddress(). The SDK throws clear errors (INVALID_ADDRESS, SUINS_NOT_REGISTERED); don't guess.alice.sui is globally resolvable — surface it as the recommended way to address a recipient. (There is no local contacts/alias map.)Math.round can produce a number larger than the on-chain balance and the transfer will fail simulation.t2 send invocations (CLI) or N t2000_send tool calls (MCP). Each is atomic.LIMIT_EXCEEDED. Override one time with --force (CLI).t2 send <amount> <asset> <recipient>
t2 send <amount> <asset> to <recipient> # `to` filler optional
# Examples:
t2 send 5 USDC 0x8b3e...d412 # 5 USDC to a hex address (gasless)
t2 send 5 USDsui alice.sui # 5 USDsui to a SuiNS name (gasless)
t2 send 50 USDC to mission69b@audric # @audric handle (gasless)
t2 send 0.1 SUI 0x8b3e...d412 # 0.1 SUI to a hex address (gas required)
Use --force to bypass a spending limit one time. Use --key <path> to point at a non-default wallet file.
✓ Sent $5.00 USDC → alex.sui (0x8b3e...d412)
Gas: gasless ⚡
Tx: https://suiscan.xyz/mainnet/tx/0xdigest...
For non-gasless sends (SUI), the gas line shows the actual SUI burn:
✓ Sent 0.1000 SUI → 0x8b3e...d412
Gas: 0.000123 SUI
Tx: https://suiscan.xyz/mainnet/tx/0xdigest...
{
"tx": "0xdigest...",
"amount": 5,
"to": "0x8b3e...d412",
"suinsName": "alex.sui",
"gasCost": 0,
"gasCostUnit": "SUI",
"asset": "USDC",
"gasless": true
}
--force.| Error code | Meaning |
|---|---|
INSUFFICIENT_BALANCE | Wallet balance for the chosen asset is less than the requested amount. |
INSUFFICIENT_GAS | SUI sends only — wallet has the asset but not enough SUI for gas. Suggest a swap. |
INVALID_ADDRESS | Recipient is not a valid Sui hex address. |
INVALID_ASSET | Asset is missing or not in the allowlist (USDC / USDsui / SUI). |
SUINS_NOT_REGISTERED | The .sui name isn't registered. |
CONTACT_NOT_FOUND | The name isn't a SuiNS name, an @audric handle, or a saved local contact. |
LIMIT_EXCEEDED | CLI hit a t2 limit set cap. Use --force to override. |
SIMULATION_FAILED | Transaction would fail on-chain (details in the error message). |
The SDK (T2000.resolveRecipient) handles resolution in this priority order:
0x) → validated via isValidSuiAddress(). If invalid → INVALID_ADDRESS.*.sui) → resolves via SuiNS registry. If unregistered → SUINS_NOT_REGISTERED.Anything else throws INVALID_ADDRESS with a hint to use a 0x address or a .sui name. (There is no local contacts/alias map — SuiNS is the canonical name layer for Sui addresses.)
t2000_send tool)The MCP t2000_send tool has the same asset-required contract:
{
"to": "alice.sui",
"amount": 5,
"asset": "USDC",
"dryRun": false
}
dryRun: true returns a preview without signing — useful for confirming the resolved address + gasless badge before the actual write.asset is REQUIRED — calls without it return an error.t2 limit set caps (enforced in @t2000/sdk). Default caps: $25/tx · $100/day cumulative.Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub mission69b/t2000-skills --plugin t2000-agent-wallet