Finance MCP tools

The finance engine is exposed to any MCP client as tools grouped by the stage of the books they serve. Read tools never write; every write tool's description states its preconditions, its refusals and its side effects, and every one is reversible by a named partner tool or by a reopen with a reason. search_tools finds a tool by intent and mcp_health lists the full catalogue; this page is the map.

How to read this page

Tools are listed by the stage of the books they serve. Read tools never write. Write tools state, in their own descriptions, when to use them, when not to, the preconditions that must hold, the codes they refuse with, and exactly which rows they write. Money is integer cents everywhere. Every response carries meta.tenant so an agent can confirm which business it is acting on; see write safety and expected tenant.

search_tools(query) finds a tool by intent. mcp_health returns the full catalogue. get_finance_settings returns the tenant's finance profile and registry settings in one read.

Orientation

ToolClassUse
get_bookkeeper_worklistreadThe one first read: has_new_work, counts by stream, contradictions, high-water marks. Advances the marks unless peek: true
get_accountant_summaryreadThe weekly summary: envelopes, period status, exceptions, cards awaiting; every block names its source library
get_attention_digestreadThe operator's cross-business queue, including due obligations, stale feeds and envelope shortfalls
get_finance_settingsreadTenant finance profile plus every finance.* setting

Bank feed

ToolClassUse
create_bank_accountwriteRegister an account: masked identifier, kind, purpose, opening balance as at a date
update_bank_accountwriteCorrect or archive (is_active: false) an account
list_bank_accountsreadChained balance, coverage, line count, chain_intact, feed_health per account
import_bank_csvwriteIngest a statement export into a named account; chain-guarded; idempotent
list_bank_transactionsreadIngested lines by match state, direction and date window
get_period_completenessreadProve the period's lines tie by running balance; names the first break
ignore_pre_cutover_transactionswriteCutover: bulk-mark unmatched lines before the cutover date as pre-Biloh history

Money in

ToolClassUse
triage_bank_feedread/writeWorklist mode: untriaged lines with invoice candidates per deposit. Decide mode: apply triage decisions in batch, optionally creating payer rules
get_reconciliation_suggestionsreadRanked candidates for credits (invoices) and debits (payables), plus possible_transfers
match_bank_credit_to_invoicewriteRecord the deposit as the invoice's payment on the bank value date; learns the payer alias; one deposit to one invoice
link_bank_credit_to_existing_paymentwriteLink a deposit to a payment already recorded, creating no new money
unmatch_reconciliationwriteUndo a match: void the payment, free the deposit
triage_bank_transaction / bulk_triage_bank_transactionswriteCode a non-invoice line to a reporting category
untriage_bank_transaction / ignore_bank_transactionwriteReverse a triage; mark a line as not sale income
create_bank_payer_rule / apply_bank_payer_rules / list_bank_payer_rules / deactivate_bank_payer_rulewrite/readRemember a payer; rules never auto-triage a line whose amount equals an outstanding invoice
get_client_money_storyreadDeposits that look like a client's, beside their invoices and payments

Money out

ToolClassUse
record_billwriteRecord a contractor's multi-line bill against open payables
record_contractor_billwriteBackfill door: a bill where no accrual exists yet
record_paid_billwriteRecord and settle an already-paid bill against its debit in one call
settle_bill_with_bank_debitwriteSettle a bill with a debit, fanning across payables oldest first; part payments are first class
match_bank_debit_to_payablewriteSingle-payable settlement without a bill
settle_bill_externally / settle_payable_externallywritePaid outside the feed
reverse_bill_settlement / reverse_payable_settlement / unmatch_bank_debitwriteUndo
create_vendor / verify_vendor_abn / update_vendor / list_vendorswrite/readSuppliers, with GST registration from the ABR
stage_vendor_coding_from_documentwriteStage a coding from the invoice's own lines; writes no figure
create_vendor_coding_rule / apply_vendor_coding_rules / list_staged_vendor_codingswrite/readDeterministic rules that stage codings for repeat suppliers
confirm_vendor_codingwriteThe only door through which a staged coding reaches a report
split_bank_transaction / unsplit_bank_transactionwriteDivide a mixed line into typed splits, GST only where evidenced
attach_bill_document / annotate_documentwriteSubstantiation: attach the tax invoice; record markings such as business-use percentage
recompute_substantiationwriteRe-derive every record's evidence state from current thresholds
list_expense_records / update_expense_recordread/writeThe substantiation worklist and corrections
create_reporting_category / update_reporting_category / list_reporting_categorieswrite/readCategories with pnl_treatment and gst_treatment

Shoebox

ToolClassUse
create_shoebox_upload_linkwriteA single-use link to snap a receipt from a phone
move_document_to_shoeboxwriteQueue a document Biloh already holds
list_shoebox_itemsreadWaiting receipts with their extracted figures and age
suggest_shoebox_pairingsreadOffer receipt-to-debit pairs; writes nothing
confirm_shoebox_pairingwriteAttach the receipt as the debit's evidence; re-derives substantiation
record_shoebox_cash_expensewriteExit a receipt as a cash expense that will never hit the feed

Transfers and envelopes

ToolClassUse
match_transfer_pair / unmatch_transfer_pair / list_transfer_pairswrite/readPair the two halves of a movement of your own money; reaches no report
get_envelope_targetsreadTax set-aside and contractor buffer: target, actual by chained balance, gap

Close ladder

ToolClassUse
get_period_ladderreadMonths, quarters and the FY with state: open, closed, reopened, stale; both label and displayLabel
get_month_end_statusreadOne period's close state plus a live summary
run_period_closewriteClose a month, quarter or FY; hard completeness gate; optional peer-total variance
run_month_end_closewriteThe month-only predecessor of run_period_close
reopen_periodwriteUnlock with a required reason
get_period_reconciliation_viewreadTwo-sided AR and AP view for a window, basis-aware
backfill_periodwriteBring a period's history in from before Biloh

BAS and GST

ToolClassUse
get_bas_worksheetreadG1, 1A, 1B, net, PAYG slot, exceptions, on the ATO labels
get_gst_positionreadNet GST for a period
get_sales_gst_reportreadOne row per receipt, cash basis
get_purchases_gst_reportreadOne row per paid bill or coded debit, with evidence state
get_category_totalsreadA period by reporting category with treatments
get_bank_triage_reportreadTriaged lines by category or rollup class

Reports

ToolClassUse
get_profit_and_lossreadCash P&L, ex-GST, with the prior period beside every line
get_balance_sheetreadAs at any date; equity as the residual; states what it does not hold
get_tpar_reportreadTaxable Payments Annual Report per subcontractor for an FY
get_aged_payablesreadAP ageing in buckets
get_depreciation_schedulereadThe FY's schedule, tying across years by construction

Assets

ToolClassUse
create_assetwriteMint from the debit, a document or by hand; method required
list_assetsreadThe register
record_asset_disposalwriteProceeds, date and the computed balancing adjustment

Compliance calendar

ToolClassUse
list_obligationsreadBAS, super and TPAR seed themselves with AU due dates on first read
upsert_obligationwriteAdd or correct a renewal; annual cadence self-perpetuates
mark_obligation_lodgedwriteRecord lodgement; the receipt document is required

Period pack

ToolClassUse
generate_period_packwriteOne ZIP per month, quarter or FY; idempotent while nothing moves; versioned when it does
get_period_packreadManifest with checksums, composed figures, signed download link

Xero mirror

For a business that keeps Xero as its ledger of record, invoices and bills can be mirrored. Bank lines never come from Xero.

ToolClassUse
get_xero_connection_status / get_xero_authorize_url / disconnect_xeroread/writeConnection lifecycle
get_xero_mirror_for_entity / list_xero_mirror_logreadWhat was mirrored and when
manual_resync_invoice_to_xero / manual_resync_payable_to_xerowriteRe-push one record

Invoice-side tools

Invoicing, payments recorded by hand, credits, statements and late fees are documented separately: work your invoice list, invoice send gates and guards, record a cash payment taken on site.

Related

Last updated 2026-09-18