Skip to main content
Glama

StatementKit - bank statement normalizer

Server Details

Normalize bank statements (CSV, camt, MT940, OFX, QIF) to JSON, analyze, export.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-06-18
URL

TDQS

A4.1/5.0

Scored across 5 tools

Disambiguation4/5

Each tool has a reasonably distinct purpose: parse_statement returns raw normalized JSON, analyze_statement augments it with analytics, convert_statement exports to other formats, and list_formats is metadata. However, all four statement tools start from the same parse step, and parse_statement vs parse_statement_demo vs analyze_statement could be confused by an agent unsure which output it needs.

Naming Consistency5/5

All tool names follow a consistent snake_case verb_noun pattern: parse_statement, analyze_statement, convert_statement, parse_statement_demo, list_formats. The demo variant is clearly marked via a suffix, keeping the scheme predictable.

Tool Count5/5

Five tools is well-scoped for a stateless statement normalizer: one per major operation (list, parse, analyze, convert) plus a free demo. No redundant or filler tools.

Completeness4/5

The surface covers the core lifecycle of a normalizer: listing formats, parsing, analyzing, converting, and a free demo for trial use. Minor gaps exist—no validation-only or schema/introspection tool beyond list_formats—but these are workable for the stated purpose.

Available Tools

5 tools
analyze_statementA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
todayNoYYYY-MM-DD; flags recurring payments that stopped before this date.
formatNoSkip auto-detection.
columnsNoCSV: map field names (date, amount, description, ...) to exact header names.
contentYesThe statement file as text (UTF-8). PDF and scanned images are not supported.
decimalNoCSV decimal separator override.
currencyNoFallback ISO 4217 currency when the file has none, e.g. SEK.
delimiterNoCSV delimiter override: comma, semicolon, tab or pipe.
dateFormatNoCSV date order override for ambiguous dates.
includeRawNoAdd the raw source fields to every transaction.
include_transactionsNoDefault true. false returns only the analysis.

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the readOnlyHint/openWorldHint annotations by disclosing cost ($0.01), settlement behavior (4xx/5xx not settled), the x402 payment-requirements response when no header is present, and a 1000 KB body limit. These are exactly the operational facts an agent needs to invoke a paid tool safely.

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?

Effectively one dense paragraph that leads with the paid nature and then the payload/behavior facts; every clause carries information. Slightly crowded, but nothing is redundant filler.

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?

For a 10-parameter tool with no output schema, the description covers the payment lifecycle, what the analysis contains, the size limit, the analysis-only toggle, and the no-payment fallback. Combined with the fully documented schema, an agent has everything needed to call it correctly.

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 schema already carries most parameter meaning (baseline 3). The description still adds value by clarifying include_transactions=false yields analysis-only output and by stating the 1000 KB body constraint, which is not expressed in the schema.

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+resource ('parses a statement and adds analysis') and then enumerates the concrete analysis outputs (monthly totals, top counterparties, recurring payments, duplicates, largest transactions, balance reconciliation). This clearly separates it from siblings like parse_statement or convert_statement, which produce no analytics.

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

Usage Guidelines4/5

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

Gives clear operational context for the paid flow, including how to get analysis-only output via include_transactions=false and what happens without a payment header. It does not explicitly name a sibling or state when to prefer this over parse_statement, so it stops short of full when/when-not routing.

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

convert_statementA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesTarget format.
formatNoSkip auto-detection.
columnsNoCSV: map field names (date, amount, description, ...) to exact header names.
companyNoCompany name for the SIE4 header.
contentYesThe statement file as text (UTF-8). PDF and scanned images are not supported.
decimalNoCSV decimal separator override.
currencyNoFallback ISO 4217 currency when the file has none, e.g. SEK.
delimiterNoCSV delimiter override: comma, semicolon, tab or pipe.
dateFormatNoCSV date order override for ambiguous dates.
includeRawNoAdd the raw source fields to every transaction.
bankAccountNoBank account number (SIE4, e.g. 1930) or ledger account (hledger).
assetAccountNohledger asset account name.
incomeAccountNoCounter account for incoming money.
expenseAccountNoCounter account for outgoing money.

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered, and the description adds genuinely non-obvious behavior: the payment/settlement model, the 1000 KB JSON body limit, that output arrives as a string in the content field, and that SIE4 is experimental. It stops short of describing error payload shapes or detection fallbacks, but this is well above the annotation baseline.

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?

Four tight sentences with the cost and payment requirement front-loaded, followed by output format, size cap, and settlement semantics in a logical order. The leading 'Paid ($0.005):' fragment is slightly abrupt but earns its place by signaling cost immediately.

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 14-parameter tool with no output schema, the description covers the two things an agent could not infer from the schema: where the converted file appears (a string in the content field) and how the paid invocation settles. It omits behavior around auto-detection failures and the trade-offs of the experimental SIE4 format, but the essential call contract is present.

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 14 parameters is already documented in the schema and the description is not obligated to compensate. It reinforces the `to` enum by listing the same four target formats and hints at size constraints relevant to `content`, but adds no new syntax, defaults, or interaction rules beyond the structured fields.

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?

The description names a specific action and resource ('Parses a statement and exports it') and enumerates the concrete output formats (normalized CSV, hledger journal, SIE4, JSON), so the agent knows exactly what it produces. It never names the sibling tools (parse_statement, analyze_statement) that could plausibly overlap, so differentiation is left to inference.

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 description gives solid operational context for payment (cost of $0.005, failed 4xx/5xx calls are not settled, missing payment header returns x402 requirements), which tells the agent when it will even succeed. However, it offers no guidance on when to choose this tool over parse_statement or analyze_statement, so the routing decision is only implied.

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

list_formatsA
Read-only
Inspect

List the supported statement formats, CSV column synonyms, limits and prices. Free.

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 readOnlyHint=true and openWorldHint=false, so safety is covered by structured data. The description adds the cost signal ("Free") and enumerates the returned content categories, but nothing about pagination or response shape beyond that.

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 zero filler; every clause (formats, synonyms, limits, prices, free) carries distinct information.

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 list tool with no output schema, the description usefully names the categories of data returned and its cost. It is close to complete, missing only a note on when an agent should reach for it versus the sibling tools.

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, which is the baseline 4 per the rubric. There is nothing for the description to clarify on the parameter side.

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 (List) and resource (supported statement formats, CSV column synonyms, limits, prices), giving the agent a clear picture of what it returns. It is distinguishable from the parse/convert/analyze siblings, though it does not explicitly name them.

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 rather than stated: an agent can infer this is a discovery/reference call to run before parsing or converting. There is no explicit when-to-use, when-not-to-use, or comparison against the sibling tools.

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

parse_statementA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoSkip auto-detection.
columnsNoCSV: map field names (date, amount, description, ...) to exact header names.
contentYesThe statement file as text (UTF-8). PDF and scanned images are not supported.
decimalNoCSV decimal separator override.
currencyNoFallback ISO 4217 currency when the file has none, e.g. SEK.
delimiterNoCSV delimiter override: comma, semicolon, tab or pipe.
dateFormatNoCSV date order override for ambiguous dates.
includeRawNoAdd the raw source fields to every transaction.

TDQS

A4/5.0
Behavior5/5

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

Annotations cover only readOnlyHint and openWorldHint, and the description layers on substantial extra behavior: it is paid ($0.005), deterministic, no AI, nothing stored, body capped at 1000 KB, failed 4xx/5xx calls are not settled, and a missing payment header returns x402 payment requirements. This is exactly the payment/settlement context an agent cannot get from structured fields.

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-loaded with price and purpose, then format support and output contract in dense, information-bearing sentences. Slightly overloaded by packing payment/settlement mechanics into the same block, but little is wasted.

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?

No output schema exists, so the description carries the return-value burden and does so fully (accounts, balances, signed transactions, ISO dates, counterparty, reference, OCR number). Combined with the error/payment behavior, an agent has everything needed to call it correctly.

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 coverage is 100%, so the schema already documents all eight parameters, establishing the baseline of 3. The description adds only indirect meaning (the format list maps to the format enum and the output fields hint at CSV column mapping); it does not clarify columns, delimiter, decimal, or dateFormat beyond the schema.

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 (parses) and resource (bank statement) plus the output shape (normalized JSON with accounts, balances, signed transactions). The supported input formats are enumerated precisely. It does not differentiate itself from siblings like convert_statement or analyze_statement, 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?

Usage is only implied: it discloses the $0.005 cost and the x402 payment-header precondition, but never says when to choose this over analyze_statement or convert_statement. No exclusions or alternative-routing guidance is given.

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

parse_statement_demoA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoSkip auto-detection.
columnsNoCSV: map field names (date, amount, description, ...) to exact header names.
contentYesThe statement file as text (UTF-8). PDF and scanned images are not supported.
decimalNoCSV decimal separator override.
currencyNoFallback ISO 4217 currency when the file has none, e.g. SEK.
delimiterNoCSV delimiter override: comma, semicolon, tab or pipe.
dateFormatNoCSV date order override for ambiguous dates.
includeRawNoAdd the raw source fields to every transaction.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already mark it read-only and closed-world, and the description adds substantive traits on top: a 24 KB input ceiling, truncation to the first 100 transactions, and a 20 calls/hour rate limit. These are exactly the operational constraints an agent cannot get from the schema, though nothing is said about error behavior on oversized input.

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 tight sentence front-loads the demo framing, then packs input limit, return shape, and rate limit without a wasted word.

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 sketches the return (first 100 transactions plus an analysis preview) and discloses size and rate limits. It leaves 'analysis preview' undefined, but for an 8-param read-only parser this is close to sufficient.

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% with 8 well-documented parameters including enums for format, decimal, and dateFormat, so the schema carries the semantics. The description adds no parameter-level detail beyond 'normalized JSON', making the baseline 3 appropriate.

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 (parse a statement into normalized JSON) and immediately scopes it as a 'Free demo' with a 24 KB limit, which implicitly sets it apart from the full parse_statement sibling. It stops short of naming that sibling explicitly, so the differentiation is inferred rather than stated.

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 'Free demo' framing and the 24 KB / 100-transaction caps imply this is for quick trials while parse_statement handles production volume, but the description never says when to choose it over convert_statement or analyze_statement. Usage is implied, not directed.

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 updates
    • First observedanalyze_statement
    • First observedconvert_statement
    • First observedlist_formats
    • First observedparse_statement
    • First observedparse_statement_demo

Related MCP Connectors

Related MCP Servers

  • 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
    Not graded
    quality
    B
    maintenance
    Deterministic bank-statement parsing for AI agents: messy CSV/OFX exports to clean, categorized ledger rows. In-memory only, no storage, no external calls, no LLM in the loop.
    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
  • A
    license
    B
    quality
    A
    maintenance
    Enables local-first personal finance management through deterministic tools for importing, categorizing, and analyzing bank transactions.
    36
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources