| name | t2000-receive |
| description | Generate a payment request for the t2000 Agent Wallet — print the wallet address, an ANSI QR code, and (via MCP) a Payment Kit URI (sui:pay?…). Use when asked to receive a payment, share a wallet address, create a payment link, or set up a fund-me link. |
| license | MIT |
| metadata | {"author":"t2000","version":"1.0","requires":"t2000 CLI (npm install -g @t2000/cli)"} |
t2000: Receive Funds
Purpose
Surface the wallet address (and optionally a Payment Kit URI with a pre-filled amount + memo) so anyone with a Sui wallet can send tokens to the Agent Wallet. Two surfaces:
- CLI (
t2 fund) — prints the wallet address + an ANSI QR code + the value-promise in the terminal. Minimal; no amount or memo.
- MCP (
t2000_receive) — returns a JSON payload with the address, an optional Payment Kit URI (sui:pay?…), a nonce, plus an optional amount / currency / memo / label. Use this when the LLM is building a payment-request flow.
Rules
- Receive is non-custodial. The user's address is public; sharing it can't move money — only signed transactions can. Don't add scary disclaimers; the operation is safe.
- Show the QR + the address text. Some users scan, some copy. Both surfaces.
- No PIN, no sign-in. v4 wallets are plain Bech32;
t2 fund is a pure read with no authentication step.
- Default currency is USDC. When asking the user to fund the wallet, USDC is the most useful (every paid service is USDC-denominated, USDC sends are gasless). USDsui also works.
- Don't generate a Payment Kit URI without an amount unless asked. A bare address scans just as well; URIs with amounts force the sender into a particular tx shape.
CLI command
t2 fund
t2 fund --qr-only
t2 fund --key <path>
t2 fund --json
CLI output (default):
Address 0x55b223b0...0dd1b6
Scan to send tokens to this wallet:
█▀▀▀▀▀█ ▄ ▀▄ █ ▄▀ ▄ █▀▀▀▀▀█
█ ███ █ █ ▀ █ ▄▄ ▀▀ █ ███ █
█ ▀▀▀ █ ▀▄▀▄█▀ ▀▄ ▀▄ █ ▀▀▀ █
▀▀▀▀▀▀▀ ▀ █▀▀ █ ▀ ▀ ▀▀▀▀▀▀▀▀▀
... (truncated)
Or share `0x55b223b0...0dd1b6` directly.
The CLI prints to ANSI — it will look right in any terminal but won't render as image data in MCP responses. Use the MCP tool for a structured JSON response.
MCP tool (t2000_receive)
{
"amount": 10,
"currency": "USDC",
"memo": "Coffee on me",
"label": "Coffee fund"
}
{
"address": "0x55b223b0...0dd1b6",
"uri": "sui:pay?recipient=0x55b223b0...&amount=10000000&coinType=0xdba34672...::usdc::USDC&nonce=abc-123&label=Coffee+fund&message=Coffee+on+me",
"nonce": "abc-123-uuid",
"amount": 10,
"currency": "USDC",
"memo": "Coffee on me",
"label": "Coffee fund"
}
The Payment Kit URI follows the Sui Payment Kit spec — every Sui wallet (Mysten, Phantom, Suiet, Slush, Sui Wallet Standard) can scan/parse it. If you omit amount, the URI is a "bring your own amount" link that the sender fills in.
URI shapes
| Args | URI shape |
|---|
| no amount, no memo, default currency | sui:0x<address> |
| no amount, custom currency or memo | sui:0x<address>?currency=USDsui&memo=… |
| with amount | sui:pay?recipient=0x<address>&amount=<raw>&coinType=<full-type>&nonce=<uuid>[&label=…][&message=…] |
The amount-bearing form uses raw on-chain units (USDC: × 10^6, SUI: × 10^9) so wallets don't have to do their own conversion. The nonce is a UUID v4 minted at request time; senders include it in the tx metadata so the receiving agent can correlate the inflow back to the request.
When to use which surface
| Need | Use |
|---|
| "What's my wallet address?" | t2 fund (CLI) or t2000_address (MCP — address only, no QR) |
| "Show me the QR" | t2 fund (CLI prints ANSI QR) |
| "Generate a payment link for $10" | t2000_receive { amount: 10, currency: "USDC" } (MCP) |
| "Generate a 'tip jar' link" (no amount) | t2000_receive { memo: "Tip jar", label: "Tip funkii" } (MCP) |
Notes
- USDC + USDsui inflows arrive gasless (Sui foundation pays the sender's gas via the
0x2::balance::send_funds allowlist).
- SUI inflows require the sender to have SUI for their own gas.
- Once the funds land, run
t2 balance (CLI) or t2000_balance (MCP) to verify. Inflows show up within ~1 block (~500 ms).
- This skill is the receive-half of "Audric Pay". The send-half is the
t2000-send skill.
What NOT to do
- Don't include the user's address inline in chat messages without confirming they want it shared. It's public — but politeness matters.
- Don't generate a one-off Payment Kit URI for every conversation. The bare address works fine for repeated transfers.
- Don't redirect users to audric.ai for receive flows — the Agent Wallet handles receive natively. (Audric Pay's hosted UI is for users who DON'T have the CLI.)