Bank Transactions (Broadcast)
Fetch and display transaction history from ALL connected banks as a single merged chronological list.
Why merge transactions across banks
People pay for things from different accounts — groceries from Monobank, rent from PrivatBank, subscriptions from either. A chronological view across all banks gives the complete picture of their financial activity without manual aggregation.
Workflow
Parse the date range — if the user says "last month" or "за березень", convert to concrete dates. Default to the last 30 days if no range specified.
Discover transaction tools — search for tools with keywords:
statement,transaction,extract,випискаacross all connected MCP servers.Fetch from ALL banks in parallel — call each bank's transaction/statement endpoint with the date range. Be aware of format differences:
- Monobank:
from/toas Unix timestamps (seconds), max 31 days per request, rate limit 1 req/60s per account - PrivatBank:
startDate/endDateas DD-MM-YYYY, cursor-based pagination viafollowId
For full API details, read
references/in thebank-api-integrationskill.- Monobank:
Handle pagination — some banks limit results per request. Follow pagination cursors until all transactions for the period are fetched.
Handle rate limits — Monobank allows 1 statement request per 60 seconds per account. For 90-day ranges, split into 3 × 31-day chunks with 60s delays between requests. Inform the user this will take a moment.
Normalize amounts — Monobank returns kopiykas (÷100), PrivatBank returns decimal strings. Normalize to UAH decimal before merging.
Merge and sort — combine all transactions into one list, sort by date descending (newest first). Include the bank name as a column so the user knows which account each transaction came from.
Display as table:
Транзакції (01.03.2026 – 23.03.2026):
| Дата | Банк | Опис | Категорія | Сума |
|------------|------------|-------------------|-------------|-------------|
| 23.03.2026 | Monobank | Сільпо | Продукти | -₴345,67 |
| 22.03.2026 | PrivatBank | Bolt | Транспорт | -₴89,00 |
| 22.03.2026 | Monobank | Зарплата | Дохід | +₴25 000,00 |
| 21.03.2026 | PrivatBank | Rozetka | Покупки | -₴1 299,00 |
Знайдено: 47 транзакцій | Monobank: 28 | PrivatBank: 19
⚠ PrivatBank: отримано тільки 19 з можливих (ліміт API)
Auto-categorize — use the
transaction-categorizationskill to assign categories based on MCC codes and merchant patterns. This enriches the raw transaction data with spending categories.Emit events — emit
transaction_addedevents for new transactions. See thebroadcast-patternskill.
Filtering
After fetching, support filtering by:
- Category — "покажи тільки продукти"
- Bank — "тільки Monobank" (filter the merged list, don't skip fetching)
- Amount — "більше 1000 грн"
- Search — "знайди Rozetka"
Fetch from ALL banks first, then filter locally — this is consistent with the BROADCAST pattern.
Related skills
| Need | Skill |
|---|---|
| Bank API details, date formats, pagination | bank-api-integration |
| Auto-categorization of transactions | transaction-categorization |
| Budget tracking against transactions | budget-alerts |
| Export transactions to CSV/PDF | report-export |