Skip to main content
Glama
QuickBooks Online MCP Server

QuickBooks Online MCP Server

QuickBooks Online MCP Server

A comprehensive Model Context Protocol (MCP) server for QuickBooks Online

License: MIT Tools Entities Reports Coverage Tests

Quick Start | Available Tools | Authentication | Documentation


Overview

This MCP server provides complete QuickBooks Online API integration for Claude Code and other MCP-compatible clients. It includes full CRUD operations for 29 entity types and 11 financial reports, giving you comprehensive access to QuickBooks Online functionality.

Key Features

  • 144 Total Tools - Complete coverage of QuickBooks Online API

  • 29 Entity Types - Full CRUD operations (Create, Read, Update, Delete, Search)

  • 11 Financial Reports - Balance Sheet, P&L, Cash Flow, and more

  • OAuth 2.0 Authentication - Secure token-based authentication

  • TypeScript - Full type safety with Zod validation

  • Tested - Jest test suite with ESM support

Note: this is a local MCP server. It runs as a stdio subprocess on the developer's or partner's machine and authenticates to a QuickBooks Online company.


Related MCP server: QuickBooks Online MCP Server

Quick Start

Installation

# Clone the repository
git clone https://github.com/your-username/mcp-quickbooks-online.git
cd mcp-quickbooks-online

# Install dependencies
npm install

# Build the project
npm run build

Configuration

Copy the template .env.example to .env in the root directory and fill in your values:

cp .env.example .env
QUICKBOOKS_CLIENT_ID=your_client_id
QUICKBOOKS_CLIENT_SECRET=your_client_secret
QUICKBOOKS_ENVIRONMENT=sandbox
QUICKBOOKS_REFRESH_TOKEN=your_refresh_token
QUICKBOOKS_REALM_ID=your_realm_id

# Optional: restrict which tool categories are registered (default: all enabled)
# QUICKBOOKS_DISABLE_WRITE=true    # suppress create_* tools
# QUICKBOOKS_DISABLE_UPDATE=true   # suppress update_* tools
# QUICKBOOKS_DISABLE_DELETE=true   # suppress delete_* tools

.env is gitignored so your real credentials stay local.

Claude Code Integration

Add to your Claude Code MCP configuration:

{
  "mcpServers": {
    "quickbooks": {
      "command": "node",
      "args": ["path/to/mcp-quickbooks-online/dist/index.js"],
      "env": {
        "QUICKBOOKS_CLIENT_ID": "your_client_id",
        "QUICKBOOKS_CLIENT_SECRET": "your_client_secret",
        "QUICKBOOKS_REFRESH_TOKEN": "your_refresh_token",
        "QUICKBOOKS_REALM_ID": "your_realm_id",
        "QUICKBOOKS_ENVIRONMENT": "sandbox",
        "QUICKBOOKS_DISABLE_WRITE": "false",
        "QUICKBOOKS_DISABLE_UPDATE": "false",
        "QUICKBOOKS_DISABLE_DELETE": "false"
      }
    }
  }
}

Set any of the DISABLE_* flags to "true" to prevent that category of tools from being registered. Read tools (get_*, search_*) are always available.


Multi-company & remote deployment

The server can also run as a remote, multi-company HTTP MCP server. One Intuit app authorizes many QuickBooks companies via built-in OAuth onboarding; each company is reached at /mcp/<realmId> and guarded by a shared bearer token. Refresh tokens persist per-company in a data volume.

  • Set MCP_TRANSPORT=http (or PORT) to start the HTTP server instead of stdio.

  • Onboard companies at GET /connect?token=<MCP_BEARER_TOKEN> (OAuth); list them at GET /companies; health at GET /health.

  • App-level env: QBO_CLIENT_ID, QBO_CLIENT_SECRET, QBO_ENVIRONMENT, PUBLIC_BASE_URL, MCP_BEARER_TOKEN (legacy QUICKBOOKS_* names still work for single-company stdio).

  • Ships with a Dockerfile and docker-compose.yml (with a Cloudflare cloudflared named-tunnel sidecar).

Two ways to target a company:

  • Per-connection — connect to /mcp/<realmId>; every call uses that company. (Strong isolation, natural per-company auth; N companies = N × tools in the client.)

  • Single connection — connect to /mcp (no realm) and pass an optional company (realm ID) argument on each tool call. One connection serves every company with a constant ~140 tools. The company field is injected centrally in RegisterTool, so no handler needs it; if omitted, the connection's default company is used.

How it works (architecture)

  • One Intuit app → many companies. Each OAuth authorization yields a distinct realmId + refresh token; tokens persist per-company in a data volume (data/companies.json).

  • Company context via AsyncLocalStorage. Every request is bound to a company; the static QuickbooksClient.getInstance() resolves the current realm from context and returns a per-company client from a registry — so none of the ~90 handlers need changes. (src/clients/company-context.ts, src/clients/quickbooks-client.ts.)

  • Two ways to select a company (see table above): per-connection URL, or an optional company argument injected into every tool by src/helpers/register-tool.ts.

  • Security layers: Cloudflare named tunnel (no inbound ports) → Cloudflare Access → app auth. Two front doors hit the same server: a service-token + bearer path for header-capable/machine clients, and a separate Managed-OAuth hostname so Claude Desktop / claude.ai can add it as a one-click OAuth custom connector (no headers — browser SSO + Dynamic Client Registration at the edge).

  • Admin UI at / (→ /admin, Gmail SSO) to OAuth-onboard companies, view live details, test/refresh, and disconnect.

  • list_companies tool lets a connected client enumerate the realms it can act on, then pass one as the company argument.

Documentation

Guide

What it covers

DEPLOY.md

Docker + Cloudflare named-tunnel deployment, OAuth onboarding, env vars

docs/CONNECTING-CLIENTS.md

Adding the server to Claude Code, Claude Desktop, Claude.ai/Cowork, OpenAI Codex, Cursor, VS Code

Quick add (Claude Code, single-connection mode — pass company per call):

claude mcp add --transport http qbo https://<PUBLIC_BASE_URL>/mcp \
  --header "CF-Access-Client-Id: <CF_ACCESS_CLIENT_ID>" \
  --header "CF-Access-Client-Secret: <CF_ACCESS_CLIENT_SECRET>" \
  --header "Authorization: Bearer <MCP_BEARER_TOKEN>"

Available Tools

Entities

Complete CRUD operations are available for all entity types:

Entity

Create

Get

Update

Delete

Search

Customer

✅

✅

✅

✅

✅

Invoice

✅

✅

✅

✅

✅

Estimate

✅

✅

✅

✅

✅

Bill

✅

✅

✅

✅

✅

Vendor

✅

✅

✅

✅

✅

Employee

✅

✅

✅

✅

✅

Account

✅

✅

✅

-

✅

Item

✅

✅

✅

✅

✅

Journal Entry

✅

✅

✅

✅

✅

Bill Payment

✅

✅

✅

✅

✅

Purchase

✅

✅

✅

✅

✅

Payment

✅

✅

✅

✅

✅

Sales Receipt

✅

✅

✅

✅

✅

Credit Memo

✅

✅

✅

✅

✅

Refund Receipt

✅

✅

✅

✅

✅

Purchase Order

✅

✅

✅

✅

✅

Vendor Credit

✅

✅

✅

✅

✅

Deposit

✅

✅

✅

✅

✅

Transfer

✅

✅

✅

✅

✅

Time Activity

✅

✅

✅

✅

✅

Class

✅

✅

✅

-

✅

Department

✅

✅

✅

-

✅

Term

✅

✅

✅

-

✅

Payment Method

✅

✅

✅

-

✅

Tax Code

-

✅

-

-

✅

Tax Rate

-

✅

-

-

✅

Tax Agency

-

✅

-

-

✅

Company Info

-

✅

✅

-

-

Attachable

✅

✅

✅

✅

✅

Reports

Report

Tool Name

Description

Balance Sheet

get_balance_sheet

Assets, liabilities, and equity snapshot

Profit & Loss

get_profit_and_loss

Income and expenses over a period

Cash Flow

get_cash_flow

Cash inflows and outflows

Trial Balance

get_trial_balance

Debit and credit balances

General Ledger

get_general_ledger

Complete transaction history

Customer Sales

get_customer_sales

Sales by customer

Aged Receivables

get_aged_receivables

Outstanding customer invoices

Aged Receivables Detail

get_aged_receivables_detail

Detailed aging breakdown

Customer Balance

get_customer_balance

Current customer balances

Aged Payables

get_aged_payables

Outstanding vendor bills

Vendor Expenses

get_vendor_expenses

Expenses by vendor


Tool Reference

Tool

Description

create_customer

Create a new customer

get_customer

Get customer by ID

update_customer

Update customer details

delete_customer

Delete a customer

search_customers

Search customers with filters

Tool

Description

create_invoice

Create a new invoice

get_invoice

Get invoice by ID

update_invoice

Update invoice details

delete_invoice

Delete/void an invoice

search_invoices

Search invoices with filters

Tool

Description

create_payment

Record a customer payment

get_payment

Get payment by ID

update_payment

Update payment details

delete_payment

Void a payment

search_payments

Search payments with filters

Tool

Description

create_bill

Create a new bill

get_bill

Get bill by ID

update_bill

Update bill details

delete_bill

Delete a bill

search_bills

Search bills with filters

create_vendor

Create a new vendor

get_vendor

Get vendor by ID

update_vendor

Update vendor details

delete_vendor

Delete a vendor

search_vendors

Search vendors with filters

create_bill_payment

Create a bill payment

get_bill_payment

Get bill payment by ID

update_bill_payment

Update bill payment

delete_bill_payment

Delete a bill payment

search_bill_payments

Search bill payments

Tool

Description

create_sales_receipt

Create a sales receipt

get_sales_receipt

Get sales receipt by ID

update_sales_receipt

Update sales receipt

delete_sales_receipt

Void a sales receipt

search_sales_receipts

Search sales receipts

create_credit_memo

Create a credit memo

get_credit_memo

Get credit memo by ID

update_credit_memo

Update credit memo

delete_credit_memo

Void a credit memo

search_credit_memos

Search credit memos

create_refund_receipt

Create a refund receipt

get_refund_receipt

Get refund receipt by ID

update_refund_receipt

Update refund receipt

delete_refund_receipt

Void a refund receipt

search_refund_receipts

Search refund receipts

Tool

Description

create_deposit

Create a bank deposit

get_deposit

Get deposit by ID

update_deposit

Update deposit details

delete_deposit

Delete a deposit

search_deposits

Search deposits

create_transfer

Create an account transfer

get_transfer

Get transfer by ID

update_transfer

Update transfer details

delete_transfer

Delete a transfer

search_transfers

Search transfers

Tool

Description

create_purchase_order

Create a purchase order

get_purchase_order

Get purchase order by ID

update_purchase_order

Update purchase order

delete_purchase_order

Delete a purchase order

search_purchase_orders

Search purchase orders

create_vendor_credit

Create a vendor credit

get_vendor_credit

Get vendor credit by ID

update_vendor_credit

Update vendor credit

delete_vendor_credit

Delete a vendor credit

search_vendor_credits

Search vendor credits

Tool

Description

create_time_activity

Create a time activity

get_time_activity

Get time activity by ID

update_time_activity

Update time activity

delete_time_activity

Delete a time activity

search_time_activities

Search time activities

Tool

Description

create_class

Create a class

get_class

Get class by ID

update_class

Update class details

search_classes

Search classes

create_department

Create a department

get_department

Get department by ID

update_department

Update department

search_departments

Search departments

Tool

Description

create_term

Create a payment term

get_term

Get term by ID

update_term

Update term details

search_terms

Search terms

create_payment_method

Create a payment method

get_payment_method

Get payment method by ID

update_payment_method

Update payment method

search_payment_methods

Search payment methods

Tool

Description

get_tax_code

Get tax code by ID

search_tax_codes

Search tax codes

get_tax_rate

Get tax rate by ID

search_tax_rates

Search tax rates

get_tax_agency

Get tax agency by ID

search_tax_agencies

Search tax agencies

Tool

Description

get_company_info

Get company information

update_company_info

Update company info

create_attachable

Create an attachment

get_attachable

Get attachment by ID

update_attachable

Update attachment

delete_attachable

Delete an attachment

search_attachables

Search attachments


Authentication

This server uses OAuth 2.0 to authenticate to a QuickBooks Online company. You'll set up an app on the Intuit Developer Portal and connect it to either a sandbox (for development) or your production QBO company.

Important: Sandbox vs Production

Mode

When to use

Redirect URI accepted

Setup difficulty

Sandbox

Development, testing, demos

http://localhost:8000/callback works

Easy

Production

Real company data

Localhost rejected — must be a public HTTPS URL

Harder (see below)

If you only want to read your own company's data, you still need to set up an app — Intuit does not offer per-user API keys. There is no shortcut around the OAuth + app-creation flow.

  1. Go to the Intuit Developer Portal and create a new app

  2. Open the app → Settings (left sidebar) → Redirect URIs → add: http://localhost:8000/callback

  3. Get your Client ID and Client Secret from the app's Keys & Credentials page (Development keys)

  4. Create or use a sandbox company under the Sandbox top-level menu item in the dev portal

  5. Set QUICKBOOKS_ENVIRONMENT=sandbox in your .env

  6. Run npm run auth to complete the OAuth handshake — your browser will open, you sign in to the sandbox company, tokens are saved to .env

Production Setup

The Intuit Developer Portal rejects http://localhost redirect URIs in production mode — every contributor hits this. Two known workarounds:

  1. ngrok tunnel (most common): run ngrok http 8000, then on your Intuit app go to Settings → Redirect URIs and add the generated https://<id>.ngrok-free.app/callback URL. Use that URL for the OAuth handshake, then revert to localhost afterwards.

  2. Deploy a small public callback handler (e.g., on a VPS or serverless function) that captures the auth code and hands it back to your local setup. More involved; only needed if you can't use ngrok.

After completing the production OAuth handshake, the refresh token is what matters — once it's in .env, you no longer need the public redirect URL for day-to-day use. Refresh tokens auto-rotate; the server persists the new token on each refresh.

Once you have tokens

QUICKBOOKS_CLIENT_ID=your_client_id
QUICKBOOKS_CLIENT_SECRET=your_client_secret
QUICKBOOKS_REFRESH_TOKEN=your_refresh_token
QUICKBOOKS_REALM_ID=your_realm_id
QUICKBOOKS_ENVIRONMENT=sandbox  # or 'production'

Common pitfalls

  • .env loaded from the wrong directory. The server resolves .env relative to the compiled module, not your shell's CWD. If you launch via Claude Desktop, this matters — make sure you're on current main.

  • Redirect URI mismatch. The URI you register in the Intuit portal must match exactly — protocol, host, port, path. http://localhost:8000/callback .


Development

Building

npm run build

Testing

npm test

The test suite includes 396 tests with 100% code coverage across all metrics (statements, branches, functions, lines).

Project Structure

src/
├── clients/          # QuickBooks API client
├── handlers/         # Business logic handlers (87 files)
├── tools/           # MCP tool definitions
├── helpers/         # Utility functions
├── types/           # TypeScript types
└── index.ts         # Server entry point

tests/
├── unit/            # Unit tests (396 tests)
│   ├── handlers/    # Handler tests (15 test files)
│   └── helpers/     # Helper tests
└── mocks/           # Test mocks

docs/
├── ARCHITECTURE.md  # System architecture & design patterns
├── TESTING.md       # Testing guide & patterns
└── plans/           # Development plans

Documentation

Document

Description

CHANGELOG.md

Version history and all changes

docs/ARCHITECTURE.md

System architecture, patterns, and design decisions

docs/TESTING.md

Testing strategy, ESM patterns, and coverage guide


Error Handling

If you encounter connection errors:

  1. Verify all environment variables are set correctly

  2. Check that tokens are valid and not expired

  3. Ensure the QuickBooks app has the correct redirect URIs

  4. For sandbox testing, use QUICKBOOKS_ENVIRONMENT=sandbox


Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Tool naming convention

All tool names must follow the {verb}_{entity} convention using underscores. The verb prefix determines CRUD Restriction Mode behaviour:

Prefix

Category

Suppressed by

create_

WRITE

QUICKBOOKS_DISABLE_WRITE=true

update_

UPDATE

QUICKBOOKS_DISABLE_UPDATE=true

delete_

DELETE

QUICKBOOKS_DISABLE_DELETE=true

get_, search_, read_

READ

never

New tools that do not follow this convention will not be correctly categorised and may appear or be suppressed unexpectedly.


License

MIT License - see LICENSE for details.


Acknowledgments

Available Tools

140 tools
create_accountB

Create a chart‑of‑accounts entry in QuickBooks Online.

Inputs: params (required), company.

create_attachableA

Create an attachable (file attachment) in QuickBooks Online. Without base64_content, creates a metadata-only attachment record. With base64_content, uploads the actual file bytes to QBO's /upload endpoint.

Inputs: params (required), company.

create-billC

Create a bill in QuickBooks Online.

Inputs: params (required), company.

create_bill_paymentC

Create a bill payment in QuickBooks Online.

Inputs: params (required), company.

create_classC

Create a new class in QuickBooks Online for categorizing transactions.

Inputs: params (required), company.

create_credit_memoC

Create a credit memo (customer credit) in QuickBooks Online.

Inputs: params (required), company.

create_customerC

Create a customer in QuickBooks Online.

Inputs: params (required), company.

create_departmentB

Create a new department in QuickBooks Online for location/department tracking.

Inputs: params (required), company.

create_depositC

Create a bank deposit in QuickBooks Online.

Inputs: params (required), company.

create_employeeC

Create an employee in QuickBooks Online.

Inputs: params (required), company.

create_estimateC

Create an estimate in QuickBooks Online.

Inputs: params (required), company.

create_invoiceC

Create an invoice in QuickBooks Online.

Inputs: params (required), company.

create_itemC

Create an item in QuickBooks Online.

Inputs: params (required), company.

create_journal_entryC

Create a journal entry in QuickBooks Online.

Inputs: params (required), company.

create_paymentB

Create a payment (receive money from customer) in QuickBooks Online.

Inputs: params (required), company.

create_payment_methodB

Create a new payment method in QuickBooks Online (e.g., Cash, Check, Credit Card).

Inputs: params (required), company.

create_purchaseC

Create a purchase in QuickBooks Online.

Inputs: params (required), company.

create_purchase_orderC

Create a purchase order in QuickBooks Online.

Inputs: params (required), company.

create_refund_receiptB

Create a refund receipt (customer refund) in QuickBooks Online.

Inputs: params (required), company.

create_sales_receiptC

Create a sales receipt (immediate payment sale) in QuickBooks Online.

Inputs: params (required), company.

create_termA

Create a new payment term in QuickBooks Online (e.g., Net 30, Due on Receipt).

Inputs: params (required), company.

create_time_activityC

Create a time activity (time tracking entry) in QuickBooks Online.

Inputs: params (required), company.

create_transferB

Create a bank transfer between accounts in QuickBooks Online.

Inputs: params (required), company.

create-vendorC

Create a vendor in QuickBooks Online.

Inputs: params (required), company.

create_vendor_creditB

Create a vendor credit in QuickBooks Online.

Inputs: params (required), company.

delete_attachableB

Delete an attachable from QuickBooks Online.

Inputs: params (required), company.

delete-billC

Delete a bill in QuickBooks Online.

Inputs: params (required), company.

delete_bill_paymentC

Delete (make inactive) a bill payment in QuickBooks Online.

Inputs: params (required), company.

delete_credit_memoC

Delete (void) a credit memo in QuickBooks Online.

Inputs: params (required), company.

delete_customerB

Delete (make inactive) a customer in QuickBooks Online.

Inputs: params (required), company.

delete_depositC

Delete a deposit in QuickBooks Online.

Inputs: params (required), company.

delete_employeeB

Delete (make inactive) an employee in QuickBooks Online.

Inputs: params (required), company.

delete_estimateC

Delete (void) an estimate in QuickBooks Online.

Inputs: params (required), company.

delete_invoiceB

Delete (void) an invoice in QuickBooks Online.

Inputs: params (required), company.

delete_itemC

Delete (make inactive) an item in QuickBooks Online.

Inputs: params (required), company.

delete_journal_entryA

Delete (make inactive) a journal entry in QuickBooks Online.

Inputs: params (required), company.

delete_paymentC

Delete (void) a payment in QuickBooks Online.

Inputs: params (required), company.

delete_purchaseB

Delete (make inactive) a purchase in QuickBooks Online.

Inputs: params (required), company.

delete_purchase_orderC

Delete a purchase order in QuickBooks Online.

Inputs: params (required), company.

delete_refund_receiptC

Delete (void) a refund receipt in QuickBooks Online.

Inputs: params (required), company.

delete_sales_receiptC

Delete (void) a sales receipt in QuickBooks Online.

Inputs: params (required), company.

delete_time_activityC

Delete a time activity in QuickBooks Online.

Inputs: params (required), company.

delete_transferC

Delete a transfer in QuickBooks Online.

Inputs: params (required), company.

delete-vendorB

Delete (make inactive) a vendor in QuickBooks Online. QuickBooks does not hard-delete vendors; this marks the vendor Active: false.

Inputs: params (required), company.

delete_vendor_creditC

Delete a vendor credit in QuickBooks Online.

Inputs: params (required), company.

get_accountB

Get a single account by ID from QuickBooks Online.

Inputs: params (required), company.

get_aged_payablesB

Generate an Aged Payables (A/P Aging) report from QuickBooks Online showing outstanding vendor bills.

Inputs: params (required), company.

get_aged_receivablesA

Generate an Aged Receivables (A/R Aging) report from QuickBooks Online showing outstanding customer invoices.

Inputs: params (required), company.

get_attachableB

Retrieve a specific attachable from QuickBooks Online by ID.

Inputs: params (required), company.

get_balance_sheetB

Generate a Balance Sheet report from QuickBooks Online showing assets, liabilities, and equity.

Inputs: params (required), company.

get-billB

Get a bill by ID from QuickBooks Online.

Inputs: params (required), company.

get_bill_paymentB

Get a bill payment by Id from QuickBooks Online.

Inputs: params (required), company.

get_cash_flowC

Generate a Statement of Cash Flows report from QuickBooks Online.

Inputs: params (required), company.

get_classC

Retrieve a specific class from QuickBooks Online by ID.

Inputs: params (required), company.

get_company_infoC

Retrieve the company information from QuickBooks Online.

Inputs: params (required), company.

get_credit_memoC

Get a single credit memo by ID from QuickBooks Online.

Inputs: params (required), company.

get_customerB

Get a customer by Id from QuickBooks Online.

Inputs: params (required), company.

get_customer_balanceB

Generate a Customer Balance report from QuickBooks Online showing outstanding balances by customer.

Inputs: params (required), company.

get_customer_salesC

Generate a Customer Sales report from QuickBooks Online showing sales by customer.

Inputs: params (required), company.

get_departmentB

Retrieve a specific department from QuickBooks Online by ID.

Inputs: params (required), company.

get_depositB

Get a deposit by ID from QuickBooks Online.

Inputs: params (required), company.

get_employeeC

Get an employee by Id from QuickBooks Online.

Inputs: params (required), company.

get_estimateC

Get an estimate by Id from QuickBooks Online.

Inputs: params (required), company.

get_general_ledgerC

Generate a General Ledger report from QuickBooks Online showing detailed transaction history.

Inputs: params (required), company.

get_journal_entryB

Get a journal entry by Id from QuickBooks Online.

Inputs: params (required), company.

get_paymentA

Get a single payment by ID from QuickBooks Online.

Inputs: params (required), company.

get_payment_methodB

Retrieve a specific payment method from QuickBooks Online by ID.

Inputs: params (required), company.

get_profit_and_lossC

Generate a Profit and Loss (Income Statement) report from QuickBooks Online.

Inputs: params (required), company.

get_purchaseC

Get a purchase by Id from QuickBooks Online.

Inputs: params (required), company.

get_purchase_orderB

Get a single purchase order by ID from QuickBooks Online.

Inputs: params (required), company.

get_refund_receiptB

Get a single refund receipt by ID from QuickBooks Online.

Inputs: params (required), company.

get_sales_receiptB

Get a single sales receipt by ID from QuickBooks Online.

Inputs: params (required), company.

get_tax_agencyC

Retrieve a specific tax agency from QuickBooks Online by ID.

Inputs: params (required), company.

get_tax_codeC

Retrieve a specific tax code from QuickBooks Online by ID.

Inputs: params (required), company.

get_tax_rateB

Retrieve a specific tax rate from QuickBooks Online by ID.

Inputs: params (required), company.

get_termA

Retrieve a specific payment term from QuickBooks Online by ID.

Inputs: params (required), company.

get_time_activityB

Get a time activity by ID from QuickBooks Online.

Inputs: params (required), company.

get_transferB

Get a transfer by ID from QuickBooks Online.

Inputs: params (required), company.

get_trial_balanceC

Generate a Trial Balance report from QuickBooks Online showing all account balances.

Inputs: params (required), company.

get-vendorA

Get a vendor by ID from QuickBooks Online.

Inputs: params (required), company.

get_vendor_balanceB

Generate a Vendor Balance report from QuickBooks Online showing outstanding balances by vendor.

Inputs: params (required), company.

get_vendor_creditC

Get a vendor credit by ID from QuickBooks Online.

Inputs: params (required), company.

get_vendor_expensesA

Generate a Vendor Expenses report from QuickBooks Online showing expenses by vendor.

Inputs: params (required), company.

read_invoiceC

Read a single invoice from QuickBooks Online by its ID.

Inputs: params (required), company.

read_itemA

Read a single item in QuickBooks Online by its ID.

Inputs: params (required), company.

search_accountsC

Search chart‑of‑accounts entries using criteria.

Inputs: params (required), company.

search_attachablesC

Search for attachables in QuickBooks Online with optional filters.

Inputs: params (required), company.

search_bill_paymentsC

Search bill payments in QuickBooks Online that match given criteria.

Inputs: params (required), company.

search_billsC

Search bills in QuickBooks Online that match given criteria.

Inputs: params (required), company.

search_budgetsB

Search for budgets in QuickBooks Online. Returns Budget records with nested BudgetDetail line items (Amount, BudgetDate, AccountRef, ClassRef, CustomerRef, DepartmentRef, LocationRef). Budget is read-only in the QBO v3 API.

Inputs: params (required), company.

search_classesC

Search for classes in QuickBooks Online with optional filters.

Inputs: params (required), company.

search_credit_memosC

Search for credit memos in QuickBooks Online.

Inputs: params (required), company.

search_customersC

Search customers in QuickBooks Online that match given criteria.

Inputs: params (required), company.

search_departmentsC

Search for departments in QuickBooks Online with optional filters.

Inputs: params (required), company.

search_depositsC

Search for deposits in QuickBooks Online.

Inputs: params (required), company.

search_employeesC

Search employees in QuickBooks Online that match given criteria.

Inputs: params (required), company.

search_estimatesC

Search estimates in QuickBooks Online that match given criteria.

Inputs: params (required), company.

search_invoicesC

Search invoices in QuickBooks Online using criteria (maps to node-quickbooks findInvoices).

Inputs: params (required), company.

search_itemsC

Search items in QuickBooks Online using criteria (maps to node-quickbooks findItems).

Inputs: params (required), company.

search_journal_entriesC

Search journal entries in QuickBooks Online that match given criteria.

Inputs: params (required), company.

search_payment_methodsB

Search for payment methods in QuickBooks Online with optional filters.

Inputs: params (required), company.

search_paymentsC

Search for payments in QuickBooks Online.

Inputs: params (required), company.

search_purchase_ordersC

Search for purchase orders in QuickBooks Online.

Inputs: params (required), company.

search_purchasesC

Search purchases in QuickBooks Online that match given criteria.

Inputs: params (required), company.

search_refund_receiptsB

Search for refund receipts in QuickBooks Online.

Inputs: params (required), company.

search_sales_receiptsB

Search for sales receipts in QuickBooks Online.

Inputs: params (required), company.

search_tax_agenciesB

Search for tax agencies in QuickBooks Online with optional filters.

Inputs: params (required), company.

search_tax_codesC

Search for tax codes in QuickBooks Online with optional filters.

Inputs: params (required), company.

search_tax_ratesB

Search for tax rates in QuickBooks Online with optional filters.

Inputs: params (required), company.

search_termsC

Search for payment terms in QuickBooks Online with optional filters.

Inputs: params (required), company.

search_time_activitiesC

Search for time activities in QuickBooks Online.

Inputs: params (required), company.

search_transfersC

Search for transfers in QuickBooks Online.

Inputs: params (required), company.

search_vendor_creditsC

Search for vendor credits in QuickBooks Online.

Inputs: params (required), company.

search_vendorsC

Search vendors in QuickBooks Online that match given criteria.

Inputs: params (required), company.

update_accountC

Update an existing chart‑of‑accounts entry in Quickbooks.

Inputs: params (required), company.

update_attachableC

Update an existing attachable in QuickBooks Online.

Inputs: params (required), company.

update-billC

Update a bill in QuickBooks Online.

Inputs: params (required), company.

update_bill_paymentC

Update a bill payment in QuickBooks Online.

Inputs: params (required), company.

update_classB

Update an existing class in QuickBooks Online.

Inputs: params (required), company.

update_company_infoC

Update the company information in QuickBooks Online.

Inputs: params (required), company.

update_credit_memoB

Update an existing credit memo in QuickBooks Online.

Inputs: params (required), company.

update_customerC

Update an existing customer in QuickBooks Online.

Inputs: params (required), company.

update_departmentB

Update an existing department in QuickBooks Online.

Inputs: params (required), company.

update_depositC

Update a deposit in QuickBooks Online.

Inputs: params (required), company.

update_employeeC

Update an employee in QuickBooks Online.

Inputs: params (required), company.

update_estimateC

Update an estimate in QuickBooks Online.

Inputs: params (required), company.

update_invoiceB

Update an existing invoice in Quickbooks by ID (sparse update).

Inputs: params (required), company.

update_itemB

Update an existing item in Quickbooks by ID (sparse update).

Inputs: params (required), company.

update_journal_entryC

Update a journal entry in QuickBooks Online.

Inputs: params (required), company.

update_paymentB

Update an existing payment in QuickBooks Online.

Inputs: params (required), company.

update_payment_methodC

Update an existing payment method in QuickBooks Online.

Inputs: params (required), company.

update_purchaseC

Update a purchase in QuickBooks Online.

Inputs: params (required), company.

update_purchase_orderC

Update an existing purchase order in QuickBooks Online.

Inputs: params (required), company.

update_refund_receiptC

Update an existing refund receipt in QuickBooks Online.

Inputs: params (required), company.

update_sales_receiptB

Update an existing sales receipt in QuickBooks Online.

Inputs: params (required), company.

update_termB

Update an existing payment term in QuickBooks Online.

Inputs: params (required), company.

update_time_activityC

Update a time activity in QuickBooks Online.

Inputs: params (required), company.

update_transferC

Update a transfer in QuickBooks Online.

Inputs: params (required), company.

update-vendorC

Update a vendor in QuickBooks Online.

Inputs: params (required), company.

update_vendor_creditC

Update a vendor credit in QuickBooks Online.

Inputs: params (required), company.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    C2.9/5.0

    Scored across 140 tools

    Disambiguation5/5

    Each tool targets a distinct entity and action, with clear verb-entity patterns. There is no overlap between tools as they follow a consistent structure per entity (create, get, search, update, delete), making it easy for an agent to select the correct tool.

    Naming Consistency3/5

    The naming uses a mix of underscore and hyphen delimiters (e.g., create_account vs create-bill) and some verbs are inconsistent (e.g., get_account vs read_invoice). While still readable, the lack of a uniform pattern may cause confusion for an agent.

    Tool Count2/5

    With 140 tools, the server has an excessive number for typical MCP usage. Although the breadth of QuickBooks Online justifies many operations, the sheer volume makes the tool surface overwhelming and difficult for an agent to navigate efficiently.

    Completeness4/5

    The tool set covers nearly all main entities (accounts, customers, vendors, invoices, etc.) with full CRUD operations plus financial reports. Minor gaps exist, such as missing delete for a few entity types (e.g., account, class) and some reports not having update capability, but overall it is highly comprehensive.

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      B
      quality
      A
      maintenance
      Enables interaction with the QuickBooks Online Accounting API to manage customers, invoices, expenses, and payments through MCP-compatible clients. It supports comprehensive financial workflows and the generation of reports like Profit and Loss or Balance Sheets.
      138
      2
      Apache 2.0
    • A
      license
      Not graded
      quality
      B
      maintenance
      Enables full CRUD operations on 29 QuickBooks Online entity types and 11 financial reports via natural language, allowing users to manage customers, invoices, payments, and more through MCP-compatible clients.
      Apache 2.0
    • A
      license
      Not graded
      quality
      C
      maintenance
      Comprehensive MCP server for QuickBooks Online providing full CRUD operations on 29 entities (customers, invoices, bills, etc.) and 11 financial reports, enabling accounting data management via natural language.
      Apache 2.0
    • A
      license
      Not graded
      quality
      D
      maintenance
      Provides comprehensive CRUD operations for 29 QuickBooks Online entity types and 11 financial reports, enabling full accounting management through natural language.
      Apache 2.0