Skip to main content
Glama
wassim

BankConv MCP server

by wassim

BankConv MCP server

Convert PDF bank statements into transactions, CSV, OFX, QFX, QBO or Xero CSV from Claude, Cursor, VS Code and other AI assistants.

Point your assistant at a statement on your computer and ask for what you need: the transactions to analyse, a CSV, or a file your accounting software imports. The server uploads the PDF to BankConv, waits for the conversion and either returns the transactions or saves the file next to the PDF.

You: Convert ~/Downloads/chase-september.pdf to QBO for QuickBooks Desktop.
Assistant: Saved QBO to ~/Downloads/chase-september.qbo (42 transactions, Sep 1–30, USD).

What you get

  • Transactions with real dates, one signed amount (money in positive, money out negative) and the running balance. Opening balance and total lines are left out.

  • Files: CSV, OFX (Xero, Sage, MYOB, QuickBooks Online), QFX (Quicken), QBO (QuickBooks Desktop Web Connect, with your bank's QuickBooks ID) and Xero CSV (Xero's own columns).

  • Password-protected PDFs, scanned statements and multi-page statements.

Related MCP server: CapyParse MCP Server

Setup

  1. Create an API key in BankConv under Team → API keys (https://app.bankconv.com/teams/api-keys). Conversions use pages from your BankConv plan.

  2. Add the server to your assistant with the key in BANKCONV_API_KEY.

Claude Code

claude mcp add bankconv -e BANKCONV_API_KEY=sk_live_your_key -- npx -y bankconv-mcp

Claude Desktop

Add this to claude_desktop_config.json (Settings → Developer → Edit Config):

{
  "mcpServers": {
    "bankconv": {
      "command": "npx",
      "args": ["-y", "bankconv-mcp"],
      "env": { "BANKCONV_API_KEY": "sk_live_your_key" }
    }
  }
}

Cursor, Windsurf and other clients

Use the same command, args and env in the client's MCP settings (for Cursor, ~/.cursor/mcp.json).

VS Code

{
  "servers": {
    "bankconv": {
      "command": "npx",
      "args": ["-y", "bankconv-mcp"],
      "env": { "BANKCONV_API_KEY": "sk_live_your_key" }
    }
  }
}

Requires Node.js 20 or later.

Tools

Tool

What it does

convert_statement

Convert a PDF on this computer. Returns the transactions, or saves CSV, OFX, QFX, QBO or Xero CSV (next to the PDF unless you give save_to). Takes the PDF password if there is one.

get_transactions

Get the transactions of an earlier conversion.

download_statement

Save an earlier conversion as CSV, OFX, QFX, QBO or Xero CSV.

list_conversions

List recent conversions with their status.

get_credits

Check how many pages are left this billing period.

Example prompts

  • "Convert statement.pdf and tell me my five biggest expenses."

  • "Turn every PDF in ~/Statements/2026 into OFX files for Xero."

  • "Convert amex-march.pdf to QBO for QuickBooks Desktop. The PDF password is 4821."

  • "Total my September spending by category from chase-sep.pdf."

Privacy

The PDF is uploaded to BankConv over HTTPS and processed there. The PDF and its converted files are deleted automatically after 24 hours, or 48 or 72 hours if your team chose a longer window; see security and data handling. The server only reads the files you name and only writes the files you ask for.

Configuration

Variable

Default

BANKCONV_API_KEY

(required)

Your BankConv API key

BANKCONV_API_URL

https://bankconv.com/api/v1

API base URL

License

MIT

Available Tools

5 tools
convert_statementConvert a bank statement PDFA

Convert a PDF bank or credit card statement on this computer with BankConv. Returns the transactions (date, description, signed amount, balance) or saves a file next to the PDF. csv: the statement as a spreadsheet; ofx: Xero, Sage, MYOB, QuickBooks Online; qfx: Quicken; qbo: QuickBooks Desktop (Web Connect); xero: Xero CSV with Xero's own columns. Uses pages from the BankConv account.

ParametersJSON Schema
NameRequiredDescriptionDefault
outputNo"transactions" returns the rows to you; any other value saves that file. csv: the statement as a spreadsheet; ofx: Xero, Sage, MYOB, QuickBooks Online; qfx: Quicken; qbo: QuickBooks Desktop (Web Connect); xero: Xero CSV with Xero's own columns.transactions
save_toNoFor file outputs: a file path or folder. Defaults to the PDF's folder.
passwordNoThe PDF password, if the statement is password-protected.
file_pathYesPath to the PDF statement on this computer.
timeout_secondsNoHow long to wait for the conversion.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes beyond the annotations by disclosing that conversion 'Uses pages from the BankConv account' (a billing/quota constraint) and that file outputs are 'saved next to the PDF' by default. Annotations already cover the read/write and open-world profile, and the description does not contradict them, though it says nothing about overwrite behavior, failure modes, or conversion limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core action and the return/save distinction, then enumerates formats compactly. The format list is dense and duplicates the schema, but nothing is genuinely wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully specifies the returned transaction columns (date, description, signed amount, balance) and the file-save alternative. Remaining gaps are minor: no error/failure behavior, no note on how page consumption scales, and no relationship to get_transactions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all five parameters, including the output enum values that the description largely repeats verbatim. The description adds no format syntax, path semantics, or timeout nuance beyond the schema, hitting the expected baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: converts a PDF bank/credit card statement on this computer via BankConv, and names the concrete outputs (transaction rows or a saved file). It does not, however, distinguish itself from siblings like get_transactions or download_statement, which an agent might reasonably confuse with the 'transactions' output mode.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied ('a PDF bank or credit card statement on this computer') and enumerates format choices, but there is no explicit when-to-use / when-not-to-use guidance and no reference to alternatives such as get_transactions or download_statement. The agent must infer routing from the sibling names alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

download_statementSave a conversion as a fileB

Save an earlier BankConv conversion as a file. csv: the statement as a spreadsheet; ofx: Xero, Sage, MYOB, QuickBooks Online; qfx: Quicken; qbo: QuickBooks Desktop (Web Connect); xero: Xero CSV with Xero's own columns.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatYescsv: the statement as a spreadsheet; ofx: Xero, Sage, MYOB, QuickBooks Online; qfx: Quicken; qbo: QuickBooks Desktop (Web Connect); xero: Xero CSV with Xero's own columns.
tablesNoAdvanced: which tables to read, as page:table indexes from 0 ("0:1,1:0"). Leave out and BankConv picks the transaction tables.
save_toNoA file path or folder. Defaults to the current folder.
conversion_idYesThe conversion id.

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=false, destructiveHint=false and openWorldHint=true, so the write-to-disk nature is partly covered. The description adds nothing beyond that — it does not say whether an existing file is overwritten, where the file lands by default beyond what save_to already documents, or what the call returns. The only content beyond the first sentence is the format list, which is already in the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is well front-loaded and does real work. The second sentence is a long enumeration of format meanings copied wholesale from the schema's enum description, so half the description does not earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-parameter file-export tool with no output schema, the description covers the required format parameter but says nothing about what a successful save returns (a path? a URL?) or the effect of the optional tables/save_to parameters. The schema carries those details, but the description is thin on the outcome of the call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters (format, tables, save_to, conversion_id) are documented in the schema. The description's format sentence is a verbatim duplicate of the schema's enum description, adding no meaning beyond what the schema provides. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (save) and resource (an earlier BankConv conversion as a file), which separates it from convert_statement, which creates a conversion. It does not explicitly name the sibling it differs from, but the word 'earlier' makes the dependency clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'An earlier BankConv conversion' implies a prior conversion must exist and that a conversion_id is needed, which is useful context. However, there is no explicit when-to-use versus convert_statement (exporting vs creating) and no guidance on when a given format is preferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_creditsCheck the page balanceA
Read-only

Check how many BankConv pages the account has left this billing period.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this a read-only, open-world operation, so the safety profile is covered. The description adds useful scoping detail (pages, current billing period) but says nothing about return format, refresh timing, or whether the counter resets.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless read-only tool with no output schema, the description covers what is counted and over what window. A brief note on the returned value's shape would make it fully self-contained, but nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there are no parameter semantics to convey. Baseline 4 applies; nothing is missing on this dimension.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: checking remaining BankConv pages for the billing period. It is clearly distinguishable from siblings like get_transactions and list_conversions, though it does not name them explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied (check remaining quota, presumably before converting), but there is no explicit when-to-use statement, prerequisite, or routing to an alternative. With no overlapping siblings, the omission is less costly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_transactionsGet the transactions of a conversionA
Read-only

Get the transactions of an earlier BankConv conversion: date, description, signed amount and balance, with the account and period.

ParametersJSON Schema
NameRequiredDescriptionDefault
tablesNoAdvanced: which tables to read, as page:table indexes from 0 ("0:1,1:0"). Leave out and BankConv picks the transaction tables.
conversion_idYesThe conversion id.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safe-read profile is covered and the description only needs to add context. It adds the shape of the data returned (date, description, signed amount, balance, account, period), but says nothing about pagination, result limits, or what happens if the conversion id is unknown. Adequate given the annotation coverage, but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence: verb, resource, scope, and payload, with no filler. The field enumeration earns its place because there is no output schema, though the trailing 'with the account and period' is slightly tacked on.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by naming the returned fields, and annotations cover the read-only safety profile, so an agent can call it correctly. It is thin on error behavior and pagination for a potentially large transaction list, but nothing essential is missing for the core call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3; the description covers the required conversion_id implicitly and mentions the account/period framing. The advanced 'tables' page:table parameter is documented only in the schema, and the description adds no syntax or defaulting detail beyond it. 0 params semantics fine.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get the transactions of an earlier BankConv conversion') and even enumerates the returned fields, so the agent knows this is the per-conversion ledger read rather than the credits or statement list. It never names a sibling (list_conversions, download_statement, get_credits) to disambiguate, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'an earlier BankConv conversion' implies the prerequisite that a conversion already exists, which is useful but only implied. There is no explicit when-to-use/when-not guidance and no routing to alternatives such as download_statement or list_conversions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_conversionsList recent conversionsB
Read-only

List the BankConv account's recent conversions with their status, file name and page count.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
statusNo

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds useful context about returned fields (status, file name, page count) but says nothing about pagination, ordering, or how filtering behaves, which a listing tool should disclose.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler; the core purpose and returned fields come first. Nothing extraneous, though there is also very little content to structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description rightly sketches the return values, and annotations cover safety. However, for a two-parameter listing tool it omits all parameter semantics and any pagination/filtering behavior, leaving real gaps an agent must guess at.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and neither parameter (limit, status) is explained in the description. The word 'recent' loosely implies a recency-ordered default, but the limit bound, its default of 15, and the status enum values are left entirely undcoumented, so the description fails to compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a clear verb+resource ('List ... recent conversions') and names the fields returned (status, file name, page count). The resource is distinguishable from siblings like get_transactions and convert_statement, though the description never explicitly contrasts itself with them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides no when-to-use guidance, no exclusions, and no mention of alternatives such as get_transactions or download_statement. Usage is only weakly implied by the word 'recent', leaving the agent to infer when this tool is the right choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 5 tool updatesv0.1.0
    • First observedconvert_statement
    • First observeddownload_statement
    • First observedget_credits
    • First observedget_transactions
    • First observedlist_conversions

TDQS

A3.6/5.0

Scored across 5 tools

Disambiguation4/5

The tools mostly have distinct purposes: convert_statement handles new conversions, get_transactions retrieves transactions from earlier conversions, and download_statement saves earlier conversions as files. However, convert_statement also says it can return transactions or save a file, which creates some overlap with get_transactions and download_statement.

Naming Consistency5/5

All tool names follow a consistent snake_case verb_noun pattern: get_transactions, convert_statement, download_statement, list_conversions, and get_credits. There are no mixed conventions or vague names.

Tool Count5/5

Five tools is well-scoped for a bank statement conversion and retrieval server. Each tool covers a distinct operation: conversion, transaction retrieval, file download, listing, and credit checking.

Completeness4/5

The surface covers the core lifecycle: converting statements, listing conversions, retrieving transactions, downloading files, and checking credits. Minor gaps like deleting or updating conversions may exist, but they are not critical for the primary workflow.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Converts PDF bank statements into structured data (Markdown, JSON, CSV, JSONL) with verified transactions and balance checks, enabling agents to audit numbers.
    5
    5 npm
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Parse and query bank statements — turn PDF statements into structured transactions, accounts, and balances, with balance-reconciliation checks. A deterministic financial memory for AI agents, served as a hosted streamable-HTTP endpoint (API key or OAuth).
    18
    1
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Converts customer-supplied PDF bank statements into checked Excel, CSV, or JSON with balance validation. Runs locally with your own MainBook API key or against MainBook's hosted endpoint, and it never connects to bank accounts.
    5
    MIT