BankSync

Connect AI agents to real bank accounts — transactions, balances, investments, and loans across 15,000+ institutions.

Community: Submitted by a user or imported; check the owner before granting accessOnlineAPI key requiredGlobalFreeRead-only

What it can do

  • Get Data Type Schema: Get the available source fields for a given data type — use this before building fieldMappings in create_feed or update_feed. Returns each field's key (use as sourceField), name,
  • List Feed Sources: List all supported feed source types and the data types each source can produce. Use this to discover valid source × dataType combinations before calling create_feed. Also describes
  • List Workspaces: List all workspaces the authenticated user belongs to. Returns workspaceId, name, and role for each — workspaceId is required by all other tools.

What data it sees

Do you need an account

An API key from the service settings is required

Connect AI agents to real bank accounts — transactions, balances, investments, and loans across 15,000+ institutions. Sync to Notion, Google Sheets, and Airtable.

How to connect

How to connect BankSync to Claude

The server address to paste into Claude settings:

https://banksync.run.tools

  1. Open Claude (claude.ai or the desktop app).
  2. Go to Settings → Connectors.
  3. Click Add custom connector.
  4. Paste the server address copied below into Remote MCP server URL and click Add.
  5. In a chat, click + → Connectors and switch the new connector on.

Custom connectors are available on Free, Pro, Max, Team and Enterprise plans (Free is limited to one). On Team and Enterprise an organization Owner adds the connector first under Organization settings → Connectors.

Authorization

After you click Add, a sign-in window for the service opens. Sign in with your own account and approve access. Claude never sees your password.

How to connect BankSync to ChatGPT

The server address to paste into ChatGPT settings:

https://banksync.run.tools

  1. Open ChatGPT in a browser (chatgpt.com). A Plus, Pro, Business, Enterprise or Edu plan is required.
  2. Turn on developer mode once: Settings → Apps → Advanced settings → Developer mode.
  3. Open Settings → Connectors and click Create.
  4. Fill in the form: Name (anything), Description (one line about what the service does), MCP server URL (copy it below).
  5. Under Authentication choose OAuth if the service requires sign-in, otherwise None. Click Create.
  6. In a new chat open + → Apps/Connectors and enable the connector.

OpenAI has renamed this section before (Connectors → Apps/Plugins). If the label differs, search settings for "developer mode". On Business/Enterprise workspaces an admin must allow custom connectors first.

Authorization

On first use ChatGPT opens the service's sign-in window. Sign in and approve access.

How to connect BankSync to Cursor

The server address to paste into Cursor settings:

https://banksync.run.tools

Fastest: click Open in Cursor below and confirm the prompt.

Manually:

  1. In Cursor open Settings → Cursor Settings → MCP and click Add new global MCP server.
  2. Paste the JSON copied below into ~/.cursor/mcp.json (per project: .cursor/mcp.json in the repo root).
  3. Save the file. The server appears in the MCP list; authorize it there if asked.

Authorization

If the service needs sign-in, an authorize button appears next to the server in the MCP list.

Server tool list (28)

Raw names from tools/list. Only developers need these.

get_data_type_schemaGet the available source fields for a given data type — use this before building fieldMappings in create_feed or update_feed. Returns each field's key (use as sourceField), name, type, description, and whether it is required. Required fields must be mapped before a sync will complete successfully. For extractor/upload feeds, fields are user-defined in extractionConfig — this tool only covers bank sync (sync source) data types.
list_feed_sourcesList all supported feed source types and the data types each source can produce. Use this to discover valid source × dataType combinations before calling create_feed. Also describes what each source type does and what configuration it needs.
list_workspacesList all workspaces the authenticated user belongs to. Returns workspaceId, name, and role for each — workspaceId is required by all other tools.
get_workspaceGet name, subscription plan, and settings for a workspace. Returns 403 if the user is not a member — use list_workspaces to find valid workspaceIds.
list_integrationsList connected destination integrations (Notion, Google Sheets, Airtable) for a workspace. Returns integrationId needed when configuring a feed destination.
delete_integrationRemove a destination integration (Notion, Airtable, Google Sheets) from the workspace. Any feeds using this integration as their destination will fail to sync after removal. To add a new integration, use the BankSync app to complete the OAuth authorization flow.
list_banksList all connected bank/institution connections for a workspace. Returns bankId needed for list_accounts, get_transactions, and other data tools.
get_bankGet a bank connection and its live accounts fetched directly from the institution. Returns bankId, institution name, and accounts with accountId and accountType.
create_bank_linkInitiate a new bank connection. Returns a link token and hosted authorization URL. For Plaid: open authUrl in a browser — the user authenticates with their bank and Plaid returns a public_token. Then call connect_bank with the public_token to complete the connection. For Basiq: open authUrl and follow the authorization flow — the connection becomes active automatically.
connect_bankComplete a Plaid bank connection by exchanging the public_token received from Plaid Link. Call create_bank_link first to get the authorization URL, have the user complete the Plaid flow, then pass the returned public_token here to create the bank connection in the workspace.
delete_bankRemove a bank connection from the workspace. The bank will no longer sync data and existing feeds referencing it will fail until updated.
list_accountsFetch live accounts for a bank connection directly from the institution — not cached. Returns accountId, accountType (checking/savings/investment/loan), balance, and currency. Use accountId with get_transactions, get_balance, etc.
get_accountFetch a single account's current details directly from the institution. Returns accountType, balance, currency, and institution name. Use list_accounts to discover valid accountIds.
get_transactionsFetch bank transactions for an account. For Plaid banks: omit from/to and pass cursor for efficient incremental sync — returns added/modified/removed arrays plus nextCursor. For Basiq banks: use from/to date range. Returns up to 500 transactions per call.
get_balanceFetch the current live balance for an account directly from the institution — not cached. Returns current balance, available balance, and credit limit where applicable.
get_holdingsGet current investment holdings (positions, quantities, market values) for an investment account. Only valid for accounts with accountType="investment" — use list_accounts to check.
get_tradesGet investment transactions (buys, sells, dividends) for an investment account over a date range. Only valid for accounts with accountType="investment" — use list_accounts to check.
get_loanGet loan details (outstanding balance, interest rate, next payment) for a loan or liability account (mortgage, personal loan, credit card). Use list_accounts to find accounts with accountType="loan" or "credit".
list_feedsList all data pipeline feeds in a workspace. Returns feedId, name, source, dataType, and status. Use feedId with trigger_sync, list_jobs, and get_job.
get_feedGet the full configuration and status of a specific feed pipeline, including sourceConfig, destinationConfig, fieldMappings, and schedule. Use list_feeds to find valid feedIds.
create_feedCreate a new data pipeline feed. source must be one of: sync, extractor, upload. dataType must be one of: transactions, balances, trades, holdings, loans, receipts, invoices, documents. Typical workflow: 1. list_banks → find bankId and accountId values 2. list_integrations → find integrationId for destination 3. get_data_type_schema(dataType) → discover available sourceField keys for fieldMappings 4. create_feed → create with sourceConfig + destinationConfig + fieldMappings 5. trigger_sync → run the feed sourceConfig.type must match source. destinationConfig and fieldMappings are optional on creation but required before triggering a sync. Returns the full feed document including generated feedId.
update_feedUpdate a feed's name, configuration, or schedule. Pass only the fields to change — this is a partial update. source and dataType cannot be changed after creation. Use get_feed to see current values. Use get_data_type_schema to check valid sourceField keys before updating fieldMappings.
validate_feedPre-flight validate a feed configuration without creating it. Returns errors (would block creation) and warnings (should be resolved before syncing). Use this before create_feed to catch mistakes early — especially useful when building field mappings. For updates, pass feedId to validate against the existing feed's source/dataType context.
delete_feedPermanently delete a feed and all its sync job history. This cannot be undone. Use cancel_job first if a sync is currently running.
list_jobsList sync job history for a feed, newest first. Use the status filter to check for running jobs before triggering a new sync — only one job can run at a time per feed.
get_jobGet current status and progress of a specific sync job. Poll this after trigger_sync to track completion. Status will be: queued → in_progress → completed (or failed/cancelled).
trigger_syncQueue a new sync job for a feed and return the full job object. Use get_job with the returned jobId to poll for progress. Check list_jobs first — only one job can be queued or running per feed at a time.
cancel_jobCancel a queued or in_progress sync job. Returns the updated job with status="cancelled". Has no effect on completed or failed jobs — check status with get_job first.