Skip to main content
Glama

Bankstatemently

List Transactions

list_transactions
Read-only

A transaction is a single line as printed on one account's statement — one side of any movement. Return a filtered list of transactions across your converted statements, capped at 50 rows. Scope defaults to all your completed statements; pass "scope" to narrow to specific accounts/products and/or a date range. Every response names the scope it actually evaluated (document count + covered date range) and each returned row carries its source document's content_hash so you can cite it. For "how many credits do I have" / processing quota / remaining pages, use get_credits instead — that is not a transaction.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum rows to return. Default 20, max 50.
orderNoSort direction. Default "desc" (largest amount / most recent date first). Only meaningful with sort_by.
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.
sort_byNoSort the filtered set before applying limit. "amount" ranks by absolute magnitude (signed amounts are still returned). Omit for today's default (encounter order).

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
scopeYes
transactionsYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / properties / scope / additionalProperties
      Previous value: -{}New value: +false
  2. Changed23 schema fields changed
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • addedInput schema / properties / filter / description
      Added value: +"Subset of transactions to operate on. All fields are optional and combined with AND logic."
    • addedInput schema / properties / filter / properties / accounts / description
      Added value: +"Account number slugs to include."
    • addedInput schema / properties / filter / properties / amountMax / description
      Added value: +"Inclusive maximum absolute amount."
    • addedInput schema / properties / filter / properties / amountMin / description
      Added value: +"Inclusive minimum absolute amount."
    • addedInput schema / properties / filter / properties / category / description
      Added value: +"Category slug, e.g. \"meals_entertainment\", \"groceries_personal\"."
    • addedInput schema / properties / filter / properties / currency / description
      Added value: +"ISO 4217 currency code. E.g. \"USD\", \"HKD\"."
    • addedInput schema / properties / filter / properties / dateEnd / description
      Added value: +"ISO date (YYYY-MM-DD). Inclusive upper bound."
    • addedInput schema / properties / filter / properties / dateStart / description
      Added value: +"ISO date (YYYY-MM-DD). Inclusive lower bound."
    • addedInput schema / properties / filter / properties / direction / description
      Added value: +"Semantic direction."
    • addedInput schema / properties / filter / properties / merchant / description
      Added value: +"Substring match against description or counterparty (case-insensitive)."
    • addedInput schema / properties / filter / properties / text / description
      Added value: +"Whole-row text search over raw transaction fields (case-insensitive)."
    • addedInput schema / properties / limit / description
      Added value: +"Maximum rows to return. Default 20, max 50."
    • addedInput schema / properties / order / description
      Added value: +"Sort direction. Default \"desc\" (largest amount / most recent date first). Only meaningful with sort_by."
    • addedInput schema / properties / scope / description
      Added value: +"Optional 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)."
    • addedInput schema / properties / scope / properties / accounts / description
      Added value: +"Account/product chips (kind + identityKey) to scope to. Empty = all accounts."
    • removedInput schema / properties / scope / properties / accounts / items / anyOf
      Removed value: -[
      -  {
      -    "properties": {
      -      "anchorContentHash": {
      -        "type": "string"
      -      },
      -      "identityKey": {
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "kind": {
      -        "const": "account",
      -        "type": "string"
      -      },
      -      "label": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "identityKey"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "identityKey": {
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "kind": {
      -        "const": "product",
      -        "type": "string"
      -      },
      -      "label": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "identityKey"
      -    ],
      -    "type": "object"
      -  }
      -]
    • addedInput schema / properties / scope / properties / accounts / items / oneOf
      Added value: +[
      +  {
      +    "properties": {
      +      "anchorContentHash": {
      +        "description": "Document-anchored lookup when present (results page); omit for a user-scoped lookup (workspace surfaces).",
      +        "type": "string"
      +      },
      +      "identityKey": {
      +        "description": "Canonical account identity key (accountIdentityKey), never a raw DB UUID.",
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "kind": {
      +        "const": "account",
      +        "description": "This chip addresses a single account.",
      +        "type": "string"
      +      },
      +      "label": {
      +        "description": "Display label for this chip.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "identityKey"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "identityKey": {
      +        "description": "Product slug.",
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "kind": {
      +        "const": "product",
      +        "description": "This chip addresses a product and expands to its child accounts.",
      +        "type": "string"
      +      },
      +      "label": {
      +        "description": "Display label for this chip.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "identityKey"
      +    ],
      +    "type": "object"
      +  }
      +]
    • addedInput schema / properties / scope / properties / dateRange / description
      Added value: +"Bounds results to transactions within this date range. Omit for no date filter."
    • addedInput schema / properties / scope / properties / dateRange / properties / from / description
      Added value: +"Start of the date range (inclusive), YYYY-MM-DD."
    • addedInput schema / properties / scope / properties / dateRange / properties / to / description
      Added value: +"End of the date range (inclusive), YYYY-MM-DD."
    • addedInput schema / properties / sort_by / description
      Added value: +"Sort the filtered set before applying limit. \"amount\" ranks by absolute magnitude (signed amounts are still returned). Omit for today's default (encounter order)."
    • changedOutput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
  3. Changed2 schema fields changed
    • addedInput schema / properties / order
      Added value: +{
      +  "enum": [
      +    "asc",
      +    "desc"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / sort_by
      Added value: +{
      +  "enum": [
      +    "amount",
      +    "date"
      +  ],
      +  "type": "string"
      +}
  4. Changed19 schema fields changed
    • removedInput schema / properties / filter / description
      Removed value: -"Subset of transactions to operate on. All fields are optional and combined with AND logic."
    • removedInput schema / properties / filter / properties / accounts / description
      Removed value: -"Account number slugs to include."
    • removedInput schema / properties / filter / properties / amountMax / description
      Removed value: -"Inclusive maximum absolute amount."
    • removedInput schema / properties / filter / properties / amountMin / description
      Removed value: -"Inclusive minimum absolute amount."
    • removedInput schema / properties / filter / properties / category / description
      Removed value: -"Category slug, e.g. \"meals_entertainment\", \"groceries_personal\"."
    • removedInput schema / properties / filter / properties / currency / description
      Removed value: -"ISO 4217 currency code. E.g. \"USD\", \"HKD\"."
    • removedInput schema / properties / filter / properties / dateEnd / description
      Removed value: -"ISO date (YYYY-MM-DD). Inclusive upper bound."
    • removedInput schema / properties / filter / properties / dateStart / description
      Removed value: -"ISO date (YYYY-MM-DD). Inclusive lower bound."
    • removedInput schema / properties / filter / properties / direction / description
      Removed value: -"Semantic direction."
    • removedInput schema / properties / filter / properties / merchant / description
      Removed value: -"Substring match against description or counterparty (case-insensitive)."
    • removedInput schema / properties / filter / properties / text / description
      Removed value: -"Whole-row text search over raw transaction fields (case-insensitive)."
    • removedInput schema / properties / limit / description
      Removed value: -"Maximum rows to return. Default 20, max 50."
    • removedInput schema / properties / scope / description
      Removed value: -"Optional 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)."
    • removedInput schema / properties / scope / properties / accounts / description
      Removed value: -"Account/product chips (kind + identityKey) to scope to. Empty = all accounts."
    • addedInput schema / properties / scope / properties / accounts / items / anyOf
      Added value: +[
      +  {
      +    "properties": {
      +      "anchorContentHash": {
      +        "type": "string"
      +      },
      +      "identityKey": {
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "kind": {
      +        "const": "account",
      +        "type": "string"
      +      },
      +      "label": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "identityKey"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "identityKey": {
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "kind": {
      +        "const": "product",
      +        "type": "string"
      +      },
      +      "label": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "identityKey"
      +    ],
      +    "type": "object"
      +  }
      +]
    • removedInput schema / properties / scope / properties / accounts / items / oneOf
      Removed value: -[
      -  {
      -    "properties": {
      -      "anchorContentHash": {
      -        "description": "Document-anchored lookup when present (results page); omit for a user-scoped lookup (workspace surfaces).",
      -        "type": "string"
      -      },
      -      "identityKey": {
      -        "description": "Canonical account identity key (accountIdentityKey), never a raw DB UUID.",
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "kind": {
      -        "const": "account",
      -        "description": "This chip addresses a single account.",
      -        "type": "string"
      -      },
      -      "label": {
      -        "description": "Display label for this chip.",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "identityKey"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "identityKey": {
      -        "description": "Product slug.",
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "kind": {
      -        "const": "product",
      -        "description": "This chip addresses a product and expands to its child accounts.",
      -        "type": "string"
      -      },
      -      "label": {
      -        "description": "Display label for this chip.",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "identityKey"
      -    ],
      -    "type": "object"
      -  }
      -]
    • removedInput schema / properties / scope / properties / dateRange / description
      Removed value: -"Bounds results to transactions within this date range. Omit for no date filter."
    • removedInput schema / properties / scope / properties / dateRange / properties / from / description
      Removed value: -"Start of the date range (inclusive), YYYY-MM-DD."
    • removedInput schema / properties / scope / properties / dateRange / properties / to / description
      Removed value: -"End of the date range (inclusive), YYYY-MM-DD."
  5. First observed

TDQS

A4.3/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 safety is covered. The description adds meaningful behavioral detail: the 50-row cap, the actual evaluated scope returned in every response, and the content_hash on each row for citation. This goes beyond the schema and annotations without contradicting them.

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?

Every sentence earns its place: the transaction definition is conceptually necessary, the cap and scope defaults are actionable, the response behavior is useful for citing results, and the get_credits redirect prevents misuse. The structure is front-loaded and free of padded language.

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?

Despite the complex nested scope schema, the description covers defaults, limits, behavior, and the main alternative tool. With a rich input schema, an output schema, and safety annotations present, nothing essential is missing for an agent to call this tool 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 description coverage is 100%, and the schema already documents limit, order, scope, filter, and sort_by in detail. The description mentions the scope object's role but does not need to add parameter-level meaning; it stays at the expected baseline for full schema coverage.

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 uses a specific verb-resource pair ('Return a filtered list of transactions') and defines exactly what a transaction is, distinguishing it from a transfer or statement concept. It also clearly scopes the operation to converted statements, making the tool's purpose unambiguous relative to siblings.

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?

The description gives clear when-to-use context: default scope is all completed statements, and scope can narrow by accounts/products or date range. It explicitly routes credit/quota questions to get_credits, but it does not contrast with list_transfers or other list-style siblings, so the exclusion is partial rather than exhaustive.

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.