@singularityhacker/bank-skill 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +270 -0
- package/package.json +2 -1
package/README.md
ADDED
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
# Bank Skills
|
|
2
|
+
|
|
3
|
+
A skill pack that gives AI agents banking capabilities via the [Wise API](https://docs.wise.com/api-reference). Agents can check balances, send money, and share account and routing details for receiving payments—all through a standard skill package (SKILL.md + run.sh) compatible with CLI and MCP.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **Check balances** — Query Wise multi-currency balances for the configured profile
|
|
8
|
+
- **Send money** — Initiate transfers (quote → recipient → transfer → fund flow)
|
|
9
|
+
- **Share receive details** — Retrieve account number, routing number, IBAN, and related info so agents can share them for inbound payments
|
|
10
|
+
|
|
11
|
+
## Prerequisites
|
|
12
|
+
|
|
13
|
+
1. A [Wise](https://wise.com) personal account
|
|
14
|
+
2. A Wise **business** account (required for API access)
|
|
15
|
+
3. API token generated from Settings → API tokens (2FA required)
|
|
16
|
+
|
|
17
|
+
## Setup
|
|
18
|
+
|
|
19
|
+
Configure credentials via environment variables:
|
|
20
|
+
|
|
21
|
+
| Variable | Required | Description |
|
|
22
|
+
|----------|----------|-------------|
|
|
23
|
+
| `WISE_API_TOKEN` | Yes | Personal API token from Wise dashboard |
|
|
24
|
+
| `WISE_PROFILE_ID` | No | Profile ID (defaults to first available) |
|
|
25
|
+
|
|
26
|
+
The skill reads credentials from the environment at runtime. Do not store tokens in config files that other skills might access.
|
|
27
|
+
|
|
28
|
+
## Security & API Key Management
|
|
29
|
+
|
|
30
|
+
### How API Keys Are Stored
|
|
31
|
+
|
|
32
|
+
This skill follows the standard convention used across the skills ecosystem: **API keys are never stored in the skill code**. Instead, they're read from environment variables at runtime.
|
|
33
|
+
|
|
34
|
+
**Storage varies by deployment method:**
|
|
35
|
+
|
|
36
|
+
| Method | Storage Location | Security |
|
|
37
|
+
|--------|-----------------|----------|
|
|
38
|
+
| **Claude Desktop (.mcpb)** | OS credential manager (Keychain/Windows Credential Manager) | ✅ Encrypted, secure |
|
|
39
|
+
| **CLI / Direct Usage** | Shell environment (`export WISE_API_TOKEN='...'`) | ⚠️ User-managed |
|
|
40
|
+
| **OpenClaw/ClawdBot** | `~/.openclaw/openclaw.json` under `skills.entries.bank-skill.env` | ⚠️ File permissions |
|
|
41
|
+
| **MCP Server** | Shell environment | ⚠️ User-managed |
|
|
42
|
+
|
|
43
|
+
**The skill's responsibility:**
|
|
44
|
+
- ✅ Read from `WISE_API_TOKEN` environment variable
|
|
45
|
+
- ✅ Fail gracefully with clear error if missing
|
|
46
|
+
- ✅ Never log or expose the token value
|
|
47
|
+
- ✅ Declare requirements in SKILL.md metadata
|
|
48
|
+
|
|
49
|
+
**Your responsibility:**
|
|
50
|
+
- Set the environment variable before running
|
|
51
|
+
- Keep your API token secure
|
|
52
|
+
- Don't commit tokens to version control
|
|
53
|
+
|
|
54
|
+
### Wise API Security Features
|
|
55
|
+
|
|
56
|
+
Wise provides additional security controls for API tokens:
|
|
57
|
+
|
|
58
|
+
- **IP Address Whitelisting** — Restrict API token usage to specific IP addresses in your Wise dashboard (Settings → API Tokens). This prevents unauthorized access even if your token is compromised.
|
|
59
|
+
- **2FA Required** — Token generation requires two-factor authentication
|
|
60
|
+
- **Token Scopes** — Business accounts can create tokens with limited permissions
|
|
61
|
+
- **Token Rotation** — Generate new tokens and revoke old ones at any time
|
|
62
|
+
|
|
63
|
+
**Recommended:** Enable IP whitelisting for production use to limit token usage to your server/workstation IP addresses.
|
|
64
|
+
|
|
65
|
+
## Surfaces
|
|
66
|
+
|
|
67
|
+
- **MCP Desktop Extension** — .mcpb bundle for Claude Desktop (double-click install)
|
|
68
|
+
- **Skill package** — SKILL.md + run.sh for agent discovery and invocation
|
|
69
|
+
- **CLI** — Terminal commands for testing and scripting
|
|
70
|
+
- **MCP Server** — Standalone server for MCP-compatible frameworks
|
|
71
|
+
|
|
72
|
+
## Quick Start
|
|
73
|
+
|
|
74
|
+
### For Claude Desktop Users (MCP Extension)
|
|
75
|
+
|
|
76
|
+
**Requirements:**
|
|
77
|
+
- Claude Desktop 1.1+ with UV runtime support
|
|
78
|
+
- Wise Business Account with API access
|
|
79
|
+
- macOS, Windows, or Linux (no manual setup needed)
|
|
80
|
+
|
|
81
|
+
**Installation:**
|
|
82
|
+
|
|
83
|
+
1. **Download** `dist/bank-skills-0.1.0.mcpb` (110KB)
|
|
84
|
+
2. **Install** - Double-click the file OR Settings → Extensions → Install Extension
|
|
85
|
+
3. **Configure** - Enter your Wise API token in the settings UI (stored securely in Keychain)
|
|
86
|
+
4. **Restart** Claude Desktop
|
|
87
|
+
5. **Test** - Ask Claude: "Check my Wise balance"
|
|
88
|
+
|
|
89
|
+
**Getting Your API Token:**
|
|
90
|
+
|
|
91
|
+
1. Log in to your [Wise Business Account](https://wise.com)
|
|
92
|
+
2. Go to Settings → API Tokens
|
|
93
|
+
3. Create a new token (requires 2FA)
|
|
94
|
+
4. Copy and paste into Claude Desktop extension settings
|
|
95
|
+
|
|
96
|
+
**Available Tools:**
|
|
97
|
+
- `check_balance` - Query Wise balances
|
|
98
|
+
- `get_receive_details` - Get account/routing details for receiving payments
|
|
99
|
+
- `send_money` - Initiate transfers
|
|
100
|
+
|
|
101
|
+
**Test Prompts:**
|
|
102
|
+
```
|
|
103
|
+
"Check my Wise balance"
|
|
104
|
+
"What are my USD account details for receiving money?"
|
|
105
|
+
"Send $10 to John Smith at account 123456789, routing 111000025..."
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
**Troubleshooting:**
|
|
109
|
+
- If tools don't appear: restart Claude Desktop completely
|
|
110
|
+
- If you get "not configured" error: verify API token is set in Settings → Extensions
|
|
111
|
+
- For transfer errors: ensure you provide all required fields (routing number, address, etc. for USD)
|
|
112
|
+
|
|
113
|
+
### For Developers / CLI Users
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
# Install dependencies
|
|
117
|
+
uv sync
|
|
118
|
+
|
|
119
|
+
# Set your API token
|
|
120
|
+
export WISE_API_TOKEN='your-api-key-here'
|
|
121
|
+
|
|
122
|
+
# Check balances
|
|
123
|
+
uv run python -m bankskills.cli.bank.main balance
|
|
124
|
+
|
|
125
|
+
# Get receive details (account/routing info)
|
|
126
|
+
uv run python -m bankskills.cli.bank.main receive-details
|
|
127
|
+
|
|
128
|
+
# Send money (USD ACH example)
|
|
129
|
+
uv run python -m bankskills.cli.bank.main send \
|
|
130
|
+
--source-currency USD --target-currency USD \
|
|
131
|
+
--amount 10.00 \
|
|
132
|
+
--recipient-name "John Smith" \
|
|
133
|
+
--recipient-account "123456789" \
|
|
134
|
+
--recipient-routing-number "111000025" \
|
|
135
|
+
--recipient-country US \
|
|
136
|
+
--recipient-address "123 Main St" \
|
|
137
|
+
--recipient-city "New York" \
|
|
138
|
+
--recipient-state NY \
|
|
139
|
+
--recipient-post-code "10001"
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
## CLI Usage
|
|
143
|
+
|
|
144
|
+
### Check Balances
|
|
145
|
+
|
|
146
|
+
```bash
|
|
147
|
+
# All currencies
|
|
148
|
+
uv run python -m bankskills.cli.bank.main balance
|
|
149
|
+
|
|
150
|
+
# JSON output
|
|
151
|
+
uv run python -m bankskills.cli.bank.main balance --json
|
|
152
|
+
|
|
153
|
+
# Filter by currency
|
|
154
|
+
uv run python -m bankskills.cli.bank.main balance --currency USD
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
### Get Receive Details
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
# All currencies
|
|
161
|
+
uv run python -m bankskills.cli.bank.main receive-details
|
|
162
|
+
|
|
163
|
+
# Filter by currency
|
|
164
|
+
uv run python -m bankskills.cli.bank.main receive-details --currency USD --json
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
### Send Money
|
|
168
|
+
|
|
169
|
+
**USD ACH Transfer:**
|
|
170
|
+
|
|
171
|
+
```bash
|
|
172
|
+
uv run python -m bankskills.cli.bank.main send \
|
|
173
|
+
--source-currency USD --target-currency USD \
|
|
174
|
+
--amount 10.00 \
|
|
175
|
+
--recipient-name "Recipient Name" \
|
|
176
|
+
--recipient-account "123456789" \
|
|
177
|
+
--recipient-routing-number "111000025" \
|
|
178
|
+
--recipient-country US \
|
|
179
|
+
--recipient-address "123 Main St" \
|
|
180
|
+
--recipient-city "New York" \
|
|
181
|
+
--recipient-state NY \
|
|
182
|
+
--recipient-post-code "10001" \
|
|
183
|
+
--recipient-account-type CHECKING
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
**EUR IBAN Transfer:**
|
|
187
|
+
|
|
188
|
+
```bash
|
|
189
|
+
uv run python -m bankskills.cli.bank.main send \
|
|
190
|
+
--source-currency USD --target-currency EUR \
|
|
191
|
+
--amount 10.00 \
|
|
192
|
+
--recipient-name "Recipient Name" \
|
|
193
|
+
--recipient-account "DE89370400440532013000"
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
## Skill Package Usage
|
|
197
|
+
|
|
198
|
+
The skill can be invoked via `run.sh` with JSON input:
|
|
199
|
+
|
|
200
|
+
```bash
|
|
201
|
+
# Balance
|
|
202
|
+
echo '{"action": "balance"}' | skills/bank-skill/run.sh
|
|
203
|
+
|
|
204
|
+
# Receive details
|
|
205
|
+
echo '{"action": "receive-details", "currency": "USD"}' | skills/bank-skill/run.sh
|
|
206
|
+
|
|
207
|
+
# Send money
|
|
208
|
+
echo '{
|
|
209
|
+
"action": "send",
|
|
210
|
+
"sourceCurrency": "USD",
|
|
211
|
+
"targetCurrency": "USD",
|
|
212
|
+
"amount": 10.0,
|
|
213
|
+
"recipientName": "Recipient Name",
|
|
214
|
+
"recipientAccount": "123456789",
|
|
215
|
+
"recipientRoutingNumber": "111000025",
|
|
216
|
+
"recipientCountry": "US",
|
|
217
|
+
"recipientAddress": "123 Main St",
|
|
218
|
+
"recipientCity": "New York",
|
|
219
|
+
"recipientState": "NY",
|
|
220
|
+
"recipientPostCode": "10001"
|
|
221
|
+
}' | skills/bank-skill/run.sh
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
## MCP Server
|
|
225
|
+
|
|
226
|
+
Start the MCP server:
|
|
227
|
+
|
|
228
|
+
```bash
|
|
229
|
+
export WISE_API_TOKEN='your-api-key-here'
|
|
230
|
+
uv run python -m bankskills.mcp.server
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
Available tools:
|
|
234
|
+
- `check_balance` — Query Wise balances
|
|
235
|
+
- `get_receive_details` — Get account/routing details
|
|
236
|
+
- `send_money` — Initiate transfers
|
|
237
|
+
|
|
238
|
+
## Running Tests
|
|
239
|
+
|
|
240
|
+
```bash
|
|
241
|
+
uv run pytest tests/ -v
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
## Development
|
|
245
|
+
|
|
246
|
+
The project structure:
|
|
247
|
+
|
|
248
|
+
```
|
|
249
|
+
bank-skills/
|
|
250
|
+
├── src/bankskills/ # Core implementation
|
|
251
|
+
│ ├── cli/bank/ # CLI commands
|
|
252
|
+
│ ├── core/bank/ # Wise API client & operations
|
|
253
|
+
│ ├── mcp/ # MCP server
|
|
254
|
+
│ └── runtime/ # Skill runner
|
|
255
|
+
├── skills/bank-skill/ # Packaged skill
|
|
256
|
+
│ ├── SKILL.md # Skill documentation
|
|
257
|
+
│ └── run.sh # Skill entry point
|
|
258
|
+
├── tests/ # Test suite
|
|
259
|
+
└── publish/ # Build/bundle scripts
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
## Disclaimer
|
|
263
|
+
|
|
264
|
+
Banking is heavily regulated and requires KYC. You must create a business bank account and assume full liability. This project is for **R&D and exploration only**.
|
|
265
|
+
|
|
266
|
+
- Use at your own risk
|
|
267
|
+
- Do not use a personal bank account
|
|
268
|
+
- Do not connect an agent to an account holding significant funds
|
|
269
|
+
- Wise restricts crypto use; avoid crypto on/off-ramps
|
|
270
|
+
- Automation may conflict with Wise's terms of service—review before use
|
package/package.json
CHANGED