Skip to content

Crypto off-ramp

nuez gives users crypto deposit addresses and a quote/execute flow for converting crypto to ARS. This is entirely separate from the ARS wallet/CVU — it’s only available if crypto off-ramp is enabled on the server (the MCP crypto tools don’t register otherwise).

nuez supports ERC-20 tokens, including:

  • USDC
  • USDT
  • wARS

More tokens are being added — check get_crypto_status/get_crypto_balances for the current list available to your account.

Crypto is opt-in per user. Call activate_crypto once — it’s idempotent, safe to call again if already active:

{ "onboard_status": "active", "kyc_status": "approved", "auto_swap_enabled": false, "deposit_addresses": [{ "network": "ETHEREUM_SEPOLIA", "address": "0x..." }] }

get_crypto_status returns the same shape without triggering activation.

get_crypto_addresses returns the list of { network, address } pairs to receive crypto at. The default network is controlled server-side (sandbox default: ETHEREUM_SEPOLIA).

get_crypto_balances returns balances per currency (e.g. USDC) — these are separate from the ARS wallet balance.

set_auto_swap with {"enabled": true} makes incoming crypto deposits automatically convert to ARS as they arrive (fires a crypto.deposit.completed webhook once landed). Leave it off to hold crypto and swap manually.

// get_crypto_offramp_quote { "amount": 100, "currency": "USDC" }
{ "quote_id": "q_8f2...", "pair": "USDC/ARS", "sell_rate": "1230.50", "crypto_amount": 100 }
// execute_crypto_offramp { "quote_id": "q_8f2...", "amount": 100, "currency": "USDC" }
{ "offramp_id": "o_91a...", "status": "processing", "transaction_id": "...", "pair": "USDC/ARS", "crypto_amount": 100 }

The resulting ARS lands in the user’s ARS wallet (beneficiary_cvu from get_crypto_status), not the card account. A crypto.offramp.completed or crypto.offramp.failed webhook fires once the off-ramp resolves — poll list_recent_deposits/get_balance or just listen for the webhook.

Full parameter reference at MCP tools → Crypto off-ramp.