Skip to main content
Glama

list_card_transactions

Read-onlyIdempotent

List reloadable card transactions

Returns transactions on the authenticated user's reloadable cards, newest first: amount, merchant, status, and timestamps.

Pass card_id for one card's history, or omit it for every reloadable card on the account. Filter with status and cap the page with limit.

The response carries three lists. transactions holds the card spends the issuer reports. card_events holds the deposits, spending-limit changes, card creations and withdrawal requests that move the balance those spends draw on, which the issuer does not report at all. top_ups follows each GET /fund-card-balance payment across its legs. Merge transactions and card_events by created_at for the account holder's own view of the card; a list of spends alone shows money leaving a balance that grows for no visible reason.

This route covers reloadable cards only. The two non-reloadable products keep their history in Laso's own records and are read through /get-card-data.

If the wallet has no card issuer account linked, all three lists are empty and a note explains how the account holder sets one up at https://laso.finance/agent/dashboard/verified/card.

Input Schema

NameRequiredDescriptionDefault
limitNoMaximum number of transactions to return. Defaults to the issuer's own page size (20).
statusNoFilter by status, e.g. `pending`, `settled`, `declined`, `reversed`, `refunded`.
card_idNoReturn only this card's transactions. Omit for every reloadable card on the account.

Output Schema

NameRequiredDescriptionDefault
noteNoPresent only when no card issuer account is linked.
top_upsNoEvery top-up paid through `GET /fund-card-balance`, newest first, with the transaction hash behind each leg as it lands. A top-up whose payment never settled is omitted. This is the same tracker the account holder sees in the dashboard.
card_eventsNoThe half of the history the card issuer does not report: what moved the balance behind the spends. Recorded from Laso's own records, newest first.
transactionsNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / properties / top_ups / items / properties / status / description
      Previous value: -"`paid`: the payment settled and delivery has started. `bridging`: the burn is confirmed and the mint is pending, skipped for a payment made on Base. `delivered`: the money arrived at the holder's deposit address but the issuer has not credited it. `credited`: posted to the balance, terminal. `failed`: delivery could not complete, terminal. A `failed` top-up stranded nothing, since the payment credited the Laso account balance instead, so retry or recover it with `POST /withdraw`. One of: paid, bridging, delivered, credited, failed."New value: +"`queued`: an account-balance top-up debited and waiting for Laso's wallets to cover it; it goes out automatically, so do not resubmit it. `paid`: the payment settled and delivery has started. `bridging`: the burn is confirmed and the mint is pending, skipped for a payment made on Base. `delivered`: the money arrived at the holder's deposit address but the issuer has not credited it. `credited`: posted to the balance, terminal. `failed`: delivery could not complete, terminal. A `failed` top-up stranded nothing, since the payment credited the Laso account balance instead, so retry or recover it with `POST /withdraw`. One of: queued, paid, bridging, delivered, credited, failed."
  2. Changed2 schema fields changed
    • addedOutput schema / properties / card_events
      Added value: +{
      +  "description": "The half of the history the card issuer does not report: what moved the balance behind the spends. Recorded from Laso's own records, newest first.",
      +  "items": {
      +    "properties": {
      +      "amount": {
      +        "description": "US dollars. The amount deposited or requested for withdrawal. Null on a `limitChange` or `cardCreated`.",
      +        "type": [
      +          "number",
      +          "null"
      +        ]
      +      },
      +      "balance": {
      +        "description": "The balance held with the card issuer immediately after this event, in US dollars.",
      +        "type": [
      +          "number",
      +          "null"
      +        ]
      +      },
      +      "card_id": {
      +        "description": "The card this event applies to, when it applies to one card rather than the account balance.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "created_at": {
      +        "description": "Milliseconds since the epoch.",
      +        "type": [
      +          "number",
      +          "null"
      +        ]
      +      },
      +      "destination_address": {
      +        "description": "`withdrawal` only. The Base address the payout goes to.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "event_type": {
      +        "description": "`deposit`: money settled on the holder's balance. `limitChange`: the card's spend limit was resized, which is what makes a deposit spendable. `cardCreated`: the card was issued. `withdrawal`: a payout requested through `POST /withdraw-card-balance`. One of: deposit, limitChange, cardCreated, withdrawal.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "new_spend_limit": {
      +        "description": "`limitChange` only. The card's spend limit after the change, in US dollars.",
      +        "type": [
      +          "number",
      +          "null"
      +        ]
      +      },
      +      "previous_spend_limit": {
      +        "description": "`limitChange` only. The card's spend limit before the change, in US dollars.",
      +        "type": [
      +          "number",
      +          "null"
      +        ]
      +      },
      +      "top_up_id": {
      +        "description": "Set on a `deposit` that is the final leg of a top-up paid through `GET /fund-card-balance`. That top-up is already in `top_ups` with its full history, so skip a `deposit` carrying this id rather than counting the money twice.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "withdrawal_id": {
      +        "description": "`withdrawal` only. The card issuer's reference for the payout request, which it names when it emails the account holder.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      }
      +    },
      +    "type": [
      +      "object",
      +      "null"
      +    ]
      +  },
      +  "type": [
      +    "array",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / top_ups
      Added value: +{
      +  "description": "Every top-up paid through `GET /fund-card-balance`, newest first, with the transaction hash behind each leg as it lands. A top-up whose payment never settled is omitted. This is the same tracker the account holder sees in the dashboard.",
      +  "items": {
      +    "properties": {
      +      "amount": {
      +        "description": "US dollars loaded onto the balance.",
      +        "type": [
      +          "number",
      +          "null"
      +        ]
      +      },
      +      "balance_after": {
      +        "description": "The balance with the card issuer once this top-up was credited, in US dollars.",
      +        "type": [
      +          "number",
      +          "null"
      +        ]
      +      },
      +      "bridge_transaction_hash": {
      +        "description": "The burn that started the bridge. Absent for a payment made on Base, which needs no bridge.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "bridge_transaction_url": {
      +        "description": "A block explorer link for `bridge_transaction_hash`.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "created_at": {
      +        "description": "Milliseconds since the epoch.",
      +        "type": [
      +          "number",
      +          "null"
      +        ]
      +      },
      +      "credited_at": {
      +        "description": "When the card issuer credited the balance, in milliseconds since the epoch.",
      +        "type": [
      +          "number",
      +          "null"
      +        ]
      +      },
      +      "deposit_address": {
      +        "description": "The holder's own deposit address at the card issuer, where the money is delivered.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "failure_reason": {
      +        "description": "`failed` only. Why delivery could not complete.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "mint_transaction_hash": {
      +        "description": "The mint that delivered the money on Base.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "mint_transaction_url": {
      +        "description": "A block explorer link for `mint_transaction_hash`.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "payer_address": {
      +        "description": "The wallet that paid for the top-up.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "payment_network": {
      +        "description": "The chain the payment was made on, e.g. `solana` or `base`.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "payment_transaction_hash": {
      +        "description": "The settled x402 payment.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "status": {
      +        "description": "`paid`: the payment settled and delivery has started. `bridging`: the burn is confirmed and the mint is pending, skipped for a payment made on Base. `delivered`: the money arrived at the holder's deposit address but the issuer has not credited it. `credited`: posted to the balance, terminal. `failed`: delivery could not complete, terminal. A `failed` top-up stranded nothing, since the payment credited the Laso account balance instead, so retry or recover it with `POST /withdraw`. One of: paid, bridging, delivered, credited, failed.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "top_up_id": {
      +        "description": "The id `GET /fund-card-balance` returned for this top-up.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "updated_at": {
      +        "description": "When the top-up last advanced a leg, in milliseconds since the epoch.",
      +        "type": [
      +          "number",
      +          "null"
      +        ]
      +      }
      +    },
      +    "type": [
      +      "object",
      +      "null"
      +    ]
      +  },
      +  "type": [
      +    "array",
      +    "null"
      +  ]
      +}
  3. Changed2 schema fields changed
    • removedInput schema / properties / auth_token
      Removed value: -{
      -  "description": "Laso credential. Only if the MCP connection has no Authorization header.",
      -  "type": "string"
      -}
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "note": {
      +      "description": "Present only when no card issuer account is linked.",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "transactions": {
      +      "items": {
      +        "properties": {
      +          "amount": {
      +            "description": "Transaction amount in US dollars.",
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "card_id": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "created_at": {
      +            "description": "Milliseconds since the epoch.",
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "issuer_status": {
      +            "description": "The issuer's own status string, kept verbatim for support.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "merchant": {
      +            "description": "Merchant name, when the issuer reports one.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "status": {
      +            "description": "Lowercased status, e.g. `settled`.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "transaction_id": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          }
      +        },
      +        "type": [
      +          "object",
      +          "null"
      +        ]
      +      },
      +      "type": [
      +        "array",
      +        "null"
      +      ]
      +    }
      +  },
      +  "type": "object"
      +}
  4. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -{
      -  "properties": {
      -    "note": {
      -      "description": "Present only when no card issuer account is linked.",
      -      "type": [
      -        "string",
      -        "null"
      -      ]
      -    },
      -    "transactions": {
      -      "items": {
      -        "properties": {
      -          "amount": {
      -            "description": "Transaction amount in US dollars.",
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "card_id": {
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "created_at": {
      -            "description": "Milliseconds since the epoch.",
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "issuer_status": {
      -            "description": "The issuer's own status string, kept verbatim for support.",
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "merchant": {
      -            "description": "Merchant name, when the issuer reports one.",
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "status": {
      -            "description": "Lowercased status, e.g. `settled`.",
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "transaction_id": {
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          }
      -        },
      -        "type": [
      -          "object",
      -          "null"
      -        ]
      -      },
      -      "type": [
      -        "array",
      -        "null"
      -      ]
      -    }
      -  },
      -  "type": "object"
      -}New value: +null
  5. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, but the description adds substantial behavior the annotations cannot: newest-first ordering, the three-list response shape and what each list means, and the empty-state case (no issuer account linked) where all lists are empty plus a setup note. That edge-case disclosure is genuinely useful for interpreting an empty result.

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 and well-organized, with purpose first followed by invocation, response shape, and caveats. It is on the long side and the paragraph explaining how to merge transactions with card_events edges into output interpretation that arguably belongs elsewhere, but nearly every sentence carries routing or interpretation value.

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?

Covers purpose, parameter usage, the multi-list return payload, cross-routing to the non-reloadable route, and the no-issuer-account empty state. Even with an output schema present, the description explains how to read the response, leaving no material gap for an agent calling this tool.

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; the description earns a small bump by restating card_id's omit-for-all semantics and tying status/limit to filtering and paging. It adds little syntactic detail beyond the schema, but the parameter interaction framing (one card vs all cards, capped page) is mildly clarifying.

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?

Opens with a specific verb+resource ('List reloadable card transactions') and immediately scopes it to the authenticated user's reloadable cards. It explicitly carves out the sibling route for non-reloadable products ('read through /get-card-data'), so an agent can distinguish this from get_card_data and list_banking_transactions without opening a schema.

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?

Gives explicit conditional usage: pass card_id for a single card's history, omit it for every reloadable card; filter with status; cap the page with limit. It also names the alternative route for non-reloadable products, which is exactly the when-not guidance an agent needs for routing.

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