Skip to main content
Glama

Bankstatemently

Categorize Transactions

categorize_statement

Run AI transaction categorization on a previously processed document, then return its category mappings. Returns cached categories with no charge if this document was already categorized. Consumes credits (pooled per page, same rate as the categorize toggle on the website) the first time — free on every re-fetch after. Every response includes a "summary" field: use it as the single source of truth for what happened.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
document_idYes

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
hintNo
errorNo
statusYes
messageNo
summaryNo
documentIdNo
categoryMappingsNo

TDQS

A4.5/5.0
Behavior4/5

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

Annotations say readOnlyHint=false (mutation expected) and destructiveHint=false. The description transparently discloses that it may consume credits on first use but free on re-fetch, and includes a 'summary' field as ground truth. It doesn't describe another non-obvious behavior like whether it fails on unprocessed documents, but the provided details exceed the annotations and cover the most important cost and idempotency aspects.

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?

The description is three sentences, all informative. It front-loads the primary function, clarifies the credit/caching behavior, and directs the agent to use the summary field. No filler or vague marketing language. Slightly more than minimal but not bloated; a well-structured and purposeful description.

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?

Given the tool's complexity (credit pooling, caching, summary field, single parameter) and the presence of an output schema (which likely details the returned mappings), the description covers the essential usage context. The description doesn't specify how to handle already processed vs unprocessed documents, but the credit and cache details are likely the main concern. The output schema presumably defines the mapping structure, so this is comprehensive enough.

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 input schema has one required parameter `document_id` with zero schema description (0% coverage). The description does not explicitly explain what document_id refers to beyond 'previously processed document'. However, this is a single obvious parameter, and the description's line about 'previously processed document' gives enough context for document_id. Since the schema leaves it undefined, the description partially compensates, but could be more explicit.

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 the tool runs AI categorization on a previously processed document and returns category mappings. It clearly identifies the verb (categorize/run), resource (document), and distinguishes it from siblings like convert_statement, get_statement, and rate_statement by specifying it returns mappings and handles the categorization toggle.

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

Usage Guidelines5/5

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

The description is explicit: says when to use it (after a document is processed), mentions it returns cached results with no charge if already categorized, and explains the credit consumption behavior. It doesn't list alternatives, but sibling context (convert, get, rate) makes the usage context clear. The 'use it as the single source of truth' guidance is also useful for the agent.

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.

TDQS

A4/5.0
Disambiguation4/5

Core tools are cleanly separated by resource: statements, transactions, transfers, credits, and benchmark all have dedicated entry points. The five analytics tools (aggregate, group_by, compare, time_series, top_n) share metric/filter language, but their distinct output shapes and careful descriptions prevent major confusion, with only group_by vs. time_series/top_n occasionally overlapping.

Naming Consistency4/5

Most tools follow a clear snake_case verb_noun pattern such as convert_statement, list_transactions, rate_statement, and dismiss_statement. The analytics tools (aggregate, compare, group_by, time_series, top_n) break that pattern, but they are still recognizable, consistently styled, and form a meaningful cluster.

Tool Count4/5

At 16 tools, this is slightly above the typical 3-15 well-scoped range, but the server covers a broad workflow: upload, conversion, retrieval, categorization, analytics, transfer matching, rating, credits, and benchmarking. Each tool maps to a distinct capability, so the count feels justified rather than bloated.

Completeness4/5

The tool surface covers the full statement lifecycle from upload and conversion through retrieval, categorization, analysis, rating, and dismissal, plus useful side capabilities like credits and benchmark evaluation. Minor gaps exist—no permanent deletion and no way to manually edit category mappings—but dismiss_statement and categorize_statement provide adequate workarounds.