apply_bank_transaction_to_invoice
ChatGPTRecord an unmatched incoming bank transaction as a customer payment on a posted invoice, like the Inbox's Apply to invoice. The whole deposit is applied, dated on the deposit, to its bank account, and the transaction is matched to the payment entry. The deposit must be in the invoice's currency and no more than its balance. Stripe-linked invoices are settled through Stripe and are rejected here. get_bank_transaction lists invoices a deposit can settle.
approve_vendor_bill
ChatGPTApprove a reviewed draft vendor bill without posting it to Accounts Payable.
archive_home_expense_source
ChatGPTIrreversibly archive a submitted home expense source with a reason.
archive_home_worksheet
ChatGPTArchive a worksheet at any stage while preserving its in-app history; the tax year is then free for a new worksheet.
archive_mileage
ChatGPTArchive (void) a mileage entry with a required reason. Mileage is never hard-deleted; archived rows stay visible when filters include them.
create_capital_asset
ChatGPTCreate a capital asset register entry. Costs are minor units (cents). New assets start active.
create_home_expense_category
ChatGPTCreate a custom, versioned home-use category; custom labels are flagged for accountant mapping.
create_home_expense_source
ChatGPTAdd one dated home expense with balanced category splits and explicit allocation inputs.
create_home_profile
ChatGPTCreate the single entity-scoped home-use profile and its first workspace basis.
create_home_recurrence_template
ChatGPTSave a recurring prompt; it never creates entries without explicit confirmation.
create_home_worksheet
ChatGPTCreate a dated worksheet with the versioned ca-t2125-2025 category vocabulary.
create_invoice
ChatGPTCreate a draft customer invoice. Amounts are minor units in the invoice currency; tax rates are applied server-side. This does not send the invoice.
create_mileage
ChatGPTRecord a business-trip mileage entry. Kilometres accept up to 3 decimal places and are stored as integer metres. Vehicle and customer are optional.
create_vehicle
ChatGPTCreate a lightweight vehicle identity for mileage. Vehicles are not capital assets.
create_vendor
ChatGPTCreate or reuse a payables vendor by normalized name.
create_vendor_bill
ChatGPTCreate a draft accounts-payable bill with reviewed expense/asset and tax allocations. Amounts are minor units in the bill currency; posting is explicit.
delete_draft_home_expense_source
ChatGPTDelete a draft source only; archived/submitted evidence cannot be hard-deleted.
edit_journal_entry
ChatGPTUpdate an existing user-created journal entry. Use this when the user asks to fix its memo, date, account, or amount; never post a second entry just to represent an edit. Memo-only changes and material changes to an open entry update the existing row and create audit history. If the entry is reconciled or linked to a receipt, invoice, payment, or asset, material changes preserve the original and post a reversing entry plus a linked replacement. System entries from Stripe or FX and provider-owned Shopify activity or payout entries cannot be edited. Handle Shopify corrections through its Inbox workflow. First use list_journal_entries (and the relevant source list) to confirm the target; the idempotencyKey is required for safe correction retries.
exclude_bank_transaction
ChatGPTExclude an unmatched bank transaction from review, like the Inbox's Exclude, for activity that doesn't belong in these books (a duplicate feed line, a personal charge). excluded:false returns it to review. Excluding never posts anything.
export_capital_assets_csv
ChatGPTExport capital asset register rows matching filters as CSV text, including review state and linked receipt/journal ids.
export_home_worksheet
ChatGPTMark a ready worksheet as exported; exported snapshots are immutable.
export_mileage_csv
ChatGPTExport mileage register rows matching the current filters as CSV text, including a totals footer row.
generate_home_recurrence_drafts
ChatGPTPreview recurring dates by default; pass confirm=true to create dated draft worksheet entries.
get_attention
ChatGPTEverything that needs a human decision or follow-up, grouped into 'decision', 'follow_up', and 'connection' problems. Each item carries one primary action and a link to its owning workflow. Read this before acting so you never silently resolve ambiguity.
get_balance_sheet
ChatGPTBalance sheet as of a date (default today). Assets equal liabilities plus equity plus current earnings when the ledger is healthy.
get_bank_transaction
ChatGPTEverything the Inbox review drawer shows for one bank transaction: its title, the remembered or suggested category, suggested journal entries to match, nearby entries for combined matches, the other side of a likely transfer, open bills it could pay, invoices it could settle, the stored FX rate, and what it is matched to. Read this before deciding between match_bank_transaction, post_bank_transaction, post_bank_transaction_split, pay_bills_from_bank_transaction and apply_bank_transaction_to_invoice.
get_books_readiness
ChatGPTWhether the books have a valid statement reconciliation checkpoint through a date and, when not, the exact blockers. Newer unmatched bank activity does not erase an earlier valid through-date. Failed imports and unreviewed drafts remain separate blockers.
get_capital_asset
ChatGPTFetch one capital asset with review state, ledger account, and linked receipt/journal entry ids.
get_company_profile
ChatGPTThe company's registration from Settings → Company: legal name, business type (corporation, sole_proprietorship, partnership, or null when not chosen), 9-digit CRA business number, incorporation jurisdiction, date, and corporation number, the fiscal year end, and the CRA program accounts (RT GST/HST, RP payroll, RC corporate income tax, RZ information returns) with their full numbers. Use it for registration details on returns, letters, or the year-end company item.
get_home_profile
ChatGPTGet the entity-scoped home profile and effective-dated area/workspace inputs.
get_home_worksheet
ChatGPTGet source entries, split lines, allocation formulas, and soft readiness warnings.
get_import_plan
ChatGPTRead one Wave or unified source import plan: proposed mappings, row states, source issues, blockers, and warnings. Use it to explain mapping questions in business terms before a person approves the import.
get_invoice
ChatGPTFetch one customer invoice with tax, payment, line, and posted AR details.
get_mileage
ChatGPTFetch one mileage entry with customer/vehicle names and revision history for material field edits.
get_profit_and_loss
ChatGPTP&L over a date range (from/to required) in the entity's base currency.
get_receipt
ChatGPTFetch one receipt with its extracted fields and links (posted entry, matched bank txn).
get_trial_balance
ChatGPTTrial balance as of a date (default today) in the entity's base currency. Debits and credits must net to zero — use it to sanity-check any posting.
get_vehicle
ChatGPTFetch one vehicle by id.
get_vendor_bill
ChatGPTFetch one vendor bill with reviewed allocations, payments, and journal links.
get_year_end
ChatGPTOne fiscal year's year-end checklist, derived from the books and the owner's decisions. Every item has its key, section, kind (automatic: decided from the books; confirm: the owner confirms; document: done once a file is attached), state (done, not_applicable, open), settledBy (setttle or owner), facts, detail rows, the owner's note, whether it is optional, which decisions set_year_end_item accepts, and the titles of attached files. Also returns the open count, readyToSignOff, who signed the year off and when, the journal lock date, and filing: the return the year supports (a T2 for a corporation, T2125 for a sole proprietor or partners) with its general due dates, or null until the business type is set. The checklist follows the business type. An automatic item that is open is fixed in the books (reconcile, match, post drafts), not by a decision. Omit fiscalYearEnd for the year the Year end page opens by default.
latest_fx_rate
ChatGPTReturn the Bank of Canada daily USD/CAD rate stored in Setttle, on or before a date (default today). rate means 1 quote = rate base, where quote is the non-base currency; convert in exactly that direction. For a historical transaction, pass its transaction or journal date as onOrBefore. available:false means Setttle has no stored rate for that date. A bank transaction's own rate, when it has one, is the rate it actually settled at.
list_accounts
ChatGPTList the entity's chart of accounts (code, name, type, currency). Use this first to find account codes for posting entries.
list_bank_transactions
ChatGPTList bank transactions (statement lines) across the entity's bank accounts, filtered by status. Unmatched outflows are candidates for receipt matching; unmatched inflows for invoice payments. title is the name shown in the Inbox and the memo post_bank_transaction writes; description is the raw statement line.
list_capital_assets
ChatGPTList capital asset register entries with derived review state and linked receipt/journal context. Filter by lifecycle status, accounting source flag, acquisition dates, text search, and review due state.
list_entities
ChatGPTList every company the connection owner has access to, marking the one currently in scope. All other tools operate on the current entity — call use_entity first to switch. Use when answers might depend on which books you're looking at, or when the user mentions another company.
list_home_expense_categories
ChatGPTList versioned CRA/T2125 and custom home-use category labels for the entity.
list_home_recurrence_templates
ChatGPTList recurring home-expense prompts and their next dates.
list_home_worksheets
ChatGPTList entity-scoped home-use tax-year worksheets, excluding archived rows by default.
list_import_reviews
ChatGPTList Wave and unified source imports for this company with their review status, counts, blockers, and warnings. Use this to explain what a migration still needs before it can be committed. Committing an import stays a reviewed, explicit action in the web app.
list_invoices
ChatGPTList customer invoices with status, tax, payments, and outstanding AR. Filter by status, text, date, or sort order.
list_journal_entries
ChatGPTList posted journal entries (newest first) with their lines. Use this before post_journal_entry to look for a likely existing entry: filter by the relevant date range and compare amounts, accounts, and memo/payee before creating anything new.
list_mileage
ChatGPTList business-trip mileage for the entity. Filter by date range, year, customer, vehicle (or unassigned), archive status, and text search. Distances are returned in metres and formatted kilometres.
list_receipts
ChatGPTList receipts in the inbox with their extraction status. Posted receipts carry the journal entry id; pending/extracted ones are awaiting review.
list_tax_rates
ChatGPTList the entity's sales tax rates. Use a rate's taxRateId with post_bank_transaction to split recoverable tax out of a purchase; only active rates with recoverableOnPurchases can be claimed.
list_unregistered_purchases
ChatGPTList deferred capital purchases awaiting asset registration. These arise when a receipt capital allocation was posted but no asset was created yet.
list_vehicles
ChatGPTList entity vehicles used for mileage assignment. Retired vehicles stay visible unless filtered out.
list_vendor_bills
ChatGPTList accounts-payable bills with native totals, paid balance, posting state, and historical-import flags. Use page/pageSize for exact totals.
list_vendors
ChatGPTList entity-scoped payables vendors, optionally filtered by name or email.
list_year_ends
ChatGPTThe company's fiscal years, newest first: each year's period (start and end), whether it is open or signed off, and which year the Year end page opens by default. journalLockDate is the latest signed-off year end; journal entries on or before it are locked. Use it to find the fiscalYearEnd for get_year_end.
match_bank_transaction
ChatGPTMatch unmatched bank transactions to existing journal entries (their line on the bank account's cash account), like the Inbox's match and combine actions. Pass txnId with entryId for one-to-one; txnId with entryIds when several entries together make up one transaction (their cash lines must add up to it); or txnIds with entryId when several transactions on one account settle one entry. Rejects already matched transactions and entries that don't touch the bank account. Prefer this over posting a new entry: if a bank transaction exists for a cash movement, matching is the correct bookkeeping — a new entry would double-book it. get_bank_transaction lists suggested entries.
pay_bills_from_bank_transaction
ChatGPTSettle one or more posted vendor bills with an unmatched outgoing bank transaction, like the Inbox's Apply to bills. The payment is dated and drawn from the transaction and its bank account, the entry is posted, and the transaction is matched to it. Allocations are in bill currency and must add up to the transaction. get_bank_transaction lists bills it can pay. This records a payment already made; it moves no money.
post_bank_transaction
ChatGPTCategorize an unmatched bank transaction: post a journal entry between its bank account and one account, and match the transaction to it. This is the Inbox's Post action. Use it only when no existing journal entry is the counterpart; if one exists, use match_bank_transaction instead. For a transfer between two of the entity's bank or card accounts (for example a credit card payment), pass the other account's code: the other side's unmatched bank transaction is matched to the same entry when exactly one fits, so do not post it again. For money out, taxRateIds (from list_tax_rates) splits recoverable sales tax included in the charge to its tax account; taxAmounts corrects a rate's amount from the receipt. Tax doesn't apply to transfers. The memo defaults to the transaction's Inbox title. A foreign-currency transaction needs fxRate (1 foreign = rate base); use latest_fx_rate with onOrBefore set to the transaction date. An already matched transaction is rejected; undo_bank_post reverses a post.
post_bank_transaction_split
ChatGPTPost an unmatched bank transaction across several accounts and match it, like the Inbox's Split. The bank line is fixed at the transaction amount; give the other lines in base currency, signed debit-positive (money out: positive amounts; money in: negative), and they must balance it. Use post_bank_transaction for a single category. The memo defaults to the Inbox title; fxRate follows post_bank_transaction.
post_invoice_ar
ChatGPTPost the accounts-receivable entry for a draft invoice without sending it through a payment provider. Idempotent; use record_invoice_payment after this.
post_journal_entry
ChatGPTPost a balanced double-entry journal entry only after checking for an existing record. Before recording a transaction, expense, payment, deposit, or transfer, use list_journal_entries for the relevant date range and compare the amount, date, accounts, and memo/payee; also inspect list_bank_transactions, list_receipts, or list_invoices when those sources are relevant. If a likely match exists, report it and do not post a duplicate. A stable idempotencyKey is required for safe retries, but it does not replace the match check. Lines must balance in the entity's base currency; posted entries are never deleted. Use edit_journal_entry for corrections and void_journal_entry only to cancel a transaction. Amounts are minor units (cents). Resolve account codes with list_accounts first. Anti-pattern: before posting anything touching a bank/cash account, check list_bank_transactions for an unmatched transaction covering the movement — if one exists, match_bank_transaction to an existing entry or post_bank_transaction to categorize it, or you will double-book it. Reserve posting for entries with no bank counterpart (accruals, transfers between COA accounts, manual corrections). To change an existing entry, use edit_journal_entry; do not post a second version. Open entries update in place with audit history, while linked or reconciled material changes create a reversing entry and a linked replacement.
post_opening_balances
ChatGPTStart an established business's books from a real position. Enter the balance for each asset, liability, and equity account by account code; amounts are signed minor units, debit-normal for assets and credit-normal for liabilities and equity. Setttle posts one balanced entry and closes any difference to Retained Earnings. Refuses to run twice for the same entity. Ask the person to confirm the balances before calling this.
post_vendor_bill
ChatGPTPost an approved vendor bill to Accounts Payable. Resolve the AP account by code when the bill does not already have one. Idempotent once posted.
ready_home_worksheet
ChatGPTAcknowledge soft readiness warnings and hand a worksheet to the accountant.
record_invoice_payment
ChatGPTRecord and post a manual customer payment against an invoice. The amount applied is in invoice currency; use cashAmountMinor/cashCurrency for a different settlement currency. The invoice must already have posted AR. This records a payment the customer already made; it moves no money.
record_vendor_bill_payment
ChatGPTRecord and post a vendor-bill settlement atomically. The applied amount is in bill currency; provide settled cash fields for cross-currency payments. The bill must already be posted to Accounts Payable. This records a payment already made to the vendor; it moves no money.
resolve_account
ChatGPTLook up one account by its exact ledger code (e.g. "1000") or by a name fragment (case-insensitive, must match exactly one account — ambiguous or unknown lookups are rejected with candidates). Prefer this over guessing codes for post_journal_entry.
resolve_home_expense_category
ChatGPTAttach accountant context to a custom category without changing prior worksheet snapshots.
resolve_unregistered_purchase
ChatGPTResolve a pending unregistered purchase by linking existing assets or creating new ones whose costs sum exactly to the purchase amount.
retire_vehicle
ChatGPTRetire a vehicle (soft — it stays visible in history and past mileage). Use update_vehicle to reactivate.
set_asset_lifecycle
ChatGPTApply a discriminated lifecycle transition. Active clears disposition/retired fields; disposed requires date and method; retired requires date and reason.
set_bank_transaction_title
ChatGPTRename an unmatched bank transaction in the Inbox. The bank's own description is kept; the new title becomes the memo when it is posted.
set_program_account
ChatGPTAdd a CRA program account under the business number, or edit one by passing its id from get_company_profile. program is RT (GST/HST), RP (payroll), RC (corporate income tax, corporations only), or RZ (information returns); reference is its 4 digits, like 0001. Only RT keeps a filing frequency. The business number must be on file first. When editing, omitted effectiveDate and filingFrequency keep their current value. Confirm changes with the user first. Returns the updated profile.
set_year_end_item
ChatGPTRecord the owner's decision on one year-end checklist item: status 'done' or 'not_applicable', with an optional note, or null to clear the decision. The same rules as the Year end page apply: only choices the item offers (canConfirm, canMarkNotApplicable from get_year_end), never on an item Setttle settles from the books, never on a signed-off year. Only call it after the user has confirmed the decision. Signing off, reopening, sharing, and attaching files are done by the owner in the web app. Returns the updated checklist.
set_year_end_period_start
ChatGPTMove the start date of an open fiscal year, for example a first year that starts at incorporation rather than a full year before the year end. The start must be on or before the year end and within 53 weeks of it. Signed-off years can't be changed. Returns the updated checklist, whose facts follow the new period.
undo_bank_post
ChatGPTReverse a post_bank_transaction or split, like the Inbox's Undo: the entry is voided as of its own date and the transaction returns to review. For a transfer, both sides return. Refuses an entry that was edited, matched to other work, or used by a bill, invoice or payout.
unmatch_bank_transaction
ChatGPTDetach a matched bank transaction from its journal entries and return it to review, like the Inbox's Unmatch. The entries stay posted. To reverse a transaction posted with post_bank_transaction, use undo_bank_post instead so its entry is voided too.
update_capital_asset
ChatGPTUpdate register fields on an existing capital asset.
update_company_profile
ChatGPTEdit the company's registration fields. Omitted fields keep their current value; null clears one. Same checks as Settings → Company: the business number must be 9 digits (a pasted program account number like '123456789 RT 0001' keeps its first 9), the incorporation date can't be in the future, and jurisdiction, incorporation date, and corporation number apply only to corporations (or a business type not yet chosen) and are cleared otherwise. A business with an RC account must stay a corporation. A new incorporation date moves open year-end periods that still start at the old default. Confirm changes with the user first. Returns the updated profile.
update_home_expense_source
ChatGPTCorrect a home expense on a draft worksheet. Omit lines to keep its category splits; the amount must still match them.
update_mileage
ChatGPTEdit an open mileage entry. Material field changes write a revision snapshot; archived entries cannot be edited.
update_vehicle
ChatGPTUpdate vehicle details including optional status (active or retired).
update_vendor_bill
ChatGPTReplace the reviewed fields and allocations on an unposted vendor bill.
use_entity
ChatGPTSwitch the connection to another company. Only accept entity ids from list_entities — do not guess. After switching, all subsequent tool calls report on the new entity. The switch persists for the connection.
void_invoice
ChatGPTVoid a manually managed invoice and reverse its posted AR entry. Stripe-linked invoices must be voided through Stripe first so provider and ledger state cannot diverge.
void_journal_entry
ChatGPTCancel a posted entry by posting a linked reversing entry. The original stays visible and nothing is deleted. Idempotent: voiding an already-voided entry is a no-op. Use edit_journal_entry for corrections; do not void and recreate an entry just to change its details. Provider-owned Shopify activity, payout, and payout-FX entries cannot be voided; use their Inbox workflow instead.
approve_vendor_bill
Claudearchive_home_expense_source
Claudearchive_home_worksheet
Claudearchive_mileage
Claudecreate_capital_asset
Claudecreate_home_expense_category
Claudecreate_home_expense_source
Claudecreate_home_profile
Claudecreate_home_recurrence_template
Claudecreate_home_worksheet
Claudecreate_invoice
Claudecreate_mileage
Claudecreate_vehicle
Claudecreate_vendor
Claudecreate_vendor_bill
Claudedelete_draft_home_expense_source
Claudeedit_journal_entry
Claudeexport_capital_assets_csv
Claudeexport_home_worksheet
Claudeexport_mileage_csv
Claudegenerate_home_recurrence_drafts
Claudeget_attention
Claudeget_balance_sheet
Claudeget_books_readiness
Claudeget_capital_asset
Claudeget_home_profile
Claudeget_home_worksheet
Claudeget_import_plan
Claudeget_invoice
Claudeget_mileage
Claudeget_profit_and_loss
Claudeget_receipt
Claudeget_trial_balance
Claudeget_vehicle
Claudeget_vendor_bill
Claudelatest_fx_rate
Claudelist_accounts
Claudelist_bank_transactions
Claudelist_capital_assets
Claudelist_entities
Claudelist_home_expense_categories
Claudelist_home_recurrence_templates
Claudelist_home_worksheets
Claudelist_import_reviews
Claudelist_invoices
Claudelist_journal_entries
Claudelist_mileage
Claudelist_receipts
Claudelist_unregistered_purchases
Claudelist_vehicles
Claudelist_vendor_bills
Claudelist_vendors
Claudematch_bank_transaction
Claudepost_invoice_ar
Claudepost_journal_entry
Claudepost_opening_balances
Claudepost_vendor_bill
Claudeready_home_worksheet
Clauderecord_invoice_payment
Clauderecord_vendor_bill_payment
Clauderesolve_account
Clauderesolve_home_expense_category
Clauderesolve_unregistered_purchase
Clauderetire_vehicle
Claudeset_asset_lifecycle
Claudeupdate_capital_asset
Claudeupdate_mileage
Claudeupdate_vehicle
Claudeupdate_vendor_bill
Claudeuse_entity
Claudevoid_invoice
Claudevoid_journal_entry
Claude