Skip to main content
Glama
bankstatemently

bankstatemently

Official

Group Transactions

group_by
Read-only

Group transactions by month, category, merchant, account, or currency and compute sum, average, count, max, or min per group, with optional filters.

Instructions

Group transactions by a dimension (month/category/merchant/account/currency) and apply a metric to each group. Results are per-currency. Scope defaults to all your completed statements; pass "scope" to narrow to specific accounts/products and/or a date range.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
scopeNoOptional structural scope (WHO × WHEN). Omit to search across all your completed statements. "accounts" is a list of account/product chips (kind + identityKey); "dateRange" bounds by transaction date (YYYY-MM-DD).
filterNoSubset of transactions to operate on. All fields are optional and combined with AND logic.
metricYesMetric per group.
dimensionYesGrouping dimension.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is known. The description adds behavioral context beyond that: 'Results are per-currency' and the default scope behavior (all completed statements). It does not describe output shape, but given the read-only nature, this is acceptable.

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?

The description is two sentences with no redundant words. The primary purpose is front-loaded, and the scope nuance is added in the second sentence. Every clause contributes value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 4 parameters including nested objects (scope and filter) and no output schema, the description is somewhat thin. It mentions scope but not filter, which is a significant narrowing mechanism. It also doesn't hint at the return format beyond per-currency grouping. Given the complexity, more context about filter and output would be helpful.

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 every parameter is documented in the schema. The description adds minimal new meaning—it restates the dimension list and scope behavior already present in the schema. It does not clarify how metric interacts with dimension or how filter works, but since schema covers parameter details, a baseline 3 is appropriate.

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 description states a specific verb ('group') and resource ('transactions'), enumerates the valid dimensions (month/category/merchant/account/currency) and metrics, and notes the per-currency result behavior. This clearly distinguishes it from sibling aggregation tools like aggregate or time_series, which have different grouping semantics.

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 provides useful scoping guidance ('Scope defaults to all your completed statements; pass "scope" to narrow...'), but it does not explicitly mention alternatives or when to prefer a sibling tool. It also omits the filter parameter entirely, which is another way to narrow results, so an agent may not realize filter exists.

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