Tallyproof Statement Converter MCP
Converts bank and credit card statement PDFs or exports into clean, reconciled Excel or CSV transactions with running balance verification and suggested categories.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://statement-converter.zovo.one/mcpWhat you can do with it
- Convert bank statement PDF to Excel
- Reconcile statement balance to the cent
- Turn credit card statement into QuickBooks CSV
Source and maintenance
Protocol and capabilities
- Server
- statement-converter 1.0.2
- MCP protocol
- 2025-06-18
- Tools
- 2 advertised
- Resources
- 1 advertised
- Resource templates
- 1 advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": true
},
"resources": {
"listChanged": true
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
2 advertised
convert_bank_statement — Convert bank statement
Use this when the user attaches a bank or credit card statement (text PDF, or the bank's CSV/Excel export) and wants it converted to Excel or CSV: "convert bank statement to excel", "bank statement pdf to csv", "import my statement into QuickBooks", "does my statement balance". Extracts each transaction (date, description, signed amount, running balance), reconciles opening + transactions = closing to the cent, points to missing or duplicated rows, suggests categories, and returns Excel, CSV and QuickBooks CSV downloads. Does not read scanned images (needs OCR first), does not connect to bank accounts, and is not for non-financial PDFs or general PDF editing.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"file"
],
"properties": {
"file": {
"type": "object",
"required": [
"download_url",
"file_id"
],
"properties": {
"file_id": {
"type": "string",
"description": "ChatGPT file id, e.g. file_abc123."
},
"file_name": {
"type": "string",
"description": "Original file name if known, e.g. statement.pdf."
},
"mime_type": {
"type": "string",
"description": "Media type if known, e.g. application/pdf."
},
"download_url": {
"type": "string",
"description": "Temporary download link for the file, supplied by ChatGPT."
}
},
"description": "The statement to convert: a text PDF downloaded from the bank or card website, or the bank's CSV or Excel (.xlsx) transaction export, e.g. september-statement.pdf."
},
"date_order": {
"enum": [
"MDY",
"DMY"
],
"type": "string",
"description": "Order of numeric dates in a CSV/Excel export: MDY (US, 09/02/2026, default) or DMY (02/09/2026). Detected automatically when a day is above 12."
},
"flip_signs": {
"type": "boolean",
"description": "Only for CSV/Excel exports that list purchases as positive and payments as negative (common in credit card exports): true flips each amount so money out is negative. Default false."
},
"account_type": {
"enum": [
"auto",
"bank",
"credit_card"
],
"type": "string",
"description": "auto (default): a PDF is classified from its text; pasted rows and CSV/Excel exports count as bank unless the balances or the sign pattern show a credit card (the result says so). bank: checking or savings. credit_card: charges are money out and the statement shows a previous and new balance owed. Example: credit_card."
},
"statement_year": {
"type": "integer",
"maximum": 2100,
"minimum": 1990,
"description": "Closing year of the statement, used for dates printed without a year when the period is not on the file, e.g. 2026 (a December-January statement uses the January year)."
},
"closing_balance": {
"type": "number",
"maximum": 10000000000,
"minimum": -10000000000,
"description": "Closing (ending or new) balance in dollars, e.g. 5034.47. Used with opening_balance to prove the total to the cent."
},
"opening_balance": {
"type": "number",
"maximum": 10000000000,
"minimum": -10000000000,
"description": "Opening (beginning or previous) balance in dollars, e.g. 4123.55. Only needed when the file has none, such as a CSV export without a balance column, or to override."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"source",
"account",
"period",
"transactions",
"reconciliation",
"categories",
"months",
"preview",
"warnings",
"downloads",
"note"
],
"properties": {
"note": {
"type": "string"
},
"months": {
"type": "array",
"items": {
"type": "object",
"required": [
"month",
"money_in",
"money_out",
"net",
"count"
],
"properties": {
"net": {
"type": "number"
},
"count": {
"type": "number"
},
"month": {
"type": "string"
},
"money_in": {
"type": "number"
},
"money_out": {
"type": "number"
}
},
"additionalProperties": false
}
},
"period": {
"type": "object",
"required": [
"start",
"end"
],
"properties": {
"end": {
"type": [
"string",
"null"
]
},
"start": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": false
},
"source": {
"type": "object",
"required": [
"file",
"type",
"pages",
"layout"
],
"properties": {
"file": {
"type": "string"
},
"type": {
"type": "string"
},
"pages": {
"type": "number"
},
"layout": {
"type": "string"
}
},
"additionalProperties": false
},
"account": {
"type": "object",
"required": [
"type",
"number"
],
"properties": {
"type": {
"type": "string"
},
"number": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": false
},
"preview": {
"type": "array",
"items": {
"type": "object",
"required": [
"row",
"date",
"description",
"amount",
"balance",
"category"
],
"properties": {
"row": {
"type": "number"
},
"date": {
"type": "string"
},
"amount": {
"type": "number"
},
"balance": {
"type": [
"number",
"null"
]
},
"category": {
"type": "string"
},
"description": {
"type": "string"
}
},
"additionalProperties": false
}
},
"warnings": {
"type": "array",
"items": {
"type": "string"
}
},
"downloads": {
"type": "object",
"required": [
"xlsx",
"csv",
"quickbooks_csv"
],
"properties": {
"csv": {
"type": "string"
},
"xlsx": {
"type": "string"
},
"quickbooks_csv": {
"type": "string"
}
},
"additionalProperties": false
},
"categories": {
"type": "array",
"items": {
"type": "object",
"required": [
"category",
"money_in",
"money_out",
"count"
],
"properties": {
"count": {
"type": "number"
},
"category": {
"type": "string"
},
"money_in": {
"type": "number"
},
"money_out": {
"type": "number"
}
},
"additionalProperties": false
},
"description": "Suggested categories from keyword rules; review before filing."
},
"transactions": {
"type": "number"
},
"reconciliation": {
"type": "object",
"required": [
"status",
"opening_balance",
"closing_balance",
"computed_closing",
"difference",
"money_in",
"money_out",
"net",
"formula",
"balances_from",
"running_balance_breaks",
"suspects",
"checks"
],
"properties": {
"net": {
"type": "number"
},
"checks": {
"type": "array",
"items": {
"type": "string"
}
},
"status": {
"enum": [
"PASS",
"DIFFERENCE",
"UNVERIFIED"
],
"type": "string"
},
"formula": {
"type": "string"
},
"money_in": {
"type": "number"
},
"suspects": {
"type": "array",
"items": {
"type": "object",
"required": [
"row",
"date",
"description",
"amount",
"reason"
],
"properties": {
"row": {
"type": "number"
},
"date": {
"type": "string"
},
"amount": {
"type": "number"
},
"reason": {
"type": "string"
},
"description": {
"type": "string"
}
},
"additionalProperties": false
}
},
"money_out": {
"type": "number"
},
"difference": {
"type": [
"number",
"null"
]
},
"balances_from": {
"type": "string"
},
"closing_balance": {
"type": [
"number",
"null"
]
},
"opening_balance": {
"type": [
"number",
"null"
]
},
"computed_closing": {
"type": [
"number",
"null"
]
},
"running_balance_breaks": {
"type": "number"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}{
"title": "Convert bank statement",
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}summarize_transactions — Summarize transactions
Use this when the user pastes or lists bank or credit card transactions (date, description, amount) and wants them reconciled, totaled by month or category, or exported: "does my statement balance", "money in and out by month", "categorize these transactions", "make a QuickBooks CSV from these". Checks opening + transactions = closing to the cent and the running balance row by row, points to the rows that break it, suggests categories, and returns Excel, CSV and QuickBooks CSV downloads. Do not use when a statement file is attached (use convert_bank_statement); does not give tax or accounting advice.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"transactions"
],
"properties": {
"account_type": {
"enum": [
"auto",
"bank",
"credit_card"
],
"type": "string",
"description": "auto (default): a PDF is classified from its text; pasted rows and CSV/Excel exports count as bank unless the balances or the sign pattern show a credit card (the result says so). bank: checking or savings. credit_card: charges are money out and the statement shows a previous and new balance owed. Example: credit_card."
},
"transactions": {
"type": "array",
"items": {
"type": "object",
"required": [
"date",
"description",
"amount"
],
"properties": {
"date": {
"type": "string",
"maxLength": 40,
"description": "Transaction date, e.g. 2026-09-02, 09/02/2026, or 09/02 with statement_year."
},
"amount": {
"type": "number",
"maximum": 1000000000,
"minimum": -1000000000,
"description": "Signed amount in dollars: money in positive, money out negative, e.g. -45.10. For credit cards, charges negative and payments positive."
},
"balance": {
"type": "number",
"maximum": 10000000000,
"minimum": -10000000000,
"description": "Running balance after this row if the statement shows one, e.g. 4078.45."
},
"description": {
"type": "string",
"maxLength": 300,
"description": "Payee or description as printed, e.g. PAYROLL DEPOSIT ACME INC."
}
}
},
"maxItems": 5000,
"minItems": 1,
"description": "The transactions in statement order, e.g. [{\"date\":\"2026-09-02\",\"description\":\"PAYROLL ACME INC\",\"amount\":2450}, {\"date\":\"2026-09-03\",\"description\":\"GREENLEAF MARKET\",\"amount\":-82.17}]."
},
"statement_year": {
"type": "integer",
"maximum": 2100,
"minimum": 1990,
"description": "Closing year of the statement, used for dates printed without a year when the period is not on the file, e.g. 2026 (a December-January statement uses the January year)."
},
"closing_balance": {
"type": "number",
"maximum": 10000000000,
"minimum": -10000000000,
"description": "Closing (ending or new) balance in dollars, e.g. 5034.47. Used with opening_balance to prove the total to the cent."
},
"opening_balance": {
"type": "number",
"maximum": 10000000000,
"minimum": -10000000000,
"description": "Opening (beginning or previous) balance in dollars, e.g. 4123.55. Only needed when the file has none, such as a CSV export without a balance column, or to override."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"source",
"account",
"period",
"transactions",
"reconciliation",
"categories",
"months",
"preview",
"warnings",
"downloads",
"note"
],
"properties": {
"note": {
"type": "string"
},
"months": {
"type": "array",
"items": {
"type": "object",
"required": [
"month",
"money_in",
"money_out",
"net",
"count"
],
"properties": {
"net": {
"type": "number"
},
"count": {
"type": "number"
},
"month": {
"type": "string"
},
"money_in": {
"type": "number"
},
"money_out": {
"type": "number"
}
},
"additionalProperties": false
}
},
"period": {
"type": "object",
"required": [
"start",
"end"
],
"properties": {
"end": {
"type": [
"string",
"null"
]
},
"start": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": false
},
"source": {
"type": "object",
"required": [
"file",
"type",
"pages",
"layout"
],
"properties": {
"file": {
"type": "string"
},
"type": {
"type": "string"
},
"pages": {
"type": "number"
},
"layout": {
"type": "string"
}
},
"additionalProperties": false
},
"account": {
"type": "object",
"required": [
"type",
"number"
],
"properties": {
"type": {
"type": "string"
},
"number": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": false
},
"preview": {
"type": "array",
"items": {
"type": "object",
"required": [
"row",
"date",
"description",
"amount",
"balance",
"category"
],
"properties": {
"row": {
"type": "number"
},
"date": {
"type": "string"
},
"amount": {
"type": "number"
},
"balance": {
"type": [
"number",
"null"
]
},
"category": {
"type": "string"
},
"description": {
"type": "string"
}
},
"additionalProperties": false
}
},
"warnings": {
"type": "array",
"items": {
"type": "string"
}
},
"downloads": {
"type": "object",
"required": [
"xlsx",
"csv",
"quickbooks_csv"
],
"properties": {
"csv": {
"type": "string"
},
"xlsx": {
"type": "string"
},
"quickbooks_csv": {
"type": "string"
}
},
"additionalProperties": false
},
"categories": {
"type": "array",
"items": {
"type": "object",
"required": [
"category",
"money_in",
"money_out",
"count"
],
"properties": {
"count": {
"type": "number"
},
"category": {
"type": "string"
},
"money_in": {
"type": "number"
},
"money_out": {
"type": "number"
}
},
"additionalProperties": false
},
"description": "Suggested categories from keyword rules; review before filing."
},
"transactions": {
"type": "number"
},
"reconciliation": {
"type": "object",
"required": [
"status",
"opening_balance",
"closing_balance",
"computed_closing",
"difference",
"money_in",
"money_out",
"net",
"formula",
"balances_from",
"running_balance_breaks",
"suspects",
"checks"
],
"properties": {
"net": {
"type": "number"
},
"checks": {
"type": "array",
"items": {
"type": "string"
}
},
"status": {
"enum": [
"PASS",
"DIFFERENCE",
"UNVERIFIED"
],
"type": "string"
},
"formula": {
"type": "string"
},
"money_in": {
"type": "number"
},
"suspects": {
"type": "array",
"items": {
"type": "object",
"required": [
"row",
"date",
"description",
"amount",
"reason"
],
"properties": {
"row": {
"type": "number"
},
"date": {
"type": "string"
},
"amount": {
"type": "number"
},
"reason": {
"type": "string"
},
"description": {
"type": "string"
}
},
"additionalProperties": false
}
},
"money_out": {
"type": "number"
},
"difference": {
"type": [
"number",
"null"
]
},
"balances_from": {
"type": "string"
},
"closing_balance": {
"type": [
"number",
"null"
]
},
"opening_balance": {
"type": [
"number",
"null"
]
},
"computed_closing": {
"type": [
"number",
"null"
]
},
"running_balance_breaks": {
"type": "number"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}{
"title": "Summarize transactions",
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}Prompts
Not advertised
Resources
1 advertised
statement-converter-widget — Tallyproof Statement Converter view
Interactive view for Tallyproof Statement Converter.
ui://widget/statement-converter-v1-1.0.2-d41085b12ef98ea98972b97685cf935fbac5f9f2375053f183c5bc07020ef29c.htmlstatement-converter-widget-legacy — Tallyproof Statement Converter view (previous versions)
ui://widget/statement-converter-{version}.html30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 694 ms
- 95th percentile latency
- 694 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 694 ms · metadata changed · 2 tool(s), 1 resource(s), 1 resource template(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http tallyproof-statement-converter-mcp https://statement-converter.zovo.one/mcpCodex
codex mcp add tallyproof-statement-converter-mcp --url https://statement-converter.zovo.one/mcpCursor
{
"mcpServers": {
"tallyproof-statement-converter-mcp": {
"url": "https://statement-converter.zovo.one/mcp"
}
}
}Cline
{
"mcpServers": {
"tallyproof-statement-converter-mcp": {
"type": "streamableHttp",
"url": "https://statement-converter.zovo.one/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"tallyproof-statement-converter-mcp": {
"type": "http",
"url": "https://statement-converter.zovo.one/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http tallyproof-statement-converter-mcp https://statement-converter.zovo.one/mcpClaude Desktop
{
"mcpServers": {
"tallyproof-statement-converter-mcp": {
"url": "https://statement-converter.zovo.one/mcp"
}
}
}Windsurf
{
"mcpServers": {
"tallyproof-statement-converter-mcp": {
"serverUrl": "https://statement-converter.zovo.one/mcp"
}
}
}Let your agent find its tools
Find servers like Tallyproof Statement Converter MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.