Start free
general_ledgerRead-only

Trace exactly how one account got to its current number

A report told you an account's total, but you need to know exactly what got you there — every posting, in order, so you can explain a number instead of just repeating it.

Every other report in BalanceMCP shows you a total. This one shows you the path to that total. Give it an account and a date range, and it returns every single posting to that account in date order, with a running balance after each one — plus the opening balance carried in from before the range started, so the running balance always ties out from day one.

This is the tool for the question that starts with "wait, why is..." — why is Materials higher than expected this quarter, why did Owner's Draw jump in March, why doesn't this account's balance match what you remember. Instead of re-deriving the answer from a pile of transactions, you get the actual sequence of postings that produced the number.

One detail worth double-checking before you call this: the account it read is echoed back in the response, with its code and name, specifically so you can confirm it looked at the account you meant. This matters because the accountId this tool wants is a ledger account id — the kind manage_accounts or a report line gives you — not a bank account id. If you're working from cash_position, use a row's chartAccountId here, not anything from its bankAccountIds array; that gets rejected.

What you would actually say"Pull the general ledger for the Materials account, January through June."

What this does not do

  • Needs a specific accountId and date range for every call — there's no "show me everything" mode across all accounts at once; that's what trial_balance or export_book are for.
  • Only shows what has actually posted — nothing still sitting unposted in the inbox appears, even if it would eventually land in this account.

Arguments

NameTypeRequiredWhat it is
bookIduuidRequired
accountIduuidRequiredA ledger account id from manage_accounts. If you are working from cash_position, this is a row's chartAccountId — NOT an entry in its bankAccountIds, which are bank account ids and are rejected here.
fromstringRequired
tostringRequired

Generated from the tool definition, so it cannot describe arguments the tool does not accept. Unrecognised arguments are rejected rather than ignored.

Common questions

What id does this tool actually need?
A ledger accountId — the kind manage_accounts returns, not a bank account id. If you're starting from cash_position, use the row's chartAccountId, not anything inside bankAccountIds; the latter is rejected here.
Why does the response echo back the account I asked for?
So you can confirm it read the account you actually meant — the code and name come back alongside the results specifically as a check, since a wrong accountId is an easy mistake to make quietly.
Does the running balance include activity from before my date range?
Yes — the opening balance carried into the range accounts for everything posted before it started, so the running balance is accurate from the very first row shown, not reset to zero at the range boundary.