> ## Documentation Index
> Fetch the complete documentation index at: https://zenofirm.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Tool reference

> Every tool the QuickBooks Desktop connection exposes, and what each one is for

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 134 of them, in the groups below.

## Setup

| Tool                        | What it does                                                                                                                    |
| --------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| `qb_setup`                  | The steps for setting up a new workstation. Start here                                                                          |
| `qb_onboarding_status`      | Saved setup progress and the next action for one or every company                                                               |
| `qb_setup_company`          | Verifies permission and optionally builds the first mirror                                                                      |
| `qb_complete_company_setup` | Marks the harmless end-to-end test complete                                                                                     |
| `qb_skip_company_setup`     | Skips a company for now and saves the reason                                                                                    |
| `qb_help`                   | Suggests useful next work from setup, mirrors, plans, rules, notes, and playbooks                                               |
| `qb_doctor`                 | Checks the whole chain — SDK, QuickBooks, permission, licence, journal, mirror, chat app — and leads with the first broken link |
| `qb_discover_companies`     | Finds the company files on this machine. Needs no QuickBooks session                                                            |
| `qb_register_open_company`  | Registers whatever QuickBooks has open, with its real name and path                                                             |
| `qb_register_company`       | Registers a file by name and path                                                                                               |
| `qb_list_companies`         | What this workstation knows about                                                                                               |
| `qb_forget_company`         | Removes a name. Touches nothing else                                                                                            |

See [setting up company files](/docs/quickbooks-desktop/setup-companies) and [several company files](/docs/quickbooks-desktop/companies).

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.

## Batch

The main workflow. Anything arriving in volume belongs here.

| Tool              | What it does                                                                                     |
| ----------------- | ------------------------------------------------------------------------------------------------ |
| `qb_plan_batch`   | Validates postings against the company file and returns an approval table. Writes nothing        |
| `qb_list_plans`   | Every plan, its stage, and whose move it is — across all clients, without opening a company file |
| `qb_review_batch` | Re-reads a plan, optionally filtered to blocked or warned entries                                |
| `qb_create_names` | Creates the vendors and customers a plan is blocked on, then re-plans it                         |
| `qb_approve_plan` | Records that you approved a batch — who, when, and in your own words. Posts nothing              |
| `qb_reject_plan`  | Records that you turned a batch down, and why. The plan shows as rejected and cannot be applied  |
| `qb_apply_batch`  | Posts an approved plan and returns the run id that undoes it                                     |

## Audit and reversal

| Tool                     | What it does                                                               |
| ------------------------ | -------------------------------------------------------------------------- |
| `qb_status`              | Licence state, read-only mode, journal location, machine id                |
| `qb_list_runs`           | Every batch posted from this install                                       |
| `qb_run_detail`          | One run's entries and their outcomes                                       |
| `qb_explain_transaction` | Which batch posted a transaction, who approved it, and its source document |
| `qb_reverse_run`         | Voids everything a run posted                                              |

## Rules

| Tool                | What it does                                             |
| ------------------- | -------------------------------------------------------- |
| `qb_list_rules`     | Coding rules saved for a company file                    |
| `qb_learn_rule`     | Saves a coding decision so it applies next time          |
| `qb_forget_rule`    | Removes a rule. Changes nothing already posted           |
| `qb_suggest_coding` | Proposes coding for a descriptor without saving anything |

## 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](/docs/quickbooks-desktop/memory#knowledge).

| Tool                   | What it does                                                     |
| ---------------------- | ---------------------------------------------------------------- |
| `qb_write_knowledge`   | Records a note, anchored to the vendors and customers it's about |
| `qb_list_knowledge`    | What's recorded for a company, drafts included                   |
| `qb_confirm_knowledge` | Confirms an entry, which is what makes it start surfacing        |
| `qb_forget_knowledge`  | Removes an entry                                                 |

## Playbooks

| Tool                  | What it does                                                          |
| --------------------- | --------------------------------------------------------------------- |
| `qb_write_playbook`   | Writes down a procedure, with `{{named}}` slots filled in at run time |
| `qb_list_playbooks`   | Procedures for a company, plus those that apply to every client       |
| `qb_run_playbook`     | Returns the steps with values filled in. Changes nothing itself       |
| `qb_confirm_playbook` | Confirms a draft. Only confirmed playbooks can be run                 |
| `qb_forget_playbook`  | Removes a playbook                                                    |

## Work log

| Tool          | What it does                               |
| ------------- | ------------------------------------------ |
| `qb_log_work` | Records what was done this session and why |
| `qb_work_log` | Reads entries back, by company and period  |

## Asking questions

`qb_report` runs against the open company file. The rest run against a [local copy](/docs/quickbooks-desktop/questions), never against QuickBooks.

| Tool               | What it does                                                                                                      |
| ------------------ | ----------------------------------------------------------------------------------------------------------------- |
| `qb_report`        | Runs a QuickBooks report — P\&L, balance sheet, trial balance, agings. Call with no report type for the catalogue |
| `qb_sync_mirror`   | Copies the company file into the local database                                                                   |
| `qb_query`         | Runs a SQL SELECT against that copy. Read-only, capped at 500 rows                                                |
| `qb_mirror_status` | What the copy holds and how old it is                                                                             |

## Reading

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

| Tool                      | What it does                                                                                   |
| ------------------------- | ---------------------------------------------------------------------------------------------- |
| `qb_company_info`         | The open company file                                                                          |
| `qb_list_accounts`        | Chart of accounts                                                                              |
| `qb_find_customers`       | Customers and jobs                                                                             |
| `qb_find_vendors`         | Vendors                                                                                        |
| `qb_list_classes`         | Classes                                                                                        |
| `qb_list_items`           | Items                                                                                          |
| `qb_stock_by_site`        | Quantity on hand per item per inventory site. Needs Advanced Inventory                         |
| `qb_open_invoices`        | Unpaid invoices                                                                                |
| `qb_bills_to_pay`         | What one vendor is owed, with the credits available against it                                 |
| `qb_undeposited_payments` | Payments and sales receipts taken in but not yet banked                                        |
| `qb_find_transactions`    | Transactions by date, type, name, amount, or reference                                         |
| `qb_list_reference_data`  | Terms, payment methods, tax codes, reps, and the other small lists everything is coded against |
| `qb_list_custom_fields`   | The custom fields this file defines, and what each applies to                                  |
| `qb_1099_mapping`         | Which accounts feed each 1099 box, and whether the file files them at all                      |
| `qb_sales_tax_owed`       | What sales tax is owed, per agency, with the items behind each total                           |
| `qb_income_tax_mapping`   | Which tax line each account reports under, and the P\&L accounts assigned to none              |

## 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

| Tool                           | What it does                                           |
| ------------------------------ | ------------------------------------------------------ |
| `qb_record_bill`               | Records a vendor bill to be paid later                 |
| `qb_record_check`              | Writes a check                                         |
| `qb_record_credit_card_charge` | Records a card charge or credit                        |
| `qb_record_vendor_credit`      | Records a credit from a vendor                         |
| `qb_pay_bills`                 | Pays open bills, applying credits and discounts        |
| `qb_record_sales_tax_payment`  | Pays a sales tax liability                             |
| `qb_set_1099_mapping`          | Maps accounts onto 1099 boxes, or turns 1099 filing on |
| `qb_record_transfer`           | Moves money between two accounts                       |

### Money coming in

| Tool                      | What it does                                                                        |
| ------------------------- | ----------------------------------------------------------------------------------- |
| `qb_record_invoice`       | Bills a customer on a document they can pay against                                 |
| `qb_record_sales_receipt` | Records a sale paid at the time                                                     |
| `qb_record_charge`        | Bills a customer in their register, to go out on a statement rather than an invoice |
| `qb_receive_payment`      | Applies a customer payment to open invoices                                         |
| `qb_record_deposit`       | Banks undeposited receipts, or records a direct deposit                             |
| `qb_record_credit_memo`   | Records a customer credit or refund                                                 |
| `qb_refund_credit_card`   | Returns a customer's credit to the card it came from                                |

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

| Tool                       | What it does                          |
| -------------------------- | ------------------------------------- |
| `qb_record_estimate`       | Quotes a customer                     |
| `qb_record_sales_order`    | Records an order to be invoiced later |
| `qb_record_purchase_order` | Orders goods from a vendor            |

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

| Tool                             | What it does                                                     |
| -------------------------------- | ---------------------------------------------------------------- |
| `qb_record_item_receipt`         | Records goods that arrived but haven't been billed yet           |
| `qb_build_assembly`              | Builds an inventory assembly from its components                 |
| `qb_finish_build`                | Finishes a build left pending, or changes how many units it made |
| `qb_record_inventory_adjustment` | Corrects quantity or value on hand                               |
| `qb_transfer_inventory`          | Moves stock between sites. Nothing reaches the P\&L              |
| `qb_modify_inventory_transfer`   | Corrects a stock transfer                                        |

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.

<Note>
  These four, and billing a purchase order through `qb_record_bill`'s `purchaseOrderTxnIds`, are included with the [Enterprise licence](/docs/quickbooks-desktop/plans#the-inventory-domain) — 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.
</Note>

### Everything else

| Tool                        | What it does                                                                                  |
| --------------------------- | --------------------------------------------------------------------------------------------- |
| `qb_record_journal_entry`   | Records a journal entry                                                                       |
| `qb_record_vehicle_mileage` | Records a trip against a vehicle                                                              |
| `qb_record_time`            | A time activity — who worked, how long, for which job. Billable time reaches the next invoice |

## Creating list entries

| Tool                         | What it does                                                                                      |
| ---------------------------- | ------------------------------------------------------------------------------------------------- |
| `qb_create_customer`         | Adds a customer or a job                                                                          |
| `qb_create_vendor`           | Adds a vendor                                                                                     |
| `qb_create_person`           | Adds an employee, or an other name for someone the file pays                                      |
| `qb_create_account`          | Adds an account to the chart                                                                      |
| `qb_create_class`            | Adds a class                                                                                      |
| `qb_create_item`             | Adds an item                                                                                      |
| `qb_create_item_group`       | Adds a group item — several items billed as one line                                              |
| `qb_create_item_assembly`    | Adds an inventory assembly, with the bill of materials it is built from                           |
| `qb_create_item_fixed_asset` | Records something the firm owns in the Fixed Asset Item List. Posts nothing                       |
| `qb_create_calculated_item`  | Adds a discount, subtotal, payment, sales tax item, or sales tax group                            |
| `qb_create_terms`            | Adds payment terms                                                                                |
| `qb_create_vehicle`          | Adds a vehicle to the Vehicle List                                                                |
| `qb_create_currency`         | Adds a currency to a multicurrency file                                                           |
| `qb_create_price_level`      | Adds a price level — a percentage off everything, or named items priced specially                 |
| `qb_create_unit_of_measure`  | Adds a unit-of-measure set. Cannot be corrected afterwards                                        |
| `qb_create_inventory_site`   | Adds a warehouse, yard or van. Needs Advanced Inventory                                           |
| `qb_create_billing_rate`     | Adds a billing rate level. Cannot be corrected afterwards                                         |
| `qb_create_sales_rep`        | Adds a sales rep — initials, and the person they stand for                                        |
| `qb_create_sales_tax_code`   | Adds a sales tax code — the taxable/not flag, not a rate                                          |
| `qb_create_list_name`        | Adds a customer type, job type, vendor type, payment method, shipping method, or customer message |

A name can't be deleted from a QuickBooks file afterwards, only made inactive. To create the names a whole batch is waiting on in one approved step, use `qb_create_names` instead.

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.

| Tool                         | What it does                                                                                                                                  |
| ---------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
| `qb_modify_customer`         | Corrects a customer or job                                                                                                                    |
| `qb_modify_vendor`           | Corrects a vendor                                                                                                                             |
| `qb_modify_person`           | Corrects an employee or other name                                                                                                            |
| `qb_modify_account`          | Corrects an account                                                                                                                           |
| `qb_modify_class`            | Corrects a class                                                                                                                              |
| `qb_modify_item`             | Corrects an item                                                                                                                              |
| `qb_modify_item_group`       | Corrects a group item                                                                                                                         |
| `qb_modify_item_assembly`    | Corrects an inventory assembly, including what it is made of                                                                                  |
| `qb_modify_item_fixed_asset` | Corrects a fixed asset record, or marks one sold                                                                                              |
| `qb_modify_calculated_item`  | Corrects a discount, subtotal, payment, sales tax item, or sales tax group                                                                    |
| `qb_modify_time`             | Corrects a time activity, keeping the entry an invoice may already link to                                                                    |
| `qb_modify_vehicle`          | Corrects a vehicle                                                                                                                            |
| `qb_modify_currency`         | Corrects a currency                                                                                                                           |
| `qb_modify_price_level`      | Corrects a price level. Sending items replaces the whole book                                                                                 |
| `qb_modify_inventory_site`   | Corrects an inventory site                                                                                                                    |
| `qb_modify_sales_rep`        | Corrects a sales rep                                                                                                                          |
| `qb_modify_sales_tax_code`   | Corrects a sales tax code                                                                                                                     |
| `qb_merge_duplicates`        | Merges two duplicate accounts, classes, customers, or vendors into one                                                                        |
| `qb_define_custom_field`     | Defines a custom field, or changes which records it applies to                                                                                |
| `qb_delete_custom_field`     | Removes a custom field and every value ever stored in it                                                                                      |
| `qb_delete_list_entry`       | Deletes a list record nothing references — the typo vendor, the duplicate class. Previews first, and QuickBooks refuses anything with history |

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

| Tool                      | What it does                                                      |
| ------------------------- | ----------------------------------------------------------------- |
| `qb_modify_transaction`   | Corrects a transaction in place, without voiding and reposting it |
| `qb_void_transaction`     | Voids a transaction, keeping it in the register                   |
| `qb_delete_transaction`   | Deletes a transaction outright                                    |
| `qb_set_cleared_status`   | Sets the cleared flag. Not the same as reconciling                |
| `qb_set_custom_field`     | Writes a custom-field value onto a record or a transaction        |
| `qb_close_purchase_order` | Closes a purchase order by hand, or reopens one                   |
| `qb_close_sales_order`    | Closes a sales order by hand, or reopens one                      |

`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.

Neither works on funds transfers — see [what it can't do](/docs/quickbooks-desktop/limits#transfers-are-a-one-way-door).

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

| Tool                  | What it does                                                       |
| --------------------- | ------------------------------------------------------------------ |
| `qb_check_for_update` | Asks whether a newer build is published, at the moment you run it  |
| `qb_download_update`  | Downloads that installer and verifies its checksum. Doesn't run it |

See [updating](/docs/quickbooks-desktop/updating).

## 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.

| Resource                   | What it is                                                       |
| -------------------------- | ---------------------------------------------------------------- |
| `zeno-qbd://knowledge`     | Everything confirmed about the open company, grouped by category |
| `zeno-qbd://accounts`      | Chart of accounts                                                |
| `zeno-qbd://vendors`       | Vendors                                                          |
| `zeno-qbd://customers`     | Customers and jobs                                               |
| `zeno-qbd://classes`       | Classes                                                          |
| `zeno-qbd://items`         | Items                                                            |
| `zeno-qbd://mirror-status` | How fresh the local copy is                                      |
| `zeno-qbd://runs`          | Recent runs                                                      |
| `zeno-qbd://plan/{planId}` | One plan's approval table, as it was shown                       |
| `zeno-qbd://run/{runId}`   | One run's entries and outcomes                                   |

The five list resources come from the [local copy](/docs/quickbooks-desktop/questions), 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.

Even with writing enabled, those tools require the target company to be visibly open in QuickBooks. Closed-file permission is used only for reads, reports, and mirror refreshes.
