MCP App Store
by KeenEthics

Overview

Connect Claude to your Setttle books. Ask about balances, profit and loss, the balance sheet, or what needs attention. Find and match unmatched bank transactions, track invoices and vendor bills, and record journal entries, mileage, and assets. Setttle keeps double-entry books for one or more companies in CAD and USD, and every result names the company it came from. When you connect, you choose View my books (read-only) or Manage my books. Claude asks before it changes any record. Recording a payment writes a ledger entry only. Setttle never moves money.

Tools

apply_bank_transaction_to_invoice

ChatGPT
Record 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

ChatGPT
Approve a reviewed draft vendor bill without posting it to Accounts Payable.

archive_home_expense_source

ChatGPT
Irreversibly archive a submitted home expense source with a reason.

archive_home_worksheet

ChatGPT
Archive a worksheet at any stage while preserving its in-app history; the tax year is then free for a new worksheet.

archive_mileage

ChatGPT
Archive (void) a mileage entry with a required reason. Mileage is never hard-deleted; archived rows stay visible when filters include them.

create_capital_asset

ChatGPT
Create a capital asset register entry. Costs are minor units (cents). New assets start active.

create_home_expense_category

ChatGPT
Create a custom, versioned home-use category; custom labels are flagged for accountant mapping.

create_home_expense_source

ChatGPT
Add one dated home expense with balanced category splits and explicit allocation inputs.

create_home_profile

ChatGPT
Create the single entity-scoped home-use profile and its first workspace basis.

create_home_recurrence_template

ChatGPT
Save a recurring prompt; it never creates entries without explicit confirmation.

create_home_worksheet

ChatGPT
Create a dated worksheet with the versioned ca-t2125-2025 category vocabulary.

create_invoice

ChatGPT
Create 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

ChatGPT
Record 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

ChatGPT
Create a lightweight vehicle identity for mileage. Vehicles are not capital assets.

create_vendor

ChatGPT
Create or reuse a payables vendor by normalized name.

create_vendor_bill

ChatGPT
Create 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

ChatGPT
Delete a draft source only; archived/submitted evidence cannot be hard-deleted.

edit_journal_entry

ChatGPT
Update 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

ChatGPT
Exclude 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

ChatGPT
Export capital asset register rows matching filters as CSV text, including review state and linked receipt/journal ids.

export_home_worksheet

ChatGPT
Mark a ready worksheet as exported; exported snapshots are immutable.

export_mileage_csv

ChatGPT
Export mileage register rows matching the current filters as CSV text, including a totals footer row.

generate_home_recurrence_drafts

ChatGPT
Preview recurring dates by default; pass confirm=true to create dated draft worksheet entries.

get_attention

ChatGPT
Everything 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

ChatGPT
Balance sheet as of a date (default today). Assets equal liabilities plus equity plus current earnings when the ledger is healthy.

get_bank_transaction

ChatGPT
Everything 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

ChatGPT
Whether 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

ChatGPT
Fetch one capital asset with review state, ledger account, and linked receipt/journal entry ids.

get_company_profile

ChatGPT
The 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

ChatGPT
Get the entity-scoped home profile and effective-dated area/workspace inputs.

get_home_worksheet

ChatGPT
Get source entries, split lines, allocation formulas, and soft readiness warnings.

get_import_plan

ChatGPT
Read 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

ChatGPT
Fetch one customer invoice with tax, payment, line, and posted AR details.

get_mileage

ChatGPT
Fetch one mileage entry with customer/vehicle names and revision history for material field edits.

get_profit_and_loss

ChatGPT
P&L over a date range (from/to required) in the entity's base currency.

get_receipt

ChatGPT
Fetch one receipt with its extracted fields and links (posted entry, matched bank txn).

get_trial_balance

ChatGPT
Trial 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

ChatGPT
Fetch one vehicle by id.

get_vendor_bill

ChatGPT
Fetch one vendor bill with reviewed allocations, payments, and journal links.

get_year_end

ChatGPT
One 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

ChatGPT
Return 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

ChatGPT
List the entity's chart of accounts (code, name, type, currency). Use this first to find account codes for posting entries.

list_bank_transactions

ChatGPT
List 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

ChatGPT
List 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

ChatGPT
List 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

ChatGPT
List versioned CRA/T2125 and custom home-use category labels for the entity.

list_home_recurrence_templates

ChatGPT
List recurring home-expense prompts and their next dates.

list_home_worksheets

ChatGPT
List entity-scoped home-use tax-year worksheets, excluding archived rows by default.

list_import_reviews

ChatGPT
List 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

ChatGPT
List customer invoices with status, tax, payments, and outstanding AR. Filter by status, text, date, or sort order.

list_journal_entries

ChatGPT
List 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

ChatGPT
List 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

ChatGPT
List receipts in the inbox with their extraction status. Posted receipts carry the journal entry id; pending/extracted ones are awaiting review.

list_tax_rates

ChatGPT
List 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

ChatGPT
List deferred capital purchases awaiting asset registration. These arise when a receipt capital allocation was posted but no asset was created yet.

list_vehicles

ChatGPT
List entity vehicles used for mileage assignment. Retired vehicles stay visible unless filtered out.

list_vendor_bills

ChatGPT
List accounts-payable bills with native totals, paid balance, posting state, and historical-import flags. Use page/pageSize for exact totals.

list_vendors

ChatGPT
List entity-scoped payables vendors, optionally filtered by name or email.

list_year_ends

ChatGPT
The 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

ChatGPT
Match 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

ChatGPT
Settle 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

ChatGPT
Categorize 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

ChatGPT
Post 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

ChatGPT
Post 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

ChatGPT
Post 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

ChatGPT
Start 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

ChatGPT
Post 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

ChatGPT
Acknowledge soft readiness warnings and hand a worksheet to the accountant.

record_invoice_payment

ChatGPT
Record 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

ChatGPT
Record 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

ChatGPT
Look 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

ChatGPT
Attach accountant context to a custom category without changing prior worksheet snapshots.

resolve_unregistered_purchase

ChatGPT
Resolve a pending unregistered purchase by linking existing assets or creating new ones whose costs sum exactly to the purchase amount.

retire_vehicle

ChatGPT
Retire a vehicle (soft — it stays visible in history and past mileage). Use update_vehicle to reactivate.

set_asset_lifecycle

ChatGPT
Apply a discriminated lifecycle transition. Active clears disposition/retired fields; disposed requires date and method; retired requires date and reason.

set_bank_transaction_title

ChatGPT
Rename 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

ChatGPT
Add 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

ChatGPT
Record 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

ChatGPT
Move 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

ChatGPT
Reverse 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

ChatGPT
Detach 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

ChatGPT
Update register fields on an existing capital asset.

update_company_profile

ChatGPT
Edit 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

ChatGPT
Correct a home expense on a draft worksheet. Omit lines to keep its category splits; the amount must still match them.

update_mileage

ChatGPT
Edit an open mileage entry. Material field changes write a revision snapshot; archived entries cannot be edited.

update_vehicle

ChatGPT
Update vehicle details including optional status (active or retired).

update_vendor_bill

ChatGPT
Replace the reviewed fields and allocations on an unposted vendor bill.

use_entity

ChatGPT
Switch 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

ChatGPT
Void 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

ChatGPT
Cancel 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

Claude

archive_home_expense_source

Claude

archive_home_worksheet

Claude

archive_mileage

Claude

create_capital_asset

Claude

create_home_expense_category

Claude

create_home_expense_source

Claude

create_home_profile

Claude

create_home_recurrence_template

Claude

create_home_worksheet

Claude

create_invoice

Claude

create_mileage

Claude

create_vehicle

Claude

create_vendor

Claude

create_vendor_bill

Claude

delete_draft_home_expense_source

Claude

edit_journal_entry

Claude

export_capital_assets_csv

Claude

export_home_worksheet

Claude

export_mileage_csv

Claude

generate_home_recurrence_drafts

Claude

get_attention

Claude

get_balance_sheet

Claude

get_books_readiness

Claude

get_capital_asset

Claude

get_home_profile

Claude

get_home_worksheet

Claude

get_import_plan

Claude

get_invoice

Claude

get_mileage

Claude

get_profit_and_loss

Claude

get_receipt

Claude

get_trial_balance

Claude

get_vehicle

Claude

get_vendor_bill

Claude

latest_fx_rate

Claude

list_accounts

Claude

list_bank_transactions

Claude

list_capital_assets

Claude

list_entities

Claude

list_home_expense_categories

Claude

list_home_recurrence_templates

Claude

list_home_worksheets

Claude

list_import_reviews

Claude

list_invoices

Claude

list_journal_entries

Claude

list_mileage

Claude

list_receipts

Claude

list_unregistered_purchases

Claude

list_vehicles

Claude

list_vendor_bills

Claude

list_vendors

Claude

match_bank_transaction

Claude

post_invoice_ar

Claude

post_journal_entry

Claude

post_opening_balances

Claude

post_vendor_bill

Claude

ready_home_worksheet

Claude

record_invoice_payment

Claude

record_vendor_bill_payment

Claude

resolve_account

Claude

resolve_home_expense_category

Claude

resolve_unregistered_purchase

Claude

retire_vehicle

Claude

set_asset_lifecycle

Claude

update_capital_asset

Claude

update_mileage

Claude

update_vehicle

Claude

update_vendor_bill

Claude

use_entity

Claude

void_invoice

Claude

void_journal_entry

Claude

Capabilities

Writes

Example Prompts

Click any prompt to copy it.

Similar Apps