tulebank

TuleBank — check wallet balance, send ARS to any CVU/ALIAS, swap USDC/wARS, manage beneficiaries, and move funds with ARS off-ramp/on-ramp flows.

3,891 stars

Best use case

tulebank is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

TuleBank — check wallet balance, send ARS to any CVU/ALIAS, swap USDC/wARS, manage beneficiaries, and move funds with ARS off-ramp/on-ramp flows.

Teams using tulebank should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/tulebank/SKILL.md --create-dirs "https://raw.githubusercontent.com/openclaw/skills/main/skills/aromeoes/tulebank/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/tulebank/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How tulebank Compares

Feature / AgenttulebankStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

TuleBank — check wallet balance, send ARS to any CVU/ALIAS, swap USDC/wARS, manage beneficiaries, and move funds with ARS off-ramp/on-ramp flows.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

Related Guides

SKILL.md Source

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).
- `--to` 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
```
tulebank kyc-status
```

### 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
```
tulebank beneficiaries list
```

### 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
```
tulebank quote --from USDC --to ARS --amount 10 [--chain BASE]
```

### On-ramp quote (ARS -> wARS or USDC)
```
tulebank onramp quote --amount 50000 [--asset wARS|USDC] [--chain BASE]
```

### 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
```
tulebank onramp status --transaction <transaction-id> [--asset wARS|USDC]
```

### Check transaction limits
```
tulebank limits
```

### Check fiat account status
```
tulebank fiat-account --id <fiat-account-id>
```

### 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`).
- `--to` 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)"
2. Ask: "Pilar Castillo (pilarcastilloz) — le mando 10,000 ARS?"
3. On confirmation: run `send --to Pili --amount 10000 --yes`
4. Show transaction hash
5. Run `history --beneficiary Pili` to confirm the record

### User says: "mandale plata a la verdulería"
1. Run `beneficiaries search "verdulería"`
2. If found: ask "La Amistad (la verdulería cerca de casa) — le envío plata?"
3. On confirmation: run `send --to <their_alias>`
4. Show deposit address and instructions

### User says: "manda 2000 a franv98"
1. Run `beneficiaries search "franv98"` → not found
2. "franv98" is a text string → it's an alias. Run `beneficiaries add --to franv98` → Ripio returns holder info
3. Ask: "franv98 pertenece a FRANCISCO VARELA (CUIT 20385..., Banco Galicia). Le mando 2,000 ARS?"
4. On confirmation: run `send --to franv98 --amount 2000 --yes`
5. Show transaction hash
6. Run `history` to confirm the record

### User says: "send to 0000003100099123456789"
1. Run `beneficiaries search "0000003100099123456789"` → not found
2. 22-digit number → it's a CVU. Run `beneficiaries add --to 0000003100099123456789` → Ripio returns holder info
3. Ask: "Ese CVU pertenece a MARÍA GARCÍA (CUIT 27..., Banco Nación). Confirmo el envío?"
4. On confirmation: run `send --to 0000003100099123456789`
5. Show deposit address and instructions

### User says: "send to tulezao"
1. Run `beneficiaries search "tulezao"` → not found
2. "tulezao" is a text string → it's an alias. Run `beneficiaries add --to tulezao` → Ripio returns holder info
3. Ask: "El alias tulezao pertenece a JUAN PÉREZ (CUIT 20..., Banco Nación). Lo agrego y le envío?"
4. On confirmation: proceed with send

### Onboarding a new user (existing Ripio account)
1. Ask for their email and phone number
2. Run `signup --email <email> --phone <phone>`
3. Run `check-kyc` (sends OTP)
4. Ask human for the 6-digit code
5. Run `otp --code <code>`
6. Run `kyc-status` to verify COMPLETED

### Autonomous send (wallet configured)
1. Ask: "Le mando 10,000 ARS a Pilar Castillo (pilarcastilloz)?"
2. On confirmation: run `send --to pilarcastilloz --amount 10000 --yes`
   - `--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
4. Run `history` to confirm the record

### Swap USDC to wARS before sending
1. Run `wallet balance` to check USDC balance
2. Run `swap --from USDC --to wARS --amount 10`
3. Show swap result: "Swapped 10 USDC to ~14,380 wARS"
4. Run `send --to pilarcastilloz --amount 14380 --token wARS`
5. wARS converts 1:1 to ARS via off-ramp

### Checking a rate before sending
1. Run `quote --from USDC --to ARS --amount 10`
2. Tell user: "10 USDC = ~14,300 ARS at current rate"

### Funding wallet from ARS bank transfer
1. Run `onramp quote --amount 50000`
2. Ask user to confirm destination wallet address and amount.
3. Run `onramp create --amount 50000 --yes`
4. Show session/order ID + payment instructions.
5. Run `onramp status --transaction <id>` to track progress.

Related Skills

---

3891
from openclaw/skills

name: article-factory-wechat

Content & Documentation

humanizer

3891
from openclaw/skills

Remove signs of AI-generated writing from text. Use when editing or reviewing text to make it sound more natural and human-written. Based on Wikipedia's comprehensive "Signs of AI writing" guide. Detects and fixes patterns including: inflated symbolism, promotional language, superficial -ing analyses, vague attributions, em dash overuse, rule of three, AI vocabulary words, negative parallelisms, and excessive conjunctive phrases.

Content & Documentation

find-skills

3891
from openclaw/skills

Helps users discover and install agent skills when they ask questions like "how do I do X", "find a skill for X", "is there a skill that can...", or express interest in extending capabilities. This skill should be used when the user is looking for functionality that might exist as an installable skill.

General Utilities

tavily-search

3891
from openclaw/skills

Use Tavily API for real-time web search and content extraction. Use when: user needs real-time web search results, research, or current information from the web. Requires Tavily API key.

Data & Research

baidu-search

3891
from openclaw/skills

Search the web using Baidu AI Search Engine (BDSE). Use for live information, documentation, or research topics.

Data & Research

agent-autonomy-kit

3891
from openclaw/skills

Stop waiting for prompts. Keep working.

Workflow & Productivity

Meeting Prep

3891
from openclaw/skills

Never walk into a meeting unprepared again. Your agent researches all attendees before calendar events—pulling LinkedIn profiles, recent company news, mutual connections, and conversation starters. Generates a briefing doc with talking points, icebreakers, and context so you show up informed and confident. Triggered automatically before meetings or on-demand. Configure research depth, advance timing, and output format. Walking into meetings blind is amateur hour—missed connections, generic small talk, zero leverage. Use when setting up meeting intelligence, researching specific attendees, generating pre-meeting briefs, or automating your prep workflow.

Workflow & Productivity

self-improvement

3891
from openclaw/skills

Captures learnings, errors, and corrections to enable continuous improvement. Use when: (1) A command or operation fails unexpectedly, (2) User corrects Claude ('No, that's wrong...', 'Actually...'), (3) User requests a capability that doesn't exist, (4) An external API or tool fails, (5) Claude realizes its knowledge is outdated or incorrect, (6) A better approach is discovered for a recurring task. Also review learnings before major tasks.

Agent Intelligence & Learning

botlearn-healthcheck

3891
from openclaw/skills

botlearn-healthcheck — BotLearn autonomous health inspector for OpenClaw instances across 5 domains (hardware, config, security, skills, autonomy); triggers on system check, health report, diagnostics, or scheduled heartbeat inspection.

DevOps & Infrastructure

linkedin-cli

3891
from openclaw/skills

A bird-like LinkedIn CLI for searching profiles, checking messages, and summarizing your feed using session cookies.

Content & Documentation

notebooklm

3891
from openclaw/skills

Google NotebookLM 非官方 Python API 的 OpenClaw Skill。支持内容生成(播客、视频、幻灯片、测验、思维导图等)、文档管理和研究自动化。当用户需要使用 NotebookLM 生成音频概述、视频、学习材料或管理知识库时触发。

Data & Research

小红书长图文发布 Skill

3891
from openclaw/skills

## 概述

Content & Documentation