Skip to main content
The agent picks these itself. Read this when you want to know what’s available, or to name a specific tool in a request. Every tool answers with either a result or a reason it didn’t work. The reason carries QuickBooks’ own status message where there is one. There are 190 of them, in the groups below.

Setup

See setting up company files and several company files. When something isn’t working, qb_doctor is the one to reach for. It replaces the whole is-it-plugged-in conversation, opens at most one QuickBooks session, and changes nothing. qb_doctor Diagnostic Chain Callout

Batch

The main workflow. Anything arriving in volume belongs here. Transaction Idempotency Key Tag

Importing a file

A spreadsheet export or an IIF file from another system becomes a plan, reviewed and approved like any other batch. The server reads every row itself, so nothing is retyped and nothing is skipped quietly: a row it cannot read comes back as a warning. The column map is part of what the reviewer reads, so a column read as the wrong thing is caught before anything posts. The Desktop edition adds one field to it, bankAccount: the column naming the account the money moved through — the bank on a check, the card on a charge, the bank a deposit lands in, the account a transfer comes from. QuickBooks Desktop records that account on the transaction itself, and without it every check, charge, deposit and transfer in the file would be held back. When every row uses the same bank or card, give it once instead of pointing at a column. Dates and amounts are read the way the file itself settles them. When it can’t — every date could be day-first or month-first, every amount could be 1,234 or 1.234 — the import stops and names the column rather than guessing; pass dateOrder (DMY or MDY) or decimalMark (. or ,) to say which. qb_inspect_import tells you in advance which columns need it. A workbook is refused; save the sheet as CSV first. Bank downloads (.qfx, .ofx, .qbo) go through the bank feed instead.

Audit and reversal

Bank feed

The statement file you already download from the bank — .qfx, .ofx, .qbo or CSV — worked as a queue. Nothing here connects to a bank and nothing leaves the workstation: the transport is the file, and everything after it is the ordinary plan → approve → apply loop.

Bank connection (optional)

A live bank feed, which is a paid add-on and the one part of this product that needs an account and a network. The direction is the point: transactions come in, and nothing about the company file goes out — the relay never learns a chart of accounts, a vendor name, how a line was coded, or which client it belongs to. It holds your bank connection, not your bank history, and forgets each transaction as soon as the workstation says it staged it. Once a line arrives it is indistinguishable from one off a downloaded statement.

Firm workspace (optional)

For a practice on Zeno for Firms. A workstation enrols once per journal with a code from the console’s Clients page; every company file registered here then counts as a client book on the firm’s subscription, the whole Desktop surface is entitled, and no licence key is needed on the PC. What the firm learns is the company names and what its subscription allows. The books stay on the workstation. See plans.

Rules

Knowledge

Notes about a client’s books that a rule can’t express. Entries land as drafts and surface on their own once confirmed — see what it remembers. qb_study_history is for a new client once their history has been copied to the workstation, and again after a cleanup. Everything it finds lands as a draft; the rules it proposes are only saved when someone accepts them with qb_learn_rule.

Playbooks

The built-in checks read the books themselves — balances and agings live from QuickBooks, coding and names from the local copy — and come back as a list of things to raise: balances on the wrong side of their account, Undeposited Funds or a merchant clearing account that never washed to zero, invoices and bills open past 90 days, lines sitting in Uncategorized or Ask My Accountant, large purchases expensed outright, and the same vendor under two spellings. Anything the ledger needs is proposed as a plan. A check writes nothing to the company file. Run the check-up on a client’s first connection, before asking them anything.

Recurring work

The standing jobs a practice does for each client — the monthly close, quarterly sales tax — kept on a calendar, and shown on the console’s Today page until someone closes them. Each engagement opens a period every cycle and falls due a set number of days after it ends. Bind a confirmed playbook or a built-in check to it and an agent can prepare each period’s work; a person still approves what it prepared, and a person closes the period. Nothing runs in the background on a workstation. A period falls due at the first session on or after its due date, so one due on a Saturday is first offered on Monday, as overdue. Closing a period as done is Zeno’s own lock, not QuickBooks’ closing date, which it never touches. Afterwards Zeno refuses anything dated inside the period: a line of a new plan, a single posting, a correction, void or delete of a transaction in it (or moving one into it), and reversing a run with any row in it. Each refusal names the period that stopped it. A plan built before the period closed isn’t rechecked until it is planned again, and list changes and time, mileage and build corrections aren’t covered. The lock takes effect at once for whoever plans next, so the agent names it and waits for your yes. qb_close_period with status open lifts it.

Work log

Asking questions

qb_report runs against the open company file. The rest run against a local copy, never against QuickBooks.

Reading

Direct from QuickBooks, in fixed shapes, returned as CSV.

Single postings

For one-off work. Volume belongs in a batch, which adds preflight, the approval step, and automatic duplicate protection that these don’t have.

Money going out

Money coming in

A statement charge suits anyone billing the same thing repeatedly — rent, a retainer, a storage bay. The charges accumulate and one statement covers the period. If the customer expects a document to pay against, that’s an invoice. To bank receipts already taken in, call qb_undeposited_payments first: it returns the line ids qb_record_deposit needs, and no other tool returns them.

Documents that post nothing

None of these three move money or change a balance. They exist to be turned into an invoice, a receipt, or a bill later.

Inventory and receiving

An item receipt raises quantity on hand without creating anything payable — it won’t appear in qb_pay_bills. When the vendor’s invoice arrives, someone ticks Bill Received in QuickBooks and the same record becomes a bill.
These four, and billing a purchase order through qb_record_bill’s purchaseOrderTxnIds, are included with the Enterprise licence — and with the free evaluation. Every other tier still reads everything about an inventory file: valuation, quantity on hand, open purchase orders, and corrections to inventory transactions already in it.

Everything else

Creating list entries

A name can’t be deleted from a QuickBooks file once anything has used it, only made inactive. To add a whole list at once — a new client’s chart of accounts, a season’s customers — use qb_plan_names, which reviews and applies like any batch; to create the names a posting batch is waiting on, use qb_create_names. Customers, vendors, employees, and other names share one namespace, so a name taken by any of them is taken for all four, and nothing moves a name between those lists later. qb_create_list_name is the one to check twice. QuickBooks has no way to rename, hide, or remove those six lists’ entries from outside its own window, so a misspelling there is permanent as far as this connection is concerned. qb_create_calculated_item covers the five item types that change what a form adds up to rather than describing something sold: a discount, a subtotal, a payment, a sales tax item, and a sales tax group. They’re separate from qb_create_item because they carry no price and no cost, and the fields they do take — a discount rate, a tax rate and its agency, where a payment deposits to — mean nothing on the other item types. A percentage discount needs a subtotal item above it on the form to apply to the whole order rather than to the line immediately above. Use a sales tax group wherever two bodies tax the same sale — a state rate plus a county rate — because each member keeps its own agency and the liability report still splits the money per return, which one item at the combined rate would not. Correcting one is qb_modify_calculated_item, separate from qb_modify_item for the same reason — and note that a group’s member list is replaced wholesale, so adding a jurisdiction means passing the existing ones again alongside it.

Correcting list entries

Each of these shows what would change and waits for confirmation before it changes it. The preview works even on a read-only install. Renaming a name rewrites it on every transaction, report, and statement the file will ever print, and QuickBooks keeps no record of the spelling it replaced. The previous version is saved in the run journal, and nowhere else. qb_merge_duplicates is the one thing here with no way back — the “Home Depot” / “HOME DEPOT” / “Home Depot #4” problem. QuickBooks provides no unmerge.

Correcting transactions

qb_modify_transaction covers bills, checks, invoices, sales receipts, journal entries, card charges and credits, deposits, customer payments, bill payments, transfers, credit memos, vendor credits, sales tax payments, inventory adjustments, purchase orders, estimates, statement charges, sales orders, item receipts, and assembly builds. Like the list corrections above, it previews first and posts only on confirmation. Voiding preserves the audit trail and deleting doesn’t. Prefer voiding unless you have a reason. Both of those act on one transaction. Clearing many — a test account, a duplicated import, a year that was entered twice — is qb_plan_cleanup, which reads every target, orders deposits and payments ahead of the invoices and bills they settle, keeps a snapshot of each row in the run journal before it goes, and puts the whole list on a review page for your approval. A transfer can only be zeroed, because the QuickBooks SDK will neither void nor delete one. A cleanup run cannot be reversed: nothing un-voids a transaction, and a deleted one is re-entered from its snapshot as a new posting. The same plan changes transactions in place. A cleanup with the action Modify carries a patch — a header field to set on every row (date, reference number, memo, party, account, due date, deposit account, amount), a recode rule for the lines (every line on one account, class, item or customer becomes another, and every other line is carried through untouched by its own id), or both. Each row shows exactly what would change, worked out from the transaction as it was read, and a row where nothing would change is blocked rather than approved as a no-op. Apply rebuilds the change from the transaction as it stands at that moment, refuses a row that has moved since the plan was built, stores the version replaced in the run journal first, and sends the same request qb_modify_transaction would. “Recode every check on Job Materials to Job Related Costs for the year” is one plan, not a hundred confirmed calls. A modified transaction keeps its TxnID and its reconciliation; putting one back is qb_modify_transaction with the fields under replacedVersion. Neither works on funds transfers — see what it can’t do. Closing an order posts nothing. It’s how you tell QuickBooks to stop offering a cancelled balance when raising the next invoice or bill, and it can be undone by closing it again the other way.

Updating

See updating.

Getting help

Ask for it in the chat where you hit the problem, and the account you already gave stays as it was written. Your build, machine id, licence state and this install’s health go with it, so nobody has to ask you for them, and you see the whole message — including what’s attached — before anything sends. It needs an email address, because a workstation licence carries none. Nothing is sent back to that address; it’s where a reply comes to, so give one you read, and keep your own copy of what you sent. Nothing about your books is included. It’s a report about the software.

Resources

Alongside the tools, the server publishes reference data your client can hold onto instead of fetching per request. Clients that support MCP resources pick these up automatically; clients that don’t lose nothing, because everything here is also reachable through a tool. The five list resources come from the local copy, so they’re as fresh as the last sync, and reading them never waits on QuickBooks. zeno-qbd://knowledge carries confirmed entries only. A draft is a proposal, and a resource a client may load the moment it connects is not the place for one.

Read-only mode

Every tool under Single postings, Creating list entries, Correcting list entries, and Correcting transactions, plus qb_apply_batch, qb_create_names, and qb_reverse_run, refuses when the install is read-only. Reading and planning work normally. The corrections are the one partial case: their preview still runs, so a bookkeeper on a read-only install can see exactly what a fix would involve. Only the confirmation is refused. With writing enabled, those tools reach a named company whether or not it is open in QuickBooks, given always allow permission. Which login QuickBooks records the work under is explained in Companies.