@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.
Files changed (2) hide show
  1. package/README.md +270 -0
  2. 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
@@ -1,8 +1,9 @@
1
1
  {
2
2
  "name": "@singularityhacker/bank-skill",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Check balances, send money, and share receive details via Wise",
5
5
  "files": [
6
+ "README.md",
6
7
  "SKILL.md",
7
8
  "run.sh",
8
9
  "src"