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 fundis 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 # address + ANSI QR + share line
t2 fund --qr-only # just the QR (e.g. for embedding in a screenshot)
t2 fund --key <path> # custom wallet path
t2 fund --json # { address, qrEncodedFor, valuePromise }
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)
// Request
{
"amount": 10, // optional — pre-fills the sender's tx amount
"currency": "USDC", // optional — default USDC, also accepts USDsui / SUI
"memo": "Coffee on me", // optional — encoded into the Payment Kit URI
"label": "Coffee fund" // optional — human-readable label for the URI
}
// Response
{
"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_fundsallowlist). - SUI inflows require the sender to have SUI for their own gas.
- Once the funds land, run
t2 balance(CLI) ort2000_balance(MCP) to verify. Inflows show up within1 block (500 ms). - This skill is the receive-half of "Audric Pay". The send-half is the
t2000-sendskill.
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.)