Normalize bank statements (CSV, camt, MT940, OFX, QIF) to JSON, analyze, export.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Paid ($0.01): Parses a statement and adds analysis: monthly totals, top counterparties, recurring payments, suspected duplicates, largest transactions and balance reconciliation. Set include_transactions=false to receive only the analysis. JSON body up to 1000 KB. Failed calls (4xx/5xx) are not settled. Without a payment header the result is the x402 payment requirements.
The statement file as text (UTF-8). PDF and scanned images are not supported.
YYYY-MM-DD; flags recurring payments that stopped before this date.
Skip auto-detection.
CSV: map field names (date, amount, description, ...) to exact header names.
CSV decimal separator override.
Fallback ISO 4217 currency when the file has none, e.g. SEK.
CSV delimiter override: comma, semicolon, tab or pipe.
CSV date order override for ambiguous dates.
Add the raw source fields to every transaction.
Default true. false returns only the analysis.
Paid ($0.01): Parses a statement and adds analysis: monthly totals, top counterparties, recurring payments, suspected duplicates, largest transactions and balance reconciliation. Set include_transactions=false to receive only the analysis. JSON body up to 1000 KB. Failed calls (4xx/5xx) are not settled. Without a payment header the result is the x402 payment requirements.
| Argument | Type | Description |
|---|---|---|
| today | string | YYYY-MM-DD; flags recurring payments that stopped before this date. |
| format | string | Skip auto-detection. |
| columns | object | CSV: map field names (date, amount, description, ...) to exact header names. |
| content* | string | The statement file as text (UTF-8). PDF and scanned images are not supported. |
| decimal | string | CSV decimal separator override. |
| currency | string | Fallback ISO 4217 currency when the file has none, e.g. SEK. |
| delimiter | string | CSV delimiter override: comma, semicolon, tab or pipe. |
| dateFormat | string | CSV date order override for ambiguous dates. |
| includeRaw | boolean | Add the raw source fields to every transaction. |
| include_transactions | boolean | Default true. false returns only the analysis. |
{
"type": "object",
"required": [
"content"
],
"properties": {
"today": {
"type": "string",
"description": "YYYY-MM-DD; flags recurring payments that stopped before this date."
},
"format": {
"enum": [
"csv",
"camt",
"mt940",
"ofx",
"qif"
],
"type": "string",
"description": "Skip auto-detection."
},
"columns": {
"type": "object",
"description": "CSV: map field names (date, amount, description, ...) to exact header names.",
"additionalProperties": {
"type": "string"
}
},
"content": {
"type": "string",
"description": "The statement file as text (UTF-8). PDF and scanned images are not supported."
},
"decimal": {
"enum": [
",",
"."
],
"type": "string",
"description": "CSV decimal separator override."
},
"currency": {
"type": "string",
"description": "Fallback ISO 4217 currency when the file has none, e.g. SEK."
},
"delimiter": {
"type": "string",
"description": "CSV delimiter override: comma, semicolon, tab or pipe."
},
"dateFormat": {
"enum": [
"ymd",
"dmy",
"mdy"
],
"type": "string",
"description": "CSV date order override for ambiguous dates."
},
"includeRaw": {
"type": "boolean",
"description": "Add the raw source fields to every transaction."
},
"include_transactions": {
"type": "boolean",
"description": "Default true. false returns only the analysis."
}
},
"additionalProperties": false
}Paid ($0.005): Parses a statement and exports it as normalized CSV, an hledger journal, a SIE4 file (experimental) or JSON. The converted file is returned as a string in the content field. JSON body up to 1000 KB. Failed calls (4xx/5xx) are not settled. Without a payment header the result is the x402 payment requirements.
| Argument | Type | Description |
|---|---|---|
| to* | string | Target format. |
| format | string | Skip auto-detection. |
| columns | object | CSV: map field names (date, amount, description, ...) to exact header names. |
| company | string | Company name for the SIE4 header. |
| content* | string | The statement file as text (UTF-8). PDF and scanned images are not supported. |
| decimal | string | CSV decimal separator override. |
| currency | string | Fallback ISO 4217 currency when the file has none, e.g. SEK. |
| delimiter | string | CSV delimiter override: comma, semicolon, tab or pipe. |
List the supported statement formats, CSV column synonyms, limits and prices. Free.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Paid ($0.005): Parses a bank statement (CSV from any bank, camt.052/053/054, MT940, OFX/QFX, QIF) into normalized JSON: accounts, balances and signed transactions with ISO dates, counterparty, reference and OCR number. Deterministic, no AI, nothing stored. JSON body up to 1000 KB. Failed calls (4xx/5xx) are not settled. Without a payment header the result is the x402 payment requirements.
| Argument | Type | Description |
|---|---|---|
| format | string | Skip auto-detection. |
| columns | object | CSV: map field names (date, amount, description, ...) to exact header names. |
| content* | string | The statement file as text (UTF-8). PDF and scanned images are not supported. |
| decimal | string | CSV decimal separator override. |
| currency | string | Fallback ISO 4217 currency when the file has none, e.g. SEK. |
| delimiter | string | CSV delimiter override: comma, semicolon, tab or pipe. |
| dateFormat | string | CSV date order override for ambiguous dates. |
| includeRaw | boolean |
Free demo: parse a statement (max 24 KB) into normalized JSON; returns the first 100 transactions plus an analysis preview. Rate limited to 20 calls per hour.
| Argument | Type | Description |
|---|---|---|
| format | string | Skip auto-detection. |
| columns | object | CSV: map field names (date, amount, description, ...) to exact header names. |
| content* | string | The statement file as text (UTF-8). PDF and scanned images are not supported. |
| decimal | string | CSV decimal separator override. |
| currency | string | Fallback ISO 4217 currency when the file has none, e.g. SEK. |
| delimiter | string | CSV delimiter override: comma, semicolon, tab or pipe. |
| dateFormat | string | CSV date order override for ambiguous dates. |
| includeRaw | boolean | Add the raw source fields to every transaction. |
| dateFormat | string | CSV date order override for ambiguous dates. |
| includeRaw | boolean | Add the raw source fields to every transaction. |
| bankAccount | string | Bank account number (SIE4, e.g. 1930) or ledger account (hledger). |
| assetAccount | string | hledger asset account name. |
| incomeAccount | string | Counter account for incoming money. |
| expenseAccount | string | Counter account for outgoing money. |
{
"type": "object",
"required": [
"content",
"to"
],
"properties": {
"to": {
"enum": [
"csv",
"hledger",
"sie4",
"json"
],
"type": "string",
"description": "Target format."
},
"format": {
"enum": [
"csv",
"camt",
"mt940",
"ofx",
"qif"
],
"type": "string",
"description": "Skip auto-detection."
},
"columns": {
"type": "object",
"description": "CSV: map field names (date, amount, description, ...) to exact header names.",
"additionalProperties": {
"type": "string"
}
},
"company": {
"type": "string",
"description": "Company name for the SIE4 header."
},
"content": {
"type": "string",
"description": "The statement file as text (UTF-8). PDF and scanned images are not supported."
},
"decimal": {
"enum": [
",",
"."
],
"type": "string",
"description": "CSV decimal separator override."
},
"currency": {
"type": "string",
"description": "Fallback ISO 4217 currency when the file has none, e.g. SEK."
},
"delimiter": {
"type": "string",
"description": "CSV delimiter override: comma, semicolon, tab or pipe."
},
"dateFormat": {
"enum": [
"ymd",
"dmy",
"mdy"
],
"type": "string",
"description": "CSV date order override for ambiguous dates."
},
"includeRaw": {
"type": "boolean",
"description": "Add the raw source fields to every transaction."
},
"bankAccount": {
"type": "string",
"description": "Bank account number (SIE4, e.g. 1930) or ledger account (hledger)."
},
"assetAccount": {
"type": "string",
"description": "hledger asset account name."
},
"incomeAccount": {
"type": "string",
"description": "Counter account for incoming money."
},
"expenseAccount": {
"type": "string",
"description": "Counter account for outgoing money."
}
},
"additionalProperties": false
}| Add the raw source fields to every transaction. |
{
"type": "object",
"required": [
"content"
],
"properties": {
"format": {
"enum": [
"csv",
"camt",
"mt940",
"ofx",
"qif"
],
"type": "string",
"description": "Skip auto-detection."
},
"columns": {
"type": "object",
"description": "CSV: map field names (date, amount, description, ...) to exact header names.",
"additionalProperties": {
"type": "string"
}
},
"content": {
"type": "string",
"description": "The statement file as text (UTF-8). PDF and scanned images are not supported."
},
"decimal": {
"enum": [
",",
"."
],
"type": "string",
"description": "CSV decimal separator override."
},
"currency": {
"type": "string",
"description": "Fallback ISO 4217 currency when the file has none, e.g. SEK."
},
"delimiter": {
"type": "string",
"description": "CSV delimiter override: comma, semicolon, tab or pipe."
},
"dateFormat": {
"enum": [
"ymd",
"dmy",
"mdy"
],
"type": "string",
"description": "CSV date order override for ambiguous dates."
},
"includeRaw": {
"type": "boolean",
"description": "Add the raw source fields to every transaction."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"content"
],
"properties": {
"format": {
"enum": [
"csv",
"camt",
"mt940",
"ofx",
"qif"
],
"type": "string",
"description": "Skip auto-detection."
},
"columns": {
"type": "object",
"description": "CSV: map field names (date, amount, description, ...) to exact header names.",
"additionalProperties": {
"type": "string"
}
},
"content": {
"type": "string",
"description": "The statement file as text (UTF-8). PDF and scanned images are not supported."
},
"decimal": {
"enum": [
",",
"."
],
"type": "string",
"description": "CSV decimal separator override."
},
"currency": {
"type": "string",
"description": "Fallback ISO 4217 currency when the file has none, e.g. SEK."
},
"delimiter": {
"type": "string",
"description": "CSV delimiter override: comma, semicolon, tab or pipe."
},
"dateFormat": {
"enum": [
"ymd",
"dmy",
"mdy"
],
"type": "string",
"description": "CSV date order override for ambiguous dates."
},
"includeRaw": {
"type": "boolean",
"description": "Add the raw source fields to every transaction."
}
},
"additionalProperties": false
}