This reference is for people configuring AI clients or building integrations.
For day-to-day bookkeeping, start with the firm workspace guides.
You can describe the job to your assistant without typing these tool names.
https://api.zenofirm.com/mcp — the same surface the console uses.
Connect an AI client once, and everything below is
available to it, scoped to your firm and to the companies your firm has
connected.
There are 125 of them, in the groups below.
The rules every tool follows
- One shape for every answer. A tool returns its result, or it returns a refusal with a plain-language reason and a hint naming what to do instead. A tool never guesses its way past a problem.
- Reads never pause. Reading your books, your context, your work log and your history stays available even when a subscription lapses. Only writes pause. Nobody loses sight of data their own ledger contains.
- Planning writes nothing.
qb_plan_batch,qb_plan_feed,qb_plan_cleanup,qb_import_iifandqb_import_tableall resolve, check and render. None of them touches QuickBooks. - Only a person approves. No tool lets the AI approve a plan. A person
approves with their own click, on the plan’s page in the Zeno console or
on the plan page drawn inside the chat when they are signed in, and
Zeno refuses to post a plan approved any other way. Saying “go ahead” in
the chat is not an approval; the AI points you at the plan’s page. Your
decision reaches the conversation through
qb_await_verdict, so nobody has to go back and say “now post it”. - Apply refuses drift. If the plan or the exclusions changed after the verdict, applying is refused and a new plan is required.
- The ledger stays authoritative. Read models are labeled copies for search and speed; every write goes through QuickBooks, never around it.
- Single writes wait for you too. The few tools that change QuickBooks without a plan (voiding, deleting or editing one document, a recurring template that never posts on its own, tax setup, currencies, company settings, attachments, emailing a customer, reversing a run) write nothing on the AI’s first call. It hands you a link to an approval page, also listed on the console’s Plans page, that shows exactly what it will do, and only after you press Approve can that exact call run, once. The same goes for making a knowledge entry or playbook live, closing a period, and approving expense claims. A changed argument means a new approval.
Companies and connection
Reading the books
Most reads answer from the read models, which is why they are fast and why they carry a sync time. Reads marked live go to QuickBooks every call.The batch loop
Everything that changes the ledger goes through these, in this order. The loop is described in full under plan, review, apply, reverse.The queue
The queue that turns arriving transactions into coded postings. Statements and live bank connections fill the same queue, and nothing downstream can tell the two apart — which is why a firm can start on downloaded files and add a connection later without re-learning anything. These tools are the only road for coding a line: the console’s Bank feeds page shows the result and takes the verdicts. Working the queue is described in full under the queue.qb_plan_feed produces an ordinary plan. A person approves it on its page
and qb_apply_batch applies it like every other batch — a
feed that posted its own entries would be a second path to the ledger, and a
second path is a path where the gates are not.Live bank connections
Optional, and with Stripe and Square below, the only parts of the workspace that reach a third party for transaction data. Setting one up is a settings job, not a daily one.Stripe, Square and Helcim payouts
A payout reaches the bank as one number. Zeno reads what each one settled from Stripe or Square, once a person has connected the client’s account on Connections. The AI sets where each kind of money goes and plans each payout as one deposit split into its parts, on the bank line it caused. Helcim is recorded through a clearing account instead (why). A charge that pays an invoice, or a payment already recorded, settles it instead of counting as a sale again. Nothing posts until a person approves.Expense claims
Turn a fed card account into a claim account and every charge on it grows a second lifecycle: draft, submitted by the cardholder, approved or sent back by a reviewer. Only an approved claim can reach a plan. See expense claims.Receipts
The linked document is the claim’s evidence: it rides into submission, it
stops the coverage report counting the charge, and after posting it is what
qb_attach_document puts on the QuickBooks transaction.
Importing a file
The division of labour that makes a large import cheap and safe: the agent works out the shape from fifteen rows, and the engine applies it to every row deterministically. Reading fifty thousand rows through a model burns the customer’s tokens to produce a plausible-but-wrong ledger. See importing and migrating.qb_import_iif returns warnings that matter: every block that did not
reconcile against its own total, every transaction kind QuickBooks Online has
no equivalent for, and every payment that will post unapplied. Read them
before approving, not after.Correcting what is already posted
QuickBooks voids invoices, sales receipts, payments, bill payments and
check-type purchases only. Everything else is refused by name with delete as
the named alternative, rather than letting QuickBooks answer Unsupported
Operation. Prefer voiding wherever it is allowed.
For a single document those three are the right tools; a batch of one makes an
approval table lie about what it is. For duplicate bills, a bad import, a
wrong-month batch, a mass recode (a
select with a recode rule) or emptying a file, qb_plan_cleanup journals
every document’s pre-image before anything happens, so qb_reverse_run puts it
back — restoring a void or an edit onto the same document, and re-creating a
deleted one under a new id, saying which it did.
Emptying an old file is the largest case, and it is still this loop: widen the
window with qb_sync_mirror (historyFrom the year the file was opened), then
qb_plan_cleanup with a select — every kind, or one at a time — which plans
the batch in dependency order (deposits, then the payments they hold, then the
invoices and bills those pay, then the rest), five hundred documents a plan.
Approve, apply, run the same selection again for the next batch. Keep
customers and vendors active until their documents are gone. There is no
bulk-delete app to add; the plan is the bulk tool, with an approval table and
one reversible run per batch.
Names and lists
QuickBooks Online has no delete for list names. Deactivation is the only undo, and it is not destructive: the row leaves every picker, every posted transaction keeps it, and it can be brought back. Names are created, changed and retired through a plan a person approves, like everything else that touches the ledger.QuickBooks refuses some of these itself: a vendor with open transactions
cannot be deactivated, a bundle cannot be created through the API, and one
name index is shared across customers, vendors, and employees, so a display
name can only be used once. Each tool says so rather than failing obscurely.
Company settings
Recurring templates
A plan’s recurring section creates, replaces or deletes templates of every
type QuickBooks Online supports, scheduled ones that post on their own
included. QuickBooks Online cannot edit a template, so a change is a
replace: the old template is deleted first and a new one created under a new
id. QuickBooks Online’s API makes every template it creates active, so a
template is paused in QuickBooks Online itself. The client’s check-up page in the console lists every template, for
reading. See Recurring templates.
Sending and attachments
The firm inbox
Today
Today is a short brief for the team: decisions a person needs to make and material changes worth knowing. Assistants revise their own subjects as work moves and remove what is resolved; earlier versions stay in history.qb_guide with topic today has what belongs on the page and the format.
Bodies take Markdown, or HTML fragments with inline CSS and SVG; scripts,
forms and remote resources are not drawn.
Firm memory
A rule the AI saves is a suggestion until you make it automatic on the Rules page. Knowledge and playbooks wait for a person to confirm them, and editing one returns it to draft.The run journal records what was posted in enough detail to reverse it. It
cannot say which document a batch came from, what was decided, or what is
still open — that is what the work log is for.