| 1 | --- |
| 2 | name: money |
| 3 | description: Bank accounts, balances, and transactions via Plaid. Use when: bank, balance, transactions, spending, accounts, or plaid. |
| 4 | invocation: model+user |
| 5 | --- |
| 6 | |
| 7 | # Money |
| 8 | |
| 9 | ## When to use |
| 10 | Account balances, transaction history, and spending analysis across the |
| 11 | user's bank accounts. |
| 12 | |
| 13 | ## Setup |
| 14 | Requires Plaid API credentials. Fail loud when they are missing: |
| 15 | |
| 16 | ``` |
| 17 | PLAID_CLIENT_ID=... PLAID_SECRET=... # sandbox keys first, production only when asked |
| 18 | ``` |
| 19 | |
| 20 | The Link flow opens in the user's browser — the user completes it, the agent |
| 21 | drives everything after token exchange. Start in `sandbox`; touch |
| 22 | `production` only with explicit approval. |
| 23 | |
| 24 | ## Workflow |
| 25 | 1. Exchange the public token once: `POST /item/public_token/exchange`. |
| 26 | 2. Balances: `POST /accounts/balance`. History: `POST /transactions/sync` |
| 27 | with its cursor, paging until `has_more` is false. |
| 28 | 3. Report with dates, merchant names, and amounts; call out pending vs posted. |
| 29 | 4. Spending analysis aggregates by category or merchant on request. |
| 30 | |
| 31 | ## Non-goals |
| 32 | - Do not move money, pay bills, or initiate transfers. Read-only, always. |
| 33 | - Do not store account or routing numbers beyond the session need. |
| 34 | - Do not paste secrets into chat, logs, or files. |
| 35 |