Skip to main content
Glama
lilfroog

quickbooks-desktop-mcp

by lilfroog

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
QUICKBOOKS_DESKTOP_MCP_RUNS_DIRNoDirectory for undo logs. Defaults to ./quickbooks_desktop_mcp_runs

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
qb_company_infoA

Returns the company file path QuickBooks Desktop currently has open. Call this first, and before any write, to confirm you're pointed at the right client's file.

qb_list_accountsA

Lists all accounts in the chart of accounts (name, type, active, balance). Use this to confirm an account name exists exactly before trying to post to it -- QuickBooks rejects an AccountRef to a nonexistent or misspelled account.

qb_list_vendorsA

Lists vendors (name, ListID). Use this to confirm a payee exists exactly before posting a transaction against it.

qb_vendor_historyA

Returns which account(s) this vendor's past transactions were booked to, with counts -- e.g. {"Food Purchases": 175}. Use this before guessing an account for a new transaction from a known vendor: prefer whatever this vendor has actually been booked to before, not a plausible-sounding guess.

qb_query_transactionsA

Queries transactions of one type (Check, Deposit, CreditCardCharge, CreditCardCredit, Transfer, JournalEntry). date_from/date_to as YYYY-MM-DD. Returns normalized records: date, amount, payee, account (first line), memo, txn_id, edit_sequence.

qb_check_duplicateA

Checks whether a transaction with this date+amount already exists somewhere in the company file, within a tolerance window (banks don't always post the two sides of a transfer/payment on the exact same date). Use this before posting anything, to avoid double-entry -- especially for payments/transfers, where the same real-world event can get recorded from either side of a linked account.

qb_add_transactionA

Adds a transaction (Check, Deposit, CreditCardCharge, or CreditCardCredit). lines: [{"account": str, "amount": float, "memo": str|None}, ...]. Automatically logs an undo entry -- every add can be reverted with qb_revert_run using the returned run_id.

Pass expected_company_file (from a prior qb_company_info call) to have this refuse to run if a different file is open than you expect.

qb_modify_transaction_lineA

Modifies one expense/deposit line on an existing transaction. You must pass the ORIGINAL account/amount/memo (query the transaction first if you don't already have them) so the undo log can restore them exactly.

qb_delete_transactionA

Deletes a transaction. You must pass before_snapshot -- the full transaction as it exists right now (query it first: account, payee, refnum, txn_date, header_memo, lines) -- so the undo log can recreate it if this needs to be reverted. Deleting without an accurate snapshot means it cannot be undone.

qb_add_vendorA

Creates a vendor if it doesn't already exist. Check qb_list_vendors first -- QuickBooks Desktop vendor names must be unique, and the same real-world vendor sometimes already exists under slightly different spelling/casing.

qb_revert_runA

Reverts every operation in a run log, in reverse order. Set dry_run=true first to preview what would happen without changing anything.

qb_list_runsA

Lists recent run logs (most recent first), so you can find a run to inspect or revert without knowing its exact filename.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/lilfroog/quickbooks-desktop-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server