Skip to main content
Glama
ninetails-io

gnucash-mcp

reconcile_account

DestructiveIdempotent

Reconcile account splits against a statement balance, either by selecting specific splits or sweeping all unreconciled entries up to the statement date. Verifies the resulting balance matches before mutating.

Instructions

Reconcile splits against a statement balance.

SIGN CONVENTION: statement_balance is the ACCOUNT's balance in GnuCash's signs — for liability accounts (credit cards) a $5,000 owed balance is "-5000", not "5000".

Two modes:

  • Targeted (split_guids=[...]): reconcile exactly the listed splits (SPLIT guids from get_unreconciled_splits, not transaction guids). Use when statement and book disagree and you need to pick a subset.

  • Bulk (reconcile_all=true): reconcile every unreconciled split dated on or before through_date (default: statement_date — a statement reconciliation is bounded by the statement). One call, no GUID round-trip.

Both modes verify the resulting reconciled balance ties to statement_balance before mutating; mismatch rejects with the discrepancy amount.

TYPICAL STATEMENT FLOW (credit card or bank): batch-enter the statement's transactions (create_transactions), then reconcile_all with the statement's closing date and balance. Multi-month catch-up: enter all months in one batch, then one reconcile_all per statement, oldest first — the through_date default keeps each sweep inside its own statement.

Args: account: Account ref: full path (e.g. 'Assets:Bank:Checking'), %short GUID, or full 32-char GUID statement_date: Statement ending date (YYYY-MM-DD) statement_balance: Expected balance from statement (as string, e.g., '1234.56') split_guids: List of split GUIDs to reconcile (targeted mode). Omit for bulk mode. reconcile_all: When true, reconcile all unreconciled splits up to through_date. through_date: Date filter for bulk mode (YYYY-MM-DD); defaults to statement_date.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
accountYes
split_guidsNoList of SPLIT GUIDs to reconcile (8+ char prefixes accepted). These are NOT transaction GUIDs — get them from get_unreconciled_splits. Required for targeted mode; omit when using reconcile_all=true.
except_guidsNoOptional list of split GUID prefixes to exclude from the bulk reconcile. Useful for "everything on the statement except this pending ACH" — 2 tokens vs the 100+ a full split_guids listing would cost. Only valid with reconcile_all=true; prefixes that don't resolve are silently ignored.
through_dateNoUpper-date bound for reconcile_all (YYYY-MM-DD); only splits with post_date <= through_date are swept. DEFAULTS TO statement_date — pass a later date explicitly to widen the sweep past the statement.
reconcile_allNoWhen true, reconcile every unreconciled split on the account dated on or before through_date (default: statement_date). Avoids the ~300-token GUID round-trip for statement workflows — enter several months of transactions, then reconcile each statement with just its date and balance. Mutually exclusive with split_guids.
statement_dateYes
statement_balanceYes

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.4.2

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already communicate destructiveness and idempotency, and the description adds meaningful context beyond them: the sign convention for liability accounts, the pre-mutation balance verification, and the mismatch rejection with the discrepancy amount. It stops short of describing success effects or edge cases like retries, but it goes well beyond the bare annotation signal.

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 long but well-structured: sign convention first, then modes, then workflow, then an Args list. It front-loads the most important operational facts and uses bold/bullets effectively. Some redundancy with the schema exists (e.g., through_date defaulting to statement_date is stated twice), but the length is justified by the tool's complexity.

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?

For a 7-parameter mutation tool with an output schema, the description is largely complete: it covers modes, defaults, sign convention, verification behavior, and realistic workflows including multi-month catch-up. The only notable gap is that `except_guids` is not woven into the main prose, though the schema fully documents it.

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 prose adds real meaning beyond the schema: account reference formats, statement date format, statement_balance sign convention, and the difference between split and transaction GUIDs. It omits `except_guids` from the Args list, but the schema provides a thorough description for that parameter, so the overall parameter guidance is strong.

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 opens with a specific verb and resource: 'Reconcile splits against a statement balance.' It immediately distinguishes two operating modes (targeted vs. bulk) and clarifies the exact object being reconciled ('SPLIT guids from get_unreconciled_splits, not transaction guids'), making it distinct from sibling reconciliation and statement tools.

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 explicitly tells the agent when to use each mode: targeted when 'statement and book disagree and you need to pick a subset,' and bulk for 'every unreconciled split dated on or before through_date.' It also provides a typical statement flow and multi-month catch-up sequence with ordering guidance, making the when-to-use decision actionable.

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