Skip to main content
Glama

Zovo Bank File Converter

Convert bank statement to QBO

convert_statement_to_qbo
Read-only

Use this when the user attaches a bank or credit card statement (text PDF, CSV or Excel export) and wants to convert the bank statement to a QBO file, or an OFX, QIF or QuickBooks CSV: "convert pdf to qbo", "bank statement to ofx", "csv to qif". Returns a QuickBooks Web Connect .qbo, OFX 1.0.2 and OFX 2 files, a QIF, a 3-column QuickBooks CSV and an Excel review sheet, with stable unique FITIDs, the statement period and the ending balance, and checks opening + transactions = closing. Does not read scans or photos (use generate_qbo_file with the rows you can read) and does not connect to banks or QuickBooks.

Input Schema

NameRequiredDescriptionDefault
fileYesThe statement to convert: a text PDF, or the CSV or Excel (.xlsx) export from online banking, e.g. chase-sept-2026.pdf.
bank_idNoOptional BANKID for the OFX files: the bank's 9-digit ABA number printed on checks, e.g. 121000248. Default 000000000.
currencyNoISO currency code, e.g. USD (default), CAD, GBP.
intu_bidNoQuickBooks Web Connect bank id (INTU.BID) for the .qbo file. Default 3000. Use the id of your own bank if QuickBooks Desktop asks for a supported bank.
date_orderNoOrder of numeric dates: MDY (default, US) or DMY. Detected from the file when a day is above 12.
flip_signsNoOnly for CSV/Excel card exports that list purchases as positive: true flips every amount. Default false.
account_typeNochecking (default), savings, money_market, credit_card or line_of_credit. auto reads it from a PDF statement. Example: credit_card.
account_last4NoLast 4 digits of the account (or any short label) used as the account id QuickBooks links to, e.g. 4821. Default 0000. Never send the full account number.
statement_yearNoYear for dates printed without one, e.g. 2026.
closing_balanceNoEnding balance for LEDGERBAL, e.g. "$5,034.47". If unknown, the files say so (see result).
opening_balanceNoOpening balance if the file has none, e.g. 4123.55. With closing_balance it proves no row is missing.
qif_date_formatNoDate order inside the QIF file: MDY (default, Quicken US) or DMY (Quicken UK, MoneyDance in Europe).

Output Schema

NameRequiredDescriptionDefault
periodYes
sourceYes
totalsYes
accountYes
previewYes
warningsYes
downloadsYes
file_checkYes
import_stepsYes
transactionsYes
unread_linesYes
not_convertedYes
preview_countNo
ending_balanceYes
reconciliationYes
not_converted_countYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, and the description usefully reinforces this ("does not connect to banks or QuickBooks") while adding real value: the exact artifact set returned, stable unique FITIDs, and the opening + transactions = closing validation. However, it never says what happens when that balance check fails — whether the tool errors, warns, or still emits files — which is the key behavioral fact an agent needs before calling it on a messy statement.

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?

The trigger clause is front-loaded and every element — example utterances, output list, validation claim, exclusion, sibling pointer — carries information. The middle is a long comma-chained sentence that could be split for scannability, but there is no filler or repetition.

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

Completeness5/5

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

An output schema exists, so return values need no exhaustive explanation, and the description still summarizes them at the right altitude. With 12 optional parameters fully documented in the schema and a nested file object, the remaining unknowns (behavior on a failed balance check) are minor rather than structural.

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 every one of the 12 parameters already carries its own documentation and the baseline applies. The description adds only indirect meaning, tying opening_balance and closing_balance to the balance proof; it says nothing about intu_bid, bank_id, flip_signs, date_order or qif_date_format, so it does not supplement the schema on the parameters most likely to be misused.

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

Purpose5/5

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

States a specific verb and resource (convert a bank/credit card statement into a QBO file) and immediately widens the output set to OFX, QIF and QuickBooks CSV. The final clause names the sibling generate_qbo_file and the condition that selects it, so an agent can distinguish the two without opening either schema.

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

Usage Guidelines5/5

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

Opens with an explicit trigger (user attaches a text PDF, CSV or Excel export and wants a converted file), supplies real user phrasings like "csv to qif", and closes with an explicit exclusion plus the recommended alternative for scans and photos. When-to-use, when-not-to-use and the alternative are all present.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources