Qb Auto
About
QuickBooks Online MCP server for Claude Code — 8 automation tools (invoices, payments, reports) that replace ~50K-token UI snapshots.
Explore
- 15 tools for QuickBooks Online: invoices, payments, reports, and more
- Typical token savings of 91–95% over browser snapshot workflows
- Uses ARIA-stable selectors that survive QBO page reloads
- No intermediate browser snapshots — one tool call completes an operation
- Extractors return compact JSON (~200 tokens) instead of full-page DOM
- Python 3.10+
- mcp and playwright packages
- Chrome running with remote debugging: google-chrome --remote-debugging-port=9222
MCP (Model Context Protocol) server that gives Claude Code native tools for QuickBooks Online automation.
Replaces 50K-token browser_snapshot round-trips with targeted DOM extraction (~200-500 tokens) and compound Playwright actions that complete entire workflows in one tool call.
qb_page_state
Check current page/dialog state (~50 tokens)
qb_list_invoices
List all visible invoices with optional customer filter
qb_invoice_state
Inspect an open invoice form (line items, totals)
qb_receive_payment
Record a payment (navigate → fill → save → confirm)
qb_create_invoice
Create a new invoice with line items
qb_delete_line_item
Delete a line from an existing invoice
qb_edit_payment_amount
Edit an existing payment amount
qb_batch_receive_payments
Record multiple payments in sequence
qb_report
Run any QBO report (30+ report types) with date range options
qb_report_pnl
Profit & Loss (income statement)
qb_report_balance_sheet
Balance Sheet (assets, liabilities, equity)
qb_report_ar_aging
A/R Aging Summary (who owes, how overdue)
qb_report_customer_balance
Customer Balance Summary
qb_report_open_invoices
Open (unpaid) Invoices
qb_report_vendor_balance
Vendor Balance Summary
| Tool | Description |
|------|-------------|
| qb_page_state | Check current page/dialog state (~50 tokens) |
| qb_list_invoices | List all visible invoices with optional customer filter |
| qb_invoice_state | Inspect an open invoice form (line items, totals) |
| qb_receive_payment | Record a payment (navigate → fill → save → confirm) |
| qb_create_invoice | Create a new invoice with line items |
| qb_delete_line_item | Delete a line from an existing invoice |
| qb_edit_payment_amount | Edit an existing payment amount |
| qb_batch_receive_payments | Record multiple payments in sequence |
| qb_report | Run any QBO report (30+ report types) with date range options |
| qb_report_pnl | Profit & Loss (income statement) |
| qb_report_balance_sheet | Balance Sheet (assets, liabilities, equity) |
| qb_report_ar_aging | A/R Aging Summary (who owes, how overdue) |
| qb_report_customer_balance | Customer Balance Summary |
| qb_report_open_invoices | Open (unpaid) Invoices |
| qb_report_vendor_balance | Vendor Balance Summary |
browser_snapshot round-trips with targeted DOM extraction (~200-500 tokens) and compound Playwright actions that complete entire workflows in one tool call.
Tools
| Tool | Description | |------|-------------| |qb_page_state | Check current page/dialog state (~50 tokens) |
| qb_list_invoices | List all visible invoices with optional customer filter |
| qb_invoice_state | Inspect an open invoice form (line items, totals) |
| qb_receive_payment | Record a payment (navigate → fill → save → confirm) |
| qb_create_invoice | Create a new invoice with line items |
| qb_delete_line_item | Delete a line from an existing invoice |
| qb_edit_payment_amount | Edit an existing payment amount |
| qb_batch_receive_payments | Record multiple payments in sequence |
| qb_report | Run any QBO report (30+ report types) with date range options |
| qb_report_pnl | Profit & Loss (income statement) |
| qb_report_balance_sheet | Balance Sheet (assets, liabilities, equity) |
| qb_report_ar_aging | A/R Aging Summary (who owes, how overdue) |
| qb_report_customer_balance | Customer Balance Summary |
| qb_report_open_invoices | Open (unpaid) Invoices |
| qb_report_vendor_balance | Vendor Balance Summary |
Token Savings
| Workflow | Before (snapshots) | After (MCP) | Savings | |----------|--------------------|-------------|---------| | Receive Payment | ~290K tokens | ~13K tokens | 95% | | Create Invoice | ~350K tokens | ~18K tokens | 95% | | Full session (5 ops) | ~500K tokens | ~45K tokens | 91% |Setup
Prerequisites
- Python 3.10+ -mcp and playwright packages
- Chrome running with remote debugging: google-chrome --remote-debugging-port=9222
Install
``bash
pip install mcp playwright
playwright install chromium
`
Register with Claude Code
Add to ~/.mcp.json:
`json
{
"mcpServers": {
"quickbooks": {
"type": "stdio",
"command": "python3",
"args": ["/path/to/qb-auto/server.py"]
}
}
}
`
Configuration
The server connects to Chrome via CDP (Chrome DevTools Protocol) on port 9222 by default. Set the CDP_PORT variable in server.py if using a different port.
Architecture
- Extractors: JavaScript functions injected via page.evaluate() that return compact JSON from QB's DOM using ARIA selectors
- Actions: Complete Playwright workflows using getByRole() and getByLabel() — ARIA-stable selectors that survive QB page reloads
- Playbook: PLAYBOOK.md contains the full reference for manual use with browser_evaluate/browser_run_code
Files
| File | Purpose |
|------|---------|
| server.py | MCP server with 15 tools |
| extractors.js | Standalone JS extractor functions (reference) |
| actions.js | Playwright action templates (reference) |
| PLAYBOOK.md | Quick reference for manual browser automation |
How It Works
1. Claude calls qb_receive_payment(invoice_num="6865", amount="22500", method="ACH")`
2. Server connects to your Chrome browser via CDP
3. Navigates to QB invoices, finds the invoice, opens payment dialog
4. Fills method, amount, saves, handles confirmations
5. Returns compact JSON result (~200 tokens)
No browser snapshots. No 50K token pages. One tool call = one complete operation.
License
MITSign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.



