Skip to main content
Glama

List ledger transactions

wave_list_ledger_transactions
Read-onlyIdempotent

List and search transactions from an imported Wave Data Export snapshot offline, filtering by date, account, customer, vendor, amount, direction, or uncategorized status.

Instructions

List and search transactions from an imported Data Export snapshot (wave_import_ledger). For live data use wave_list_transactions; this works offline and includes invoices, bills and journal entries: bank and card transactions, expenses, invoices, bills, payments, transfers and journal entries. Filter by date range, account (ID or name), text, customer, vendor, amount, direction or uncategorized only. Newest first by default. Each row has the amount on the bank/card account (or the journal total), the categories used, and the transaction ID for wave_get_ledger_transaction.

Input Schema

NameRequiredDescriptionDefault
pageNo1-based; use nextPage
sortNodate_desc
queryNoText in descriptions, notes, customer, vendor, invoice/bill number or account name
vendorNo
accountNoOnly transactions touching this account, by name (exact, else contains)
endDateNoDate, YYYY-MM-DD
customerNo
pageSizeNoItems per page (max 100)
accountIdNoOnly transactions touching this account (Wave account ID)
directionNoany
maxAmountNo
minAmountNo
startDateNoDate, YYYY-MM-DD
businessIdNoBusiness ID; defaults to the one wave_get_context reports
uncategorizedOnlyNoOnly transactions using Uncategorized Income/Expense

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.0.0

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent and non-destructive, so safety is covered; the description adds context those annotations cannot: it works offline against an imported snapshot, results are newest-first by default, and each row carries the bank/card amount (or journal total), its categories, and the transaction ID. It does not restate pagination or cursor mechanics, but nothing here contradicts the annotations.

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 offline/live distinction is front-loaded and every sentence carries content rather than filler. The paragraph of filters is denser than ideal but stays scannable and wastes little space.

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?

With 15 optional parameters and no output schema, the description takes on the return-value burden by describing the row shape and the follow-up call for details. Combined with the data-source caveat and default ordering, an agent has everything needed to call it correctly.

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 60% across 15 parameters, so the description must compensate and largely does by grouping the filter dimensions (date range, account by ID or name, text, customer, vendor, amount, direction, uncategorized only) and clarifying that account accepts a name or an ID. It stops short of explaining the direction or sort enum values and leaves vendor/customer/amount params to bare schema names.

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?

States a specific verb and resource (list and search ledger transactions) plus the exact data source: an imported Data Export snapshot via wave_import_ledger. It explicitly distinguishes itself from wave_list_transactions (live data) and enumerates the record types included, so an agent can separate it from every sibling 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 an explicit alternative and the condition that selects it: use wave_list_transactions for live data, this one for offline snapshots. It also names wave_get_ledger_transaction for drilling into a single row, covering both the when and the next step.

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

Deploy Server

Other Tools