quickbooks-desktop-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| QUICKBOOKS_DESKTOP_MCP_RUNS_DIR | No | Directory for undo logs. Defaults to ./quickbooks_desktop_mcp_runs |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| 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
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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