plaid-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PROVIDER | No | Bank data provider (plaid or teller). Defaults to plaid. | |
| PLAID_ENV | No | Plaid environment (e.g., production, sandbox) | |
| TELLER_ENV | No | Teller environment (e.g., sandbox, dev, prod) | |
| PLAID_SECRET | No | Your Plaid secret | |
| PLAID_CLIENT_ID | No | Your Plaid client ID | |
| TELLER_KEY_PATH | No | Path to Teller private key (required for dev/prod) | |
| TELLER_CERT_PATH | No | Path to Teller certificate (required for dev/prod) | |
| TELLER_APPLICATION_ID | No | Your Teller application ID |
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. Plaid-only: under PROVIDER=teller, run |
| 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. Plaid-only. |
| list_linked_institutions_toolA | List every institution currently linked, with account counts and any errors. Plaid-only — reads the local SQLite items table, which Teller doesn't use. |
| remove_institution_toolA | Unlink an institution (Plaid item) and delete its local data. Plaid-only. |
| list_accounts_toolA | List every account across every linked institution. |
| get_balances_toolB | Live balance lookup. 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-only: Teller has no cursor-based sync; |
| refresh_transactions_toolC | Nudge Plaid to pull fresh transactions from the bank right now. Plaid-only. |
| get_transactions_toolA | Query transactions between two dates. Dates are YYYY-MM-DD. Plaid: reads from the local cache — run sync_transactions first. Teller: fetches live from Teller's API for the date range. Positive amounts = spend. |
| search_transactions_toolC | Fuzzy search across transaction description and merchant name. |
| spending_summary_toolB | Aggregate spending by category | subcategory | merchant | account. Plaid-only: reads the Plaid-shaped cache populated by sync_transactions. |
| get_holdings_toolA | Current investment positions (tickers, quantities, market value, cost basis). Plaid-only — Teller has no INVESTMENTS capability. |
| get_investment_transactions_toolC | Brokerage transactions: buys, sells, dividends, fees. Plaid-only — Teller has no INVESTMENTS capability. |
| get_liabilities_toolA | Credit cards, student loans, mortgages with APRs, balances, due dates. Plaid-only — Teller has no LIABILITIES capability. |
| get_identity_toolC | Account holder names, emails, phones, addresses as reported by the institution. |
| get_income_toolA | Bank-detected income streams. Requires Income product enabled in your Plaid dashboard. Plaid-only — Teller has no INCOME capability. |
| set_account_override_toolB | Annotate a linked card with the real APR when Plaid misses it. Plaid-only. |
| clear_account_override_toolA | Remove any APR override for an account. Plaid-only. |
| list_overrides_toolA | List every account APR override the user has recorded. Plaid-only. |
| add_external_debt_toolC | Track a debt that isn't behind a linked Plaid account. Plaid-only. |
| update_external_debt_toolA | Update any subset of fields on an existing external debt. Plaid-only. |
| remove_external_debt_toolB | Delete an external debt entry. Plaid-only. |
| list_external_debts_toolB | List every external (non-Plaid-linked) debt the user has recorded. Plaid-only. |
| summarize_debt_toolB | Rank every debt and project payoff timelines. Plaid-only — merges Plaid liabilities with local overrides + external debts. |
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 target distinct Plaid resources and actions, but sync_transactions_tool and refresh_transactions_tool overlap in purpose, as do summarize_debt_tool and get_liabilities_tool to a lesser extent. Descriptions help clarify, but an agent could still hesitate between these pairs.
All names use snake_case verb_noun, which is consistent, but most tools redundantly end with _tool while link_account and complete_linking do not. This minor deviation prevents a perfect score.
With 24 tools, the surface is on the heavy side for a finance integration, though each tool covers a distinct Plaid product or debt operation. Some consolidation (e.g., sync/refresh, override CRUD) would improve focus.
The set covers linking, accounts, balances, transactions, investments, liabilities, identity, income, external debt CRUD, and overrides. Minor gaps exist, such as transaction creation/updates and webhook management, but core workflows are well supported.