Skip to main content
Glama

StatementKit - bank statement normalizer

parse_statement

Read-only

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.

Input Schema

TableJSON 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.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

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.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources