Syncing a copy
The company setup walkthrough builds an initial copy and proves it with a harmless question. To add another date range later, ask: “Sync the mirror for 2025 and 2026.” The assistant callsqb_sync_mirror, which copies the file’s lists and that range of transactions into a local database — one file per company, under %LOCALAPPDATA%\Zeno\qb-mcp\mirror\. Lists come over fresh on every sync; transactions are added to what’s already there, so syncing another year later leaves you with both. A registered company with always allow permission can sync while its QuickBooks window is closed.
A long range takes minutes, because reading transactions out of QuickBooks is slow. Start with the years you’ll actually ask about.
Asking
Once the copy exists, ask in plain language: “Which five vendors did we spend the most with last quarter, and how does that compare to the quarter before?” “Show me every expense account with no activity this year.” “What’s the average days-to-pay on our bills, by vendor?” Claude writes SQL against the copy and reads the answer back. You don’t need to see the query, though you can ask for it. Answers are capped at 500 rows and flagged when truncated, and amounts are stored as integer cents so totals come out exact — asking questions has the detail. The copy is opened read-only. A query can’t write to it, can’t reach the company file, and can’t reach the run journal, so the worst a wrong query does is return the wrong rows. If you don’t know what to ask, say “Suggest useful next steps for this company.”qb_help uses setup progress, mirror freshness, open plans, rules, knowledge, and playbooks to suggest specific work instead of returning a generic feature list.
When a report is the answer
Anything a client would recognise as a statement — a P&L, a balance sheet, a trial balance, an aging — shouldn’t be rebuilt from transaction lines. Ask for the report instead:qb_report runs QuickBooks’ own report engine against the open file, so the numbers match the client’s screen.
The copy is for what no report covers: joins, rankings, comparisons across periods, and everything below.
The whole practice at once
Everything that touches a company file is bound by QuickBooks’ one-file-at-a-time rule. The copies aren’t. Once each client has been synced, a question can span all of them while QuickBooks sits closed. Get there once: register each client, open each file, sync it, move to the next. Then: “Across every client on this machine, what did we spend with Atlas Insurance in 2026?” “Which clients have bills more than 60 days old, and how much?” One query answers it. Every synced company is attached at once and read through views namedall_transactions, all_vendors, and so on, each row carrying the company it came from — so a practice-wide total is one statement, not an afternoon of opening files.
Three boundaries worth knowing:
- Asking across companies is included with Practice and Enterprise. On Core, every registered company is still fully queryable one at a time — pass
companyand run the same question per client; what Core leaves out is the aggregation, not the data. An unlicensed evaluation has it too. - A single query reaches eleven clients at most, and refuses past that rather than answering about a subset. A bigger practice splits the question in two.
- A client that’s never been synced is skipped, and the answer names it, so you know who it doesn’t cover.