plaid-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PLAID_ENV | Yes | Plaid environment: 'production' or 'sandbox' (default is 'production') | |
| PLAID_MCP_DB | No | Path to SQLite database file (default is '~/.plaid-mcp/plaid.db') | |
| PLAID_SECRET | Yes | Your Plaid secret from dashboard.plaid.com (sandbox or production) | |
| MCP_AUTH_TOKEN | No | Random 32-byte token for HTTP mode authentication (required for remote deployment) | |
| PLAID_PRODUCTS | No | Comma-separated list of Plaid products required at link time (e.g., 'transactions') | |
| PLAID_CLIENT_ID | Yes | Your Plaid client ID from dashboard.plaid.com | |
| PLAID_CLIENT_NAME | No | Client name shown to users in Plaid Link (default is 'plaid-mcp') | |
| PLAID_WEBHOOK_URL | No | URL for webhook-driven link completion (optional, for remote deployment) | |
| PLAID_COUNTRY_CODES | No | Comma-separated country codes (e.g., 'US' or 'US,CA,GB') | |
| PLAID_OPTIONAL_PRODUCTS | No | Comma-separated list of Plaid products requested if supported (e.g., 'investments,liabilities,identity') |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| link_accountA | Start a new Plaid Link session. Returns a URL the user opens in their browser to authenticate with their bank. After they finish, call complete_linking with the returned link_token. |
| complete_linkingA | Finalize a Link session once the user has completed it in their browser. Exchanges the public_token for a permanent access_token and caches accounts. |
| list_linked_institutions_toolA | List every institution currently linked, with account counts and any errors. |
| remove_institution_toolB | Unlink an institution (Plaid item) and delete its local data. |
| list_accounts_toolA | List every account across every linked institution (from the local cache). |
| get_balances_toolA | Live balance lookup (hits Plaid, not cached). Filter by account_id if given. |
| sync_transactions_toolA | Pull the latest transactions from Plaid into the local cache. Idempotent and incremental — uses cursors from the last sync. Plaid's first sync after linking an institution runs asynchronously;
when wait_for_ready is True (default), this tool blocks briefly until
the historical pull reports HISTORICAL_UPDATE_COMPLETE. Returned
|
| refresh_transactions_toolA | Nudge Plaid to pull fresh transactions from the bank right now. Use when a user just made a purchase and wants to see it, or when transactions look stale. Plaid normally refreshes on its own every few hours; this forces an immediate pull. Asynchronous — wait 30-60s then call sync_transactions to ingest any new data. Pass item_id to refresh one institution, or leave empty to refresh everything. Some smaller banks don't support on-demand refresh. |
| get_transactions_toolA | Query cached transactions. Dates are YYYY-MM-DD. Run sync_transactions first to refresh. Positive amounts = spend. |
| search_transactions_toolC | Fuzzy search across transaction description and merchant name. |
| spending_summary_toolC | Aggregate spending by category | subcategory | merchant | account. |
| get_holdings_toolC | Current investment positions (tickers, quantities, market value, cost basis). |
| get_investment_transactions_toolC | Brokerage transactions: buys, sells, dividends, fees. |
| get_liabilities_toolC | Credit cards, student loans, mortgages with APRs, balances, due dates. |
| get_identity_toolC | Account holder names, emails, phones, addresses as reported by the institution. |
| get_income_toolB | Bank-detected income streams. Requires Income product enabled in your Plaid dashboard. |
| set_account_override_toolA | Annotate a linked card with the real APR when Plaid misses it. Common case: Citi doesn't consistently report 0% intro / balance-transfer promos through /liabilities/get. Use this to record the true effective APR and (optionally) a promo expiration date so summarize_debt_tool can reason honestly. After the promo_expires date, payoff analysis reverts to Plaid's reported purchase APR. |
| clear_account_override_toolC | Remove any APR override for an account. |
| list_overrides_toolB | List every account APR override the user has recorded. |
| add_external_debt_toolA | Track a debt that isn't behind a linked Plaid account. Use for BNPL (Affirm, Klarna), medical bills, 401(k) loans, or debts at
non-linkable lenders. |
| update_external_debt_toolC | Update any subset of fields on an existing external debt. |
| remove_external_debt_toolC | Delete an external debt entry. |
| list_external_debts_toolA | List every external (non-Plaid-linked) debt the user has recorded. |
| summarize_debt_toolA | Rank every debt and project payoff timelines. Merges Plaid-reported credit cards with user APR overrides and any external debts, then ranks by strategy:
|
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 24 tools
Most tools have distinct purposes, but some overlap exists. For example, get_balances_tool and list_accounts_tool both provide account information, though one is live and the other cached. Similarly, refresh_transactions_tool and sync_transactions_tool both handle transaction updates, but with different timing and mechanisms. The descriptions help clarify these distinctions, preventing major confusion.
The naming is mixed, with no single consistent pattern. Some tools use verb_noun (e.g., link_account, search_transactions_tool), others use noun_verb (e.g., spending_summary_tool), and some are more descriptive (e.g., summarize_debt_tool). While all names are readable and snake_case is used throughout, the lack of a uniform verb-first or noun-first convention reduces predictability.
With 24 tools, the count is on the higher side but reasonable for a comprehensive financial data server like Plaid. It covers a wide range of operations from account linking to debt analysis, which justifies the breadth. However, it borders on being heavy, as some tools might be consolidated (e.g., transaction-related tools).
The tool set provides excellent coverage for financial data management. It includes core CRUD operations (e.g., add/remove/update external debts, link/remove institutions), data retrieval (balances, transactions, holdings, liabilities), and advanced analysis (spending summaries, debt payoff projections). There are no obvious gaps; agents can perform end-to-end workflows from linking accounts to analyzing financial health.