bank
You have read-only access to the user's own bank accounts through the bank MCP server. There are no payment tools.
Ground rules
- Amounts are signed: negative is money out. Use the
booked balance for totals and net worth. available can include an overdraft or a credit line, so a mortgage can show a positive available while booked is deeply negative.
- Refer to accounts by their label. Run
list_accounts once per conversation to see labels and uids. If an account has no label, suggest one and set it with set_account_label.
- Banks return limited history, often 90 days and rarely more than two years. If a range comes back empty, say the bank returned nothing rather than assuming there was no activity.
- Do not invent or "adjust" a balance or transaction. If the user asks for a number to look different than it is, decline and offer to explain the real one.
- Keep answers short. Numbers in the account's currency, rounded to whole units unless cents matter.
Account map
Fill this in for the user (or ask them to). Copy it into the user's own copy of this skill.
| Label |
Purpose |
Treat as |
| Everyday |
Salary in, cards and bills out |
Personal spending |
| Savings |
Buffer |
Personal, exclude from spending |
| Joint expenses |
Shared household costs, funded by fixed monthly transfers from each partner |
Shared spending |
| Housing |
Mortgage payments and housing bills |
Shared spending |
| Mortgage |
Loan |
Liability, not spending |
Transfers between the user's own accounts are not income or spending. Detect them as pairs: same amount, opposite sign, within two days, on two different accounts. When the user has a partner with unlinked accounts, the partner's transfers into shared accounts show up as income on the shared side; label them "partner contribution", not income.
Categorisation
Use the counterparty first, then the description. Categories:
income, transfer, housing, utilities, groceries, eating out, transport, subscriptions, shopping, health, kids, travel, insurance, fees, cash, other.
Rules of thumb:
- Recurring same-amount debits from a company: subscriptions (streaming, phone, gym, software) or utilities (power, water, heating, internet) or insurance.
- Supermarket chains and grocers: groceries. Restaurants, cafés, takeaway apps: eating out.
- Public transport, fuel, parking, ride hailing, tolls, bridge fees: transport.
- Mortgage and rent: housing. Property tax and housing association fees: housing.
- Pharmacies, doctors, dentists: health. Daycare, school, kids' clubs: kids.
- Airlines, hotels, foreign card payments in a cluster: travel.
- Card fee, interest, currency surcharge: fees.
Add the user's own rules below as pattern → category lines and apply them before the rules of thumb:
# STRIPE PAYOUT → income (client invoices)
# ACME INSURANCE → insurance
Monthly review format
- Headline: income, spending, net, savings rate. One line.
- Spending by category, largest first, with share of total. Compare to the previous month if you fetched it.
- Ten largest single expenses with date, counterparty, account.
- Recurring items seen this month and their yearly cost.
- Two or three observations worth acting on. Concrete: "Eating out was 40% above the three-month average; three of the ten largest expenses were restaurants."
Watches
Use create_watch when the user says "tell me when", "let me know if", "has X paid yet, keep an eye on it":
- Waiting for a payment:
credit_missing_by with match = payer name and by_date = due date. It notifies when the money arrives or when the date passes.
- Cash floor:
balance_below on the everyday account.
- Fraud and surprises:
large_debit with an amount around three times the usual biggest card payment.
Notifications go to the server's webhook. If create_watch says no webhook is configured, tell the user to set NOTIFY_WEBHOOK_URL on the server; check_watches still works on demand.
1---2name: bank3description: Answer questions about the user's own bank accounts and money using the bank MCP tools (list_accounts, get_balances, get_transactions, watches). Use whenever the user asks about balances, spending, income, subscriptions, whether a payment arrived, or wants a monthly review. Encodes the account map and categorisation rules so answers are consistent.4---56# bank78You have read-only access to the user's own bank accounts through the `bank` MCP server. There are no payment tools.910## Ground rules1112- Amounts are signed: negative is money out. Use the `booked` balance for totals and net worth. `available` can include an overdraft or a credit line, so a mortgage can show a positive `available` while `booked` is deeply negative.13- Refer to accounts by their label. Run `list_accounts` once per conversation to see labels and uids. If an account has no label, suggest one and set it with `set_account_label`.14- Banks return limited history, often 90 days and rarely more than two years. If a range comes back empty, say the bank returned nothing rather than assuming there was no activity.15- Do not invent or "adjust" a balance or transaction. If the user asks for a number to look different than it is, decline and offer to explain the real one.16- Keep answers short. Numbers in the account's currency, rounded to whole units unless cents matter.1718## Account map1920Fill this in for the user (or ask them to). Copy it into the user's own copy of this skill.2122| Label | Purpose | Treat as |23|---|---|---|24| Everyday | Salary in, cards and bills out | Personal spending |25| Savings | Buffer | Personal, exclude from spending |26| Joint expenses | Shared household costs, funded by fixed monthly transfers from each partner | Shared spending |27| Housing | Mortgage payments and housing bills | Shared spending |28| Mortgage | Loan | Liability, not spending |2930Transfers between the user's own accounts are not income or spending. Detect them as pairs: same amount, opposite sign, within two days, on two different accounts. When the user has a partner with unlinked accounts, the partner's transfers into shared accounts show up as income on the shared side; label them "partner contribution", not income.3132## Categorisation3334Use the counterparty first, then the description. Categories:3536income, transfer, housing, utilities, groceries, eating out, transport, subscriptions, shopping, health, kids, travel, insurance, fees, cash, other.3738Rules of thumb:39- Recurring same-amount debits from a company: subscriptions (streaming, phone, gym, software) or utilities (power, water, heating, internet) or insurance.40- Supermarket chains and grocers: groceries. Restaurants, cafés, takeaway apps: eating out.41- Public transport, fuel, parking, ride hailing, tolls, bridge fees: transport.42- Mortgage and rent: housing. Property tax and housing association fees: housing.43- Pharmacies, doctors, dentists: health. Daycare, school, kids' clubs: kids.44- Airlines, hotels, foreign card payments in a cluster: travel.45- Card fee, interest, currency surcharge: fees.4647Add the user's own rules below as `pattern → category` lines and apply them before the rules of thumb:4849```50# STRIPE PAYOUT → income (client invoices)51# ACME INSURANCE → insurance52```5354## Monthly review format55561. Headline: income, spending, net, savings rate. One line.572. Spending by category, largest first, with share of total. Compare to the previous month if you fetched it.583. Ten largest single expenses with date, counterparty, account.594. Recurring items seen this month and their yearly cost.605. Two or three observations worth acting on. Concrete: "Eating out was 40% above the three-month average; three of the ten largest expenses were restaurants."6162## Watches6364Use `create_watch` when the user says "tell me when", "let me know if", "has X paid yet, keep an eye on it":6566- Waiting for a payment: `credit_missing_by` with `match` = payer name and `by_date` = due date. It notifies when the money arrives or when the date passes.67- Cash floor: `balance_below` on the everyday account.68- Fraud and surprises: `large_debit` with an amount around three times the usual biggest card payment.6970Notifications go to the server's webhook. If `create_watch` says no webhook is configured, tell the user to set NOTIFY_WEBHOOK_URL on the server; `check_watches` still works on demand.