qbo-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| QBO_REALM_ID | Yes | Numeric identifier for your QBO company | |
| QBO_CLIENT_ID | Yes | Your app's client ID from Intuit Developer | |
| QBO_ENVIRONMENT | Yes | Either "production" or "sandbox" | |
| QBO_CLIENT_SECRET | Yes | Your app's client secret from Intuit Developer | |
| QBO_REFRESH_TOKEN | Yes | OAuth refresh token (lasts 100 days of inactivity) |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| 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 |
|---|---|
| qbo_search_customersA | Search customers by display name (substring, case-insensitive). Args:
query: Free-text fragment matched against Customer.DisplayName
via QBO's Returns: JSON envelope: {"ok": true, "data": {"customers": [...], "count": N}}. |
| qbo_get_customerA | Fetch the full record for a single customer. Args: customer_id: QBO Customer.Id (string-encoded integer per Intuit's API). Returns:
JSON envelope. |
| qbo_search_vendorsA | Search vendors by display name (substring, case-insensitive). Args: query: Free-text fragment matched against Vendor.DisplayName. limit: Cap on returned vendors (1-1000, default 50). Returns: JSON envelope: {"ok": true, "data": {"vendors": [...], "count": N}}. |
| qbo_get_vendorA | Fetch the full record for a single vendor. Args: vendor_id: QBO Vendor.Id. Returns:
JSON envelope. |
| qbo_search_invoicesA | Search invoices created in [date_from, date_to] inclusive. Args: date_from: ISO date (YYYY-MM-DD), start of TxnDate window. date_to: ISO date (YYYY-MM-DD), end of TxnDate window. status: Optional balance filter. "open" returns invoices with a non-zero balance; "paid" returns invoices with Balance == 0. Omit (null) for both. limit: Cap on yielded invoices (1-2000, default 200). Returns:
JSON envelope. |
| qbo_get_invoiceA | Fetch full invoice detail including line items. Args: invoice_id: QBO Invoice.Id. Returns:
JSON envelope. |
| qbo_search_billsA | Search vendor bills with TxnDate in [date_from, date_to] inclusive. Args: date_from: ISO date (YYYY-MM-DD), start of TxnDate window. date_to: ISO date (YYYY-MM-DD), end of TxnDate window. status: Optional balance filter. "open" returns bills with a non-zero balance; "paid" returns bills with Balance == 0. Omit (null) for both. limit: Cap on yielded bills (1-2000, default 200). Returns:
JSON envelope. |
| qbo_get_chart_of_accountsA | Return the full chart of accounts (active only). Returns:
JSON envelope. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 8 tools
Each tool targets a distinct entity or operation: get tools retrieve single records by ID, search tools list with filters, and chart of accounts is a separate list. No overlap in purpose.
All tools follow the consistent pattern `qbo_<verb>_<noun>` where verb is `get_` or `search_`, and nouns are plural for search (customers, vendors, invoices, bills) and singular or collective for get (customer, invoice, vendor, chart_of_accounts).
8 tools cover core QBO entities (accounts, customers, vendors, invoices, bills) without being overwhelming. The count is well-scoped for a focused accounting server.
Only read operations are provided (get and search). Missing critical mutation tools (create, update, delete) for any entity, which severely limits the server's utility for typical accounting workflows.