Skip to main content
Glama

Record card statement

record_card_statement
Destructive

One credit-card statement, as the bank printed it. Give the statement date and the closing balance owed and the ledger is anchored to the bank: card terms (limit, statement day, due date, minimum due) are set from the statement, the lines you list are matched or added, and whatever still separates the ledger from the closing balance becomes one dated 'Balance adjustment' row that never counts as spending. Send statements oldest first, one call each; re-sending the same statement date replaces its adjustment instead of stacking. Dry-run unless commit=true.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
bankNoIssuer name for the notes, e.g. 'Emirates NBD'
feesNoTotal fees this period; used only when lines are not given
linesNoThe transaction lines, if you read them. Leave out to anchor the balance only.
commitNoWrite it. Default false: report what would change
interestNoTotal interest/finance charges this period; used only when lines are not given
account_idYesAn account of type card
apr_percentNoAnnual rate if the statement states one (a monthly rate × 12)
minimum_dueNoMinimum payment due, as printed
credit_limitNoAs printed. Needed the first time a card is recorded
statement_dateYesThe statement's closing date (ISO or the bank's format)
closing_balanceYesTotal outstanding at the statement date, positive as printed (the 'current balance' / 'closing balance', not the minimum or total *due*). Negative only if the bank owes you.
payment_due_dateNoAs printed; 'immediate' or 'overdue' is accepted
previous_balanceNoThe previous statement's closing balance as printed, to check the statement's own arithmetic

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.5/5.0
Behavior5/5

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

Adds substantial context beyond the annotations: the dry-run-until-commit=true gate, side-effect on card terms (limit, statement day, due date, minimum due), the match-or-add behavior for lines, the auto-generated 'Balance adjustment' row that "never counts as spending," and replacement-on-reread. The re-send replacement nuance is consistent with idempotentHint=false (the tool is still not globally idempotent).

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?

A single dense ~90-word paragraph with the core purpose front-loaded and every sentence carrying information. It is appropriately sized for a 13-parameter tool, though the mid-sentence "whatever still separates the ledger from the closing balance" phrasing is somewhat convoluted and could be tighter.

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 complex, write-behind tool, the description covers the main workflow end to end: anchoring, terms-setting, line handling, adjustment creation, ordering, re-send, and dry-run. The output schema and 100%-covered input schema carry the remaining burden; the description could have acknowledged the accounting-only params (fees, interest, apr_percent, previous_balance) but their schema descriptions already say they are used only when lines are absent.

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 coverage is 100%, so the baseline is 3, but the description adds real relational meaning: it identifies statement_date + closing_balance as the pair that anchors the ledger, explains that lines are matched or added against the closing balance, and positions commit as the write gate. This goes beyond the schema's literal per-field descriptions.

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?

The opening phrase — "One credit-card statement, as the bank printed it" — names a specific resource, and the body makes the action concrete: give statement date + closing balance and the ledger is anchored to the bank. It clearly distinguishes itself from siblings like import_statement or reconcile_statement by scoping to card statements and by describing the anchoring behavior.

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 explicit procedural guidance: "Send statements oldest first, one call each" and explains re-send semantics ("re-sending the same statement date replaces its adjustment instead of stacking"), plus the dry-run default. It does not, however, name alternatives or state when to prefer this over siblings such as import_statement or set_credit_card, so exclusions are implicit rather than explicit.

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.