# Plaid

Plaid banking data: accounts, balances, transactions, identity, auth. Exposes **22 actions** covering the full API surface
the agent needs - read and write.

## What it can do

| Method | What it does |
| --- | --- |
| `plaid_link_token_create` | Create a link token to initialize Plaid Link UI - POST /link_token/create. |
| `plaid_item_exchange_public_token` | Exchange public token for access token - POST /item/public_token/exchange. |
| `plaid_item_get` | Get item (access token) metadata - POST /item/get. |
| `plaid_item_remove` | Remove an item (revoke access) - POST /item/remove. |
| `plaid_accounts_list` | List all accounts for an item - POST /accounts/get. |
| `plaid_accounts_balance_get` | Get real-time account balances - POST /accounts/balance/get. |
| `plaid_transactions_get` | Get transactions for a time range - POST /transactions/get. |
| `plaid_transactions_sync` | Sync new/updated transactions incrementally - POST /transactions/sync. |
| `plaid_transactions_search` | Search transactions by merchant/description - POST /transactions/search. |
| `plaid_identity_get` | Get verified identity data - POST /identity/get. |
| `plaid_auth_get` | Get bank account numbers and routing numbers - POST /auth/get. |
| `plaid_institutions_search` | Search institutions by name, routing number, or ID - POST /institutions/search. |
| `plaid_institutions_get_by_id` | Get institution details by ID - POST /institutions/get_by_id. |
| `plaid_investments_holdings_get` | Get investment holdings (securities, stocks, bonds) - POST /investments/holdings/get. |
| `plaid_investments_transactions_get` | Get investment transactions - POST /investments/transactions/get. |
| `plaid_liabilities_get` | Get liability data (credit, mortgages, student loans, HELOC) - POST /liabilities/get. |
| `plaid_asset_report_create` | Create an asset report for lending/underwriting - POST /asset_report/create. |
| `plaid_asset_report_get` | Get an asset report - POST /asset_report/get. |
| `plaid_asset_report_pdf_get` | Get asset report as PDF - POST /asset_report/pdf/get. |
| `plaid_sandbox_item_create` | Create a sandbox item for testing - POST /sandbox/item/create. |
| `plaid_sandbox_item_set_verification_status` | Set sandbox account verification status - POST /sandbox/item/set_verification_status. |
| `plaid_sandbox_public_token_create` | Create a public token for a sandbox item - POST /sandbox/public_token/create. |

## How to get credentials

This connector uses an **API key / token**. Create one in the provider
dashboard, then paste it into FlyMyAI:

- **`PLAID_CLIENT_ID`** - Plaid Dashboard - Team Settings - Keys. (https://dashboard.plaid.com/team/keys)
- **`PLAID_SECRET`** - Same Keys page (sandbox/production).
- **`PLAID_ENV`** - sandbox \| development \| production.

## Fields to fill in FlyMyAI

| FlyMyAI field | Where it comes from |
| --- | --- |
| `PLAID_CLIENT_ID` | Plaid Dashboard - Team Settings - Keys. |
| `PLAID_SECRET` | Same Keys page (sandbox/production). |
| `PLAID_ENV` | sandbox \| development \| production. |

## Troubleshooting

- **`401 Unauthorized` / `403 Forbidden`** - the token is wrong, expired, or missing a required scope - regenerate it.
- **`429 Too Many Requests`** - you hit the provider rate limit; retry after a short backoff.
- **Unexpected `4xx` on writes** - double-check required fields; the agent confirms before write actions.

## Links

- [Plaid API documentation](https://plaid.com/docs/api)
