
This playbook is part of our MCP playbooks, within The MCP Guide. Want help setting it up for your team? Request a free MCP readiness review.
Month-end close is the job of making one month's books complete and correct, then freezing them. In a small business it usually falls to the owner, a bookkeeper or an outside accountant. MCP (Model Context Protocol, the open standard that lets AI apps use outside tools) lets an assistant such as Claude pull the data, find the gaps and draft the reports, while a person still signs off.
This playbook covers three ledgers with documented MCP servers: LedgerMCP (built by eSEOspace), QuickBooks Online and Xero. Because we built LedgerMCP, its details here come only from its own public docs. Tool names below are copied from each vendor's documentation as of October 2026.
Key Takeaways
- Pick your server by where the books live: LedgerMCP, QuickBooks (hosted connector or local server) or Xero (read-only hosted connector or local server).
- The close order matters: get every transaction in, categorize, match transfers and bills, reconcile last, then report.
- Keep the AI read-only for reporting, and give write access only to the steps that need it.
- The decision to lock a period stays with the owner, and LedgerMCP's docs tell the AI exactly that.
- Track what the close produces (open items, unreconciled accounts, days to close), not vague "time saved" claims.
What you need
A client. Any MCP client that accepts remote servers works. Claude's connector setup is covered in our guides to connecting Claude to QuickBooks, Xero and LedgerMCP.
One ledger server:
| Ledger | MCP option | Read or write | Close-relevant tools (as documented) |
|---|---|---|---|
| LedgerMCP (built by eSEOspace) | Hosted, https://ledgermcp.com/mcp | Both; read-only keys available | sync_connections, bulk_categorize, find_matches, reconcile_account, verify_books, run_pnl, set_lock_date |
| QuickBooks Online | Hosted Intuit connector or local open-source server | Both | qbo_accounting_get_balance_sheet, profit-loss-quickbooks-account; locally get_trial_balance, get_general_ledger |
| Xero | Hosted connector (read-only) or local open-source server | Hosted: read; local: both | get_profit_and_loss, get_bank_account_transactions, get_aged_receivables; locally list-trial-balance |
Sources: LedgerMCP's tool reference, Claude's QuickBooks listing, Intuit's QuickBooks MCP repository, Claude's Xero listing and Xero's MCP repository.
Your statements. Bank and card statement ending balances are the proof of a close. Have them ready as PDFs or numbers.
The workflow
- Load the book's rules. In LedgerMCP, start with
list_conventionsandlist_questions. These hold how past sessions agreed to book things and what is still waiting on the owner. QuickBooks and Xero have no equivalent tool, so paste your close checklist into the chat. - Bring in every transaction. LedgerMCP uses
sync_connectionsfor bank feeds andimport_transactionsfor CSV statements. QuickBooks's hosted connector hasquickbooks-transaction-import, which Intuit says "Categorizes and imports transactions into your General Ledger," plusquickbooks-import-status. With Xero, the read-only connector can list bank transactions withget_bank_account_transactions, but imports happen in Xero itself. - Categorize what's left. LedgerMCP's
bulk_categorizehandles up to 200 rows per call, and many write tools acceptdry_runto preview the journal lines first. In Xero's local server,update-bank-transactionchanges a bank transaction. Keep a person on anything unusual. - Match transfers and bills. LedgerMCP's
find_matchessuggests invoice, bill, duplicate or transfer counterparts, andconfirm_transferbooks a pair as one transfer. In QuickBooks, review open receivables withqbo_accounting_get_ar_aging_summary; in Xero, useget_aged_receivablesandget_aged_payables. - Check integrity. LedgerMCP's
verify_booksre-derives the ledger's invariants. Its docs call it "NECESSARY, NOT SUFFICIENT," because only a statement tie-out proves a period. In QuickBooks or Xero, pull the trial balance (get_trial_balancelocally,list-trial-balancein Xero's local server). - Reconcile last. LedgerMCP's
reconcile_accountties an account to a statement ending balance. A difference of zero means reconciled; a nonzero difference "returns a ranked suspects object." The docs say to "RECONCILE LAST, after the history is in." Neither Intuit's nor Xero's MCP pages list a reconciliation tool, so do that step in the app. - Draft the reports. Run profit and loss and the balance sheet for the month:
run_pnlandrun_balance_sheetin LedgerMCP,profit-loss-quickbooks-accountandqbo_accounting_get_balance_sheetin QuickBooks,get_profit_and_lossandget_financial_positionin Xero. LedgerMCP'sexport_reportmakes a CSV or an expiring link for your CPA. - Owner locks the period. LedgerMCP's
set_lock_datecloses a period so nothing dated on or before it can post. The docs call this "THE OWNER'S DECISION, NOT YOURS." Have the AI ask, not act.
Example prompts
- "List this book's conventions and open questions, then tell me what must be answered before we close September." (LedgerMCP:
list_conventions,list_questions) - "Preview categorizations for every uncategorized September transaction with dry_run. Don't post anything yet." (LedgerMCP:
bulk_categorizewithdry_run) - "Reconcile the operating checking account to the September 30 statement ending balance of [amount], and show me the suspects if it doesn't tie." (LedgerMCP:
reconcile_account) - "Show the September profit and loss and the balance sheet as of September 30, and list aged receivables over 60 days." (QuickBooks:
profit-loss-quickbooks-account,qbo_accounting_get_balance_sheet,qbo_accounting_get_ar_aging_summary) - "Compare September profit and loss with August, and show the cash position at month end." (Xero:
get_profit_and_loss,get_cash_position)
Guardrails
- Start read-only. LedgerMCP's read-only keys "can run every list and report but never write." Xero's hosted connector is read-only by design. Intuit's local server can switch off writes with
QUICKBOOKS_DISABLE_WRITE,QUICKBOOKS_DISABLE_UPDATEandQUICKBOOKS_DISABLE_DELETE. - Preview before posting. Use
dry_runwhere the server supports it, and ask for a summary before any bulk change. - Know what's permanent. LedgerMCP says "Postings are immutable: corrections are reversals, never edits." Intuit says invoices Claude creates appear in QuickBooks immediately, and deleting invoices or estimates needs your confirmation.
- Keep humans on judgment calls. Accruals, owner draws, loan splits and anything tax-related need a person. LedgerMCP's
ask_userparks such questions in the ledger instead of guessing. - Leave the lock alone. The AI should never move or clear a lock date to get a post through.
- Watch for injected instructions. Bank memos and vendor names are outside text. Read our prompt injection guide and the MCP security center.
What to measure
Track these each month, and compare them with your own baseline from before the change:
- Calendar days from month end to a locked period.
- Number of transactions still uncategorized when the close starts.
- Accounts that tie to the statement on the first reconciliation attempt, and the size of any difference.
- Open questions parked for the owner, and how long they stay open.
- Reversals posted after the close, which signal entries that were wrong.
- Accountant review notes or adjustments per month.
Don't count "hours saved" unless you time the close before and after.
Next step
Compare ledgers in Best MCP Accounting and Bookkeeping Tools, see how we built an MCP-native ledger in our LedgerMCP spotlight, and browse more workflows in the MCP playbooks hub.
Frequently asked questions
Can an AI fully close the books on its own?
Not safely. It can import, categorize, match and draft reports, but a person should review entries and approve the lock. LedgerMCP's docs say the lock date is the owner's decision, not the AI's.
Which ledger has the most close tools over MCP?
On the documented tool lists, LedgerMCP (built by eSEOspace) includes reconciliation, integrity checks and a lock date as MCP tools. Intuit's and Xero's MCP pages list strong reporting tools but no reconciliation tool, so that step stays in the app.
Is the Xero connector enough for a close?
For review and reporting, it can help. Claude's listing says it connects with read-only access, so categorizing or posting needs Xero itself or Xero's local open-source server.
Should I give the AI a write key during close?
Only for the steps that write, such as categorizing. Use a read-only key for reporting sessions, and preview bulk changes before they post.











