You can send Argentine pesos (ARS) to any bank account via CVU or ALIAS and fund your wallet from ARS bank transfers using the tulebank CLI, which talks to a proxy that handles Ripio Ramps API credentials.
CVU vs ALIAS
- - ALIAS: a text string (e.g.,
franv98, pilarcastilloz, tulezao). If the user provides a word or short text, it's an alias. - CVU: a 22-digit numeric string (e.g.,
0000003100099123456789). If the user provides a long number, it's a CVU. - Both are valid destinations for
--to in beneficiaries add and send.
Important rules
- - ALWAYS confirm the destination and action with the user before executing
tulebank send. Use question format (e.g., "Should I send 3,000 ARS to Pilar Castillo (pilarcastilloz)?"). - CLI only: run TuleBank through CLI commands. Do not import files under
lib/ or run ad-hoc JavaScript to bypass the CLI. - Use the installed
tulebank binary for all commands in this skill. - If
tulebank is not available, ask the user to install it or fix PATH before continuing. - When the user refers to someone by name or description (e.g., "la verdulería", "mi hermano"), search beneficiaries first.
- If multiple matches are found, ask the user to clarify.
- If no match is found and the user provides an alias or CVU, run
beneficiaries add --to <alias_or_cvu> to register it. Ripio will return the holder's name, CUIT, and bank — show this to the user and ask for confirmation before sending. The send command requires an existing beneficiary; it will NOT auto-create one. - Output from the CLI is JSON. Parse it and present it in a human-friendly way.
- The user must sign up before adding beneficiaries or sending. If not configured, run
tulebank signup first. - OTP flow: For existing Ripio users,
check-kyc sends an OTP to their phone. You must ask the human for the 6-digit code and use otp --code <code> to validate. - The
send command creates an off-ramp session and returns deposit addresses. The user deposits USDC or wARS to that address, and Ripio converts to ARS and sends to the bank. - If the user has a wallet configured (
tulebank wallet setup), send can auto-send tokens with --amount. Omit --token for smart send (auto-picks wARS or swaps USDC→wARS). - INLINECODE22 accepts beneficiary names (e.g.,
--to Pili matches "Pilar Castillo"). Word-prefix matching is supported. - Auto-send shows a confirmation prompt with beneficiary, amount, and destination. The human must confirm before funds are sent. Use
--yes to skip the prompt only after the human has already confirmed to you directly. - Fiat account activation: Ripio only allows one enabled fiat account per customer. The
send command automatically activates the target beneficiary's fiat account before sending. This may take a few extra seconds if the account was suspended. - After auto-sending, show the transaction hash and run
tulebank history to confirm the record. - Swaps: Use
tulebank swap to convert between USDC and wARS on Base. wARS converts 1:1 to ARS via off-ramp, so swapping USDC to wARS before sending can lock in the rate. - On-ramp (bank transfer): Use
tulebank onramp quote/create/status for ARS -> wARS (default, session flow) or ARS -> USDC (order flow). Workstream 5 v1 supports bank_transfer only. - ARS amounts → just use
--amount, no --token: When the user specifies an amount in ARS/pesos, ALWAYS use --amount <n> WITHOUT --token. The --amount value is in ARS. The CLI handles everything (picks wARS if available, or auto-swaps USDC→wARS). Never manually calculate USDC equivalents — it introduces rounding errors and the result won't be exact. Only use --token USDC when the user explicitly says they want to send USDC (not ARS). - History: After every send, swap, or on-ramp create, call
tulebank history to confirm the transaction was recorded.
Available commands
Run these via the exec tool using the tulebank CLI binary.
Wallet setup
tulebank wallet setup
Creates a CDP smart wallet on Base via the proxy (no local credentials needed).
Wallet info
tulebank wallet info
Shows the wallet address.
Wallet balance
tulebank wallet balance
Shows USDC, wARS, and ETH balances on Base.
Sign up (prerequisite)
tulebank signup --email <email> --phone <phone>
Creates a TuleBank account, generates a per-user API key, and saves it to config. Only needed once. Use
tulebank setup --api-key <key> to log in on another device.
KYC flow (existing Ripio users)
tulebank check-kyc
tulebank otp --code <123456>
check-kyc triggers an OTP to the user's phone. Ask the human for the code, then validate with
otp.
Check KYC status
CODEBLOCK5
Search beneficiaries
tulebank beneficiaries search "<query>"
Searches name, description, and CVU/ALIAS. Use this when the user refers to someone by name or description.
List all beneficiaries
CODEBLOCK7
Add a beneficiary
tulebank beneficiaries add --to <CVU_OR_ALIAS> [--name "<name>"] [--description "<desc>"]
Creates a fiat account via the proxy (creates + confirms + polls until enabled), then saves locally. If
--name is omitted, the holder's name is auto-detected from Ripio (metadata includes name, CUIT, and bank). The response includes a
holder field with the detected info — use this to confirm with the user.
Send (off-ramp)
tulebank send --to <name/CVU_OR_ALIAS>
Sends to an existing beneficiary. The
--to value is resolved via exact alias/CVU match or fuzzy name search. If the beneficiary is not found, the command errors and asks you to add them first with
tulebank beneficiaries add.
Send (off-ramp) — auto-send from wallet
tulebank send --to <CVU_OR_ALIAS> --amount <n> --token <USDC|wARS>
Creates off-ramp session and automatically sends tokens from the configured wallet to the Ripio deposit address on Base. Shows a confirmation prompt before sending. Add
--yes to skip the prompt (only after human has confirmed to you). Use
--manual to skip auto-send entirely.
Swap tokens on Base
tulebank swap --from USDC --to wARS --amount 10
Swaps tokens via DEX on Base. Default slippage is 100 bps (1%). Use
--slippage <bps> to change. Add
--yes to skip confirmation (only after human has confirmed to you).
Check off-ramp session status
tulebank send-status --session <session-id>
Shows deposit addresses and transactions for an off-ramp session.
Get a quote
CODEBLOCK13
On-ramp quote (ARS -> wARS or USDC)
CODEBLOCK14
Create on-ramp flow (bank transfer)
tulebank onramp create --amount 50000 [--asset wARS|USDC] [--to-address 0x...] [--chain BASE]
Creates an on-ramp flow using a fresh quote.
wARS (default) creates a session;
USDC creates an order. Uses configured wallet address when available; pass
--to-address to override.
Check on-ramp status
CODEBLOCK16
Check transaction limits
CODEBLOCK17
Check fiat account status
CODEBLOCK18
Transaction history
tulebank history
tulebank history --beneficiary "<name>"
tulebank history --type send
tulebank history --type onramp
tulebank history --from 2026-01-01 --to-date 2026-01-31
Shows local transaction history. Supports filtering by beneficiary (fuzzy), type (
send/
swap/
onramp), and date range. Default: last 30 days.
Smart send rules
- -
--amount is always in ARS (= wARS, 1:1). Do NOT convert to USDC manually. - When
--token is omitted and --amount is given, the CLI auto-picks wARS (if balance sufficient) or swaps USDC→wARS first. - When
--token is specified, sends that token directly (no auto-swap). - Example: user says "2300 pesos" →
--amount 2300 (NOT --amount 1.57 --token USDC). - INLINECODE61 accepts beneficiary names (e.g.,
--to Pili). If one match is found, it auto-resolves. If multiple, it errors with a list. - After every send, the transaction is recorded in
~/.tulebank/history.json.
Example flows
User says: "mandale 10k a Pili"
- 1. Search beneficiaries → finds "Pilar Castillo (pilarcastilloz)"
- Ask: "Pilar Castillo (pilarcastilloz) — le mando 10,000 ARS?"
- On confirmation: run INLINECODE64
- Show transaction hash
- Run
history --beneficiary Pili to confirm the record
User says: "mandale plata a la verdulería"
- 1. Run INLINECODE66
- If found: ask "La Amistad (la verdulería cerca de casa) — le envío plata?"
- On confirmation: run INLINECODE67
- Show deposit address and instructions
User says: "manda 2000 a franv98"
- 1. Run
beneficiaries search "franv98" → not found - "franv98" is a text string → it's an alias. Run
beneficiaries add --to franv98 → Ripio returns holder info - Ask: "franv98 pertenece a FRANCISCO VARELA (CUIT 20385..., Banco Galicia). Le mando 2,000 ARS?"
- On confirmation: run INLINECODE70
- Show transaction hash
- Run
history to confirm the record
User says: "send to 0000003100099123456789"
- 1. Run
beneficiaries search "0000003100099123456789" → not found - 22-digit number → it's a CVU. Run
beneficiaries add --to 0000003100099123456789 → Ripio returns holder info - Ask: "Ese CVU pertenece a MARÍA GARCÍA (CUIT 27..., Banco Nación). Confirmo el envío?"
- On confirmation: run INLINECODE74
- Show deposit address and instructions
User says: "send to tulezao"
- 1. Run
beneficiaries search "tulezao" → not found - "tulezao" is a text string → it's an alias. Run
beneficiaries add --to tulezao → Ripio returns holder info - Ask: "El alias tulezao pertenece a JUAN PÉREZ (CUIT 20..., Banco Nación). Lo agrego y le envío?"
- On confirmation: proceed with send
Onboarding a new user (existing Ripio account)
- 1. Ask for their email and phone number
- Run INLINECODE77
- Run
check-kyc (sends OTP) - Ask human for the 6-digit code
- Run INLINECODE79
- Run
kyc-status to verify COMPLETED
Autonomous send (wallet configured)
- 1. Ask: "Le mando 10,000 ARS a Pilar Castillo (pilarcastilloz)?"
- On confirmation: run INLINECODE81
-
--amount is ARS-denominated (10000 = 10,000 ARS). Do NOT convert to USDC.
- The CLI handles token selection: uses wARS if available, otherwise auto-swaps USDC→wARS.
- 3. Show transaction hash from the response
- Run
history to confirm the record
Swap USDC to wARS before sending
- 1. Run
wallet balance to check USDC balance - Run INLINECODE85
- Show swap result: "Swapped 10 USDC to ~14,380 wARS"
- Run INLINECODE86
- wARS converts 1:1 to ARS via off-ramp
Checking a rate before sending
- 1. Run INLINECODE87
- Tell user: "10 USDC = ~14,300 ARS at current rate"
Funding wallet from ARS bank transfer
- 1. Run INLINECODE88
- Ask user to confirm destination wallet address and amount.
- Run INLINECODE89
- Show session/order ID + payment instructions.
- Run
onramp status --transaction <id> to track progress.
技能名称: tulebank
详细描述:
你可以通过 CVU 或 ALIAS 将阿根廷比索 (ARS) 发送到任何银行账户,并使用 tulebank CLI 通过 ARS 银行转账为钱包充值,该 CLI 与处理 Ripio Ramps API 凭证的代理进行通信。
CVU 与 ALIAS
- - ALIAS: 一个文本字符串(例如:franv98、pilarcastilloz、tulezao)。如果用户提供的是一个单词或短文本,则为别名。
- CVU: 一个 22 位数字字符串(例如:0000003100099123456789)。如果用户提供的是一个长数字,则为 CVU。
- 两者都是 beneficiaries add 和 send 命令中 --to 参数的有效目标。
重要规则
- - 始终确认:在执行 tulebank send 之前,务必与用户确认目标和操作。使用疑问句式(例如:是否向 Pilar Castillo (pilarcastilloz) 发送 3,000 ARS?)。
- 仅限 CLI:通过 CLI 命令运行 TuleBank。不要导入 lib/ 下的文件或运行临时的 JavaScript 来绕过 CLI。
- 在此技能的所有命令中使用已安装的 tulebank 二进制文件。
- 如果 tulebank 不可用,请要求用户先安装或修复 PATH。
- 当用户通过姓名或描述(例如:la verdulería、mi hermano)提及某人时,首先搜索收款人。
- 如果找到多个匹配项,请要求用户澄清。
- 如果未找到匹配项,且用户提供了别名或 CVU,则运行 beneficiaries add --to orcvu> 进行注册。Ripio 将返回持有人的姓名、CUIT 和银行——向用户展示这些信息并在发送前请求确认。send 命令需要一个已存在的收款人;它不会自动创建。
- CLI 的输出为 JSON 格式。解析并以用户友好的方式呈现。
- 用户在添加收款人或发送之前必须注册。如果未配置,请先运行 tulebank signup。
- OTP 流程:对于现有的 Ripio 用户,check-kyc 会向他们的手机发送一次性密码 (OTP)。你必须向用户索要 6 位验证码,并使用 otp --code
进行验证。 - send 命令会创建一个离岸通道会话并返回存款地址。用户将 USDC 或 wARS 存入该地址,Ripio 将其转换为 ARS 并发送到银行。
- 如果用户已配置钱包 (tulebank wallet setup),send 可以使用 --amount 自动发送代币。省略 --token 以进行智能发送(自动选择 wARS 或兑换 USDC→wARS)。
- --to 接受收款人姓名(例如:--to Pili 匹配 Pilar Castillo)。支持单词前缀匹配。
- 自动发送会显示一个包含收款人、金额和目标的确认提示。在资金发送前,用户必须确认。仅在用户已直接向你确认后,使用 --yes 跳过提示。
- 法币账户激活:Ripio 只允许每个客户启用一个法币账户。send 命令会在发送前自动激活目标收款人的法币账户。如果账户被暂停,这可能需要额外几秒钟。
- 自动发送后,显示交易哈希并运行 tulebank history 以确认记录。
- 兑换:使用 tulebank swap 在 Base 链上兑换 USDC 和 wARS。wARS 通过离岸通道以 1:1 的比例兑换为 ARS,因此在发送前将 USDC 兑换为 wARS 可以锁定汇率。
- 入金(银行转账):使用 tulebank onramp quote/create/status 进行 ARS -> wARS(默认,会话流程)或 ARS -> USDC(订单流程)。Workstream 5 v1 仅支持 bank_transfer。
- ARS 金额 → 仅使用 --amount,无需 --token:当用户指定 ARS/比索的金额时,始终使用 --amount 且不带 --token。--amount 的值以 ARS 为单位。CLI 会处理所有事务(如果有 wARS 则选择,否则自动兑换 USDC→wARS)。切勿手动计算 USDC 等值——这会引入舍入误差,结果将不精确。仅当用户明确表示要发送 USDC(而非 ARS)时,才使用 --token USDC。
- 历史记录:每次发送、兑换或创建入金后,调用 tulebank history 以确认交易已被记录。
可用命令
通过 exec 工具使用 tulebank CLI 二进制文件运行这些命令。
钱包设置
tulebank wallet setup
通过代理在 Base 链上创建一个 CDP 智能钱包(无需本地凭证)。
钱包信息
tulebank wallet info
显示钱包地址。
钱包余额
tulebank wallet balance
显示 Base 链上的 USDC、wARS 和 ETH 余额。
注册(前提条件)
tulebank signup --email --phone
创建一个 TuleBank 账户,生成每个用户的 API 密钥,并将其保存到配置中。仅需一次。使用 tulebank setup --api-key 在另一台设备上登录。
KYC 流程(现有 Ripio 用户)
tulebank check-kyc
tulebank otp --code <123456>
check-kyc 会向用户的手机发送一次性密码 (OTP)。向用户索要验证码,然后使用 otp 进行验证。
检查 KYC 状态
tulebank kyc-status
搜索收款人
tulebank beneficiaries search
搜索姓名、描述和 CVU/ALIAS。当用户通过姓名或描述提及某人时使用。
列出所有收款人
tulebank beneficiaries list
添加收款人
tulebank beneficiaries add --to ORALIAS> [--name ] [--description ]
通过代理创建一个法币账户(创建 + 确认 + 轮询直至启用),然后保存在本地。如果省略 --name,持有人的姓名将从 Ripio 自动检测(元数据包括姓名、CUIT 和银行)。响应中包含一个 holder 字段,包含检测到的信息——使用此信息与用户确认。
发送(离岸通道)
tulebank send --to ORALIAS>
发送给现有的收款人。--to 的值通过精确的别名/CVU 匹配或模糊姓名搜索解析。如果未找到收款人,命令会报错并要求你先使用 tulebank beneficiaries add 添加。
发送(离岸通道)— 从钱包自动发送
tulebank send --to ORALIAS> --amount --token
创建离岸通道会话,并自动从配置的钱包向 Base 链上的 Ripio 存款地址发送代币。发送前显示确认提示。添加 --yes 以跳过提示(仅在用户已向你确认后)。使用 --manual 完全跳过自动发送。
在 Base 链上兑换代币
tulebank swap --from USDC --to wARS --amount 10
通过 Base 链上的 DEX 兑换代币。默认滑点为 100 个基点 (1%)。使用 --slippage 更改。添加 --yes 以跳过确认(仅在用户已向你确认后)。
检查离岸通道会话状态
tulebank send-status --session
显示离岸通道会话的存款地址和交易。
获取报价
tulebank quote --from USDC --to ARS --amount 10 [--chain BASE]
入金报价(ARS -> wARS 或 USDC)
tulebank onramp quote --amount 50000 [--asset wARS|USDC] [--chain BASE]
创建入金流程(银行转账)
tulebank onramp create --amount 50000 [--asset wARS|USDC] [--to-address 0x...] [--chain BASE]
使用新报价创建入金流程。wARS(默认)创建会话;USDC 创建订单。使用配置的钱包地址(如有);传递 --to-address 以覆盖。
检查入金状态
tulebank onramp status --transaction [--asset wARS|USDC]
检查交易限额
tulebank limits
检查法币账户状态