QuickBooks Online
OCI · GHCR.IO/WYRE-AI/QBO-MCP
MCP server for QuickBooks Online — accounts, customers, invoices, bills, and reports.
Available components
Last scanned (1 hour ago)
Scores higher than 59% of OCI servers
Category Finance and Payments
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security0
- No malware scan is available for this kind of package: the supply-chain vendors we use do not cover it. This is a permanent gap in our coverage, not a finding about the package.Unverified
- Known CVEs could not be checked: this artifact ships no SBOM or dependency manifest, so there is no dependency list to read.Unverified
- Install-script risk not yet assessed.Unverified
- Dependency health could not be checked: this artifact ships no SBOM or dependency manifest, so there is no dependency list to read.Unverified
Provenance & Transparency45
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (Apache-2.0).Pass
- Actively maintained (last published 2 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability84
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 16862 tokens (~121/item across 139 items; 138 tools + 1 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management7
- Stability observed for 2 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety75
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- 0 of 5 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "qbo_invoices_send" implies "send" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
- An AI judge read all 139 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
- Supports UI / widget rendering.Pass
Unverified: 1 category
A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 17 Oct 26 +1
- Stability: unverified → 0.07 ▲ functional
- 15 Oct 26 +32
- Injection markers: unverified → pass ▲ security
- First check of Judged manipulation: pass security
- Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window). security
- Tool coverage: unverified → 100 ▲ functional
- Schema quality: unverified → 100 ▲ functional
- MCP protocol: unverified → pass ▲ functional
- First check of Schema quality: fail functional
- First check of Schema quality: excellent functional
- First check of Schema quality: fail functional
- First check of Capabilities: pass functional
- First check of Destructive annotations: 0 functional
- First check of Tool coverage: 100 functional
- 14 Oct 26 9
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 17 Oct 2026 · Analysed oci/ghcr.io/wyre-ai/qbo-mcp@v1.6.6
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | oci |
| Reason | No attestation published |
Background: How many MCP packages publish verified provenance →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
qbo_estimates_get ~32
Get a specific Estimate record by its ID.
| Name | Type | Req | Description |
|---|---|---|---|
| estimateId | string | yes | The unique Estimate ID |
No output schema declared.
No examples provided.
qbo_estimates_list ~116
List Estimate records in QuickBooks Online with pagination and optional TxnDate range.
| Name | Type | Req | Description |
|---|---|---|---|
| endDate | string | – | Filter to records on or before this TxnDate (YYYY-MM-DD) |
| maxResults | number | – | Maximum number of results to return (default: 100, max: 1000) |
| startDate | string | – | Filter to records on or after this TxnDate (YYYY-MM-DD) |
| startPosition | number | – | Starting position for pagination (1-based, default: 1) |
No output schema declared.
No examples provided.
qbo_estimates_update ~269
Sparse-update an existing Estimate record. Only provided fields are changed; Id and SyncToken are required.
| Name | Type | Req | Description |
|---|---|---|---|
| AcceptedBy | string | – | Name of the customer contact who accepted |
| AcceptedDate | string | – | Acceptance date |
| BillEmail | object | – | Email address, e.g. {"Address": "customer@example.com"} |
| CustomerMemo | object | – | Memo visible to customer, e.g. {"value": "Thank you"} |
| CustomerRef | object | yes | Customer being quoted, e.g. {"value": "123"} |
| DocNumber | string | – | Estimate number |
| ExpirationDate | string | – | Expiration date |
| Line | array | yes | Quote lines: {Amount, DetailType: "SalesItemLineDetail", SalesItemLineDetail: {ItemRef, Qty, UnitPrice}}. |
| PrivateNote | string | – | Private internal note |
| SyncToken | string | yes | Current SyncToken of the record (required by QBO for sparse updates; fetch the record first to obtain it) |
| TxnDate | string | – | Estimate date (YYYY-MM-DD) |
| TxnStatus | string | – | Status: "Pending", "Accepted", "Rejected", or "Closed" |
| estimateId | string | yes | The Estimate ID to update |
No output schema declared.
No examples provided.
qbo_expenses_get_bill ~46
Get detailed information about a specific bill by its ID. Returns full bill details including line items and vendor info.
| Name | Type | Req | Description |
|---|---|---|---|
| billId | string | yes | The unique bill ID |
No output schema declared.
No examples provided.
qbo_expenses_get_purchase ~46
Get detailed information about a specific purchase by its ID. Returns full purchase details including line items and vendor info.
| Name | Type | Req | Description |
|---|---|---|---|
| purchaseId | string | yes | The unique purchase ID |
No output schema declared.
No examples provided.
qbo_expenses_list_bills ~111
List bills (accounts payable) in QuickBooks Online with pagination.
| Name | Type | Req | Description |
|---|---|---|---|
| endDate | string | – | Filter bills on or before this date (YYYY-MM-DD format) |
| maxResults | number | – | Maximum number of results to return (default: 100, max: 1000) |
| startDate | string | – | Filter bills on or after this date (YYYY-MM-DD format) |
| startPosition | number | – | Starting position for pagination (1-based, default: 1) |
No output schema declared.
No examples provided.
qbo_expenses_list_purchases ~116
List purchases (expenses/checks/credit card charges) in QuickBooks Online with pagination.
| Name | Type | Req | Description |
|---|---|---|---|
| endDate | string | – | Filter purchases on or before this date (YYYY-MM-DD format) |
| maxResults | number | – | Maximum number of results to return (default: 100, max: 1000) |
| startDate | string | – | Filter purchases on or after this date (YYYY-MM-DD format) |
| startPosition | number | – | Starting position for pagination (1-based, default: 1) |
No output schema declared.
No examples provided.
qbo_invoices_create ~188
Create a new Invoice record in QuickBooks Online.
| Name | Type | Req | Description |
|---|---|---|---|
| BillEmail | object | – | Email address to send the invoice to, e.g. {"Address": "customer@example.com"} |
| CustomerMemo | object | – | Memo visible to customer, e.g. {"value": "Thank you for your business"} |
| CustomerRef | object | yes | Customer reference object, e.g. {"value": "123"} where value is the customer ID |
| DueDate | string | – | Due date (YYYY-MM-DD) |
| Line | array | yes | Array of line items. Each line should have Amount, DetailType ("SalesItemLineDetail"), and SalesItemLineDetail with ItemRef. On update, providing Line replaces the invoice line items. |
| PrivateNote | string | – | Private note (not visible to customer) |
| TxnDate | string | – | Transaction date (YYYY-MM-DD) |
No output schema declared.
No examples provided.
qbo_invoices_get ~32
Get a specific Invoice record by its ID.
| Name | Type | Req | Description |
|---|---|---|---|
| invoiceId | string | yes | The unique Invoice ID |
No output schema declared.
No examples provided.
qbo_invoices_list ~125
List invoices in QuickBooks Online with pagination and optional filters for status and date range.
| Name | Type | Req | Description |
|---|---|---|---|
| endDate | string | – | Filter invoices on or before this date (YYYY-MM-DD format) |
| maxResults | number | – | Maximum number of results to return (default: 100, max: 1000) |
| startDate | string | – | Filter invoices on or after this date (YYYY-MM-DD format) |
| startPosition | number | – | Starting position for pagination (1-based, default: 1) |
| status | string | – | Filter invoices by balance status |
No output schema declared.
No examples provided.
qbo_invoices_send ~64
Send an invoice by email. The invoice must already exist in QuickBooks Online.
| Name | Type | Req | Description |
|---|---|---|---|
| string | – | Override email address to send to (optional, uses invoice BillEmail if not specified) | |
| invoiceId | string | yes | The unique invoice ID to send |
No output schema declared.
No examples provided.
qbo_invoices_update ~241
Sparse-update an existing Invoice record. Only provided fields are changed; Id and SyncToken are required.
| Name | Type | Req | Description |
|---|---|---|---|
| BillEmail | object | – | Email address to send the invoice to, e.g. {"Address": "customer@example.com"} |
| CustomerMemo | object | – | Memo visible to customer, e.g. {"value": "Thank you for your business"} |
| CustomerRef | object | – | Customer reference object, e.g. {"value": "123"} where value is the customer ID |
| DueDate | string | – | Due date (YYYY-MM-DD) |
| Line | array | – | Array of line items. Each line should have Amount, DetailType ("SalesItemLineDetail"), and SalesItemLineDetail with ItemRef. On update, providing Line replaces the invoice line items. |
| PrivateNote | string | – | Private note (not visible to customer) |
| SyncToken | string | yes | Current SyncToken of the record (required by QBO for sparse updates; fetch the record first to obtain it) |
| TxnDate | string | – | Transaction date (YYYY-MM-DD) |
| invoiceId | string | yes | The Invoice ID to update |
No output schema declared.
No examples provided.
qbo_invoices_void ~97
Void an existing Invoice record. The transaction stays in QuickBooks with amounts set to zero. Id and SyncToken are required (fetch the record first). QuickBooks will not void an invoice that still has a payment applied.
| Name | Type | Req | Description |
|---|---|---|---|
| SyncToken | string | yes | Current SyncToken of the record (required by QBO to void; fetch the record first to obtain it) |
| invoiceId | string | yes | The Invoice ID to void |
No output schema declared.
No examples provided.
qbo_items_create ~245
Create a new Item record in QuickBooks Online.
| Name | Type | Req | Description |
|---|---|---|---|
| AssetAccountRef | object | – | Asset account reference, required for Inventory items, e.g. {"value": "81"} |
| Description | string | – | Sales description |
| ExpenseAccountRef | object | – | Expense or COGS account reference, e.g. {"value": "80"} (required for Inventory and NonInventory items) |
| IncomeAccountRef | object | – | Income account reference, e.g. {"value": "79"} (required for Inventory and Service items) |
| InvStartDate | string | – | Inventory start date (YYYY-MM-DD, Inventory items only) |
| Name | string | yes | Item name (required, must be unique) |
| PurchaseCost | number | – | Default purchase cost |
| PurchaseDesc | string | – | Purchase-side description |
| QtyOnHand | number | – | Initial on-hand quantity (Inventory items only) |
| Taxable | boolean | – | Whether the item is taxable on sales |
| Type | string | – | Item type: Inventory, NonInventory, or Service. Required on create unless QBO infers it. |
| UnitPrice | number | – | Default sales price |
No output schema declared.
No examples provided.
qbo_items_get ~31
Get a specific Item record by its ID.
| Name | Type | Req | Description |
|---|---|---|---|
| itemId | string | yes | The unique Item ID |
No output schema declared.
No examples provided.
qbo_items_list ~65
List Item records in QuickBooks Online with pagination.
| Name | Type | Req | Description |
|---|---|---|---|
| maxResults | number | – | Maximum number of results to return (default: 100, max: 1000) |
| startPosition | number | – | Starting position for pagination (1-based, default: 1) |
No output schema declared.
No examples provided.
qbo_items_search ~96
Search Item records by Name (LIKE match).
| Name | Type | Req | Description |
|---|---|---|---|
| maxResults | number | – | Maximum number of results to return (default: 100, max: 1000) |
| startPosition | number | – | Starting position for pagination (1-based, default: 1) |
| term | string | yes | Search term matched against Name with LIKE '%term%'. '%' is a wildcard; QBO does not support an ESCAPE clause. |
No output schema declared.
No examples provided.
qbo_items_update ~298
Sparse-update an existing Item record. Only provided fields are changed; Id and SyncToken are required.
| Name | Type | Req | Description |
|---|---|---|---|
| AssetAccountRef | object | – | Asset account reference, required for Inventory items, e.g. {"value": "81"} |
| Description | string | – | Sales description |
| ExpenseAccountRef | object | – | Expense or COGS account reference, e.g. {"value": "80"} (required for Inventory and NonInventory items) |
| IncomeAccountRef | object | – | Income account reference, e.g. {"value": "79"} (required for Inventory and Service items) |
| InvStartDate | string | – | Inventory start date (YYYY-MM-DD, Inventory items only) |
| Name | string | yes | Item name (required, must be unique) |
| PurchaseCost | number | – | Default purchase cost |
| PurchaseDesc | string | – | Purchase-side description |
| QtyOnHand | number | – | Initial on-hand quantity (Inventory items only) |
| SyncToken | string | yes | Current SyncToken of the record (required by QBO for sparse updates; fetch the record first to obtain it) |
| Taxable | boolean | – | Whether the item is taxable on sales |
| Type | string | – | Item type: Inventory, NonInventory, or Service. Required on create unless QBO infers it. |
| UnitPrice | number | – | Default sales price |
| itemId | string | yes | The Item ID to update |
No output schema declared.
No examples provided.
qbo_journal_entries_create ~159
Create a new JournalEntry record in QuickBooks Online.
| Name | Type | Req | Description |
|---|---|---|---|
| Adjustment | boolean | – | Whether this is an adjusting journal entry |
| DocNumber | string | – | Reference number for the journal entry |
| Line | array | yes | Array of journal entry lines. Each line: {Amount, DetailType: "JournalEntryLineDetail", JournalEntryLineDetail: {PostingType: "Debit"|"Credit", AccountRef: {value: "id"}, Entity?: {EntityRef: {value,… |
| PrivateNote | string | – | Private memo (not visible on reports) |
| TxnDate | string | – | Transaction date (YYYY-MM-DD); defaults to today if omitted |
No output schema declared.
No examples provided.
qbo_journal_entries_get ~36
Get a specific JournalEntry record by its ID.
| Name | Type | Req | Description |
|---|---|---|---|
| journalEntryId | string | yes | The unique JournalEntry ID |
No output schema declared.
No examples provided.
qbo_journal_entries_list ~118
List JournalEntry records in QuickBooks Online with pagination and optional TxnDate range.
| Name | Type | Req | Description |
|---|---|---|---|
| endDate | string | – | Filter to records on or before this TxnDate (YYYY-MM-DD) |
| maxResults | number | – | Maximum number of results to return (default: 100, max: 1000) |
| startDate | string | – | Filter to records on or after this TxnDate (YYYY-MM-DD) |
| startPosition | number | – | Starting position for pagination (1-based, default: 1) |
No output schema declared.
No examples provided.
qbo_journal_entries_update ~214
Sparse-update an existing JournalEntry record. Only provided fields are changed; Id and SyncToken are required.
| Name | Type | Req | Description |
|---|---|---|---|
| Adjustment | boolean | – | Whether this is an adjusting journal entry |
| DocNumber | string | – | Reference number for the journal entry |
| Line | array | yes | Array of journal entry lines. Each line: {Amount, DetailType: "JournalEntryLineDetail", JournalEntryLineDetail: {PostingType: "Debit"|"Credit", AccountRef: {value: "id"}, Entity?: {EntityRef: {value,… |
| PrivateNote | string | – | Private memo (not visible on reports) |
| SyncToken | string | yes | Current SyncToken of the record (required by QBO for sparse updates; fetch the record first to obtain it) |
| TxnDate | string | – | Transaction date (YYYY-MM-DD); defaults to today if omitted |
| journalEntryId | string | yes | The JournalEntry ID to update |
No output schema declared.
No examples provided.
qbo_navigate ~656
Discover available QuickBooks Online tools by domain. Returns tool names and descriptions for the selected domain. All tools are callable at any time — this is a help/discovery aid, not a prerequisite.
| Name | Type | Req | Description |
|---|---|---|---|
| domain | string | yes | The domain to explore: - customers: Customer management - list, get, create, update, and search customers. QBO has no customer void or delete; set Active to false to deactivate. - invoices: Invoice m… |
No output schema declared.
No examples provided.
qbo_payment_methods_create ~79
Create a new PaymentMethod record in QuickBooks Online.
| Name | Type | Req | Description |
|---|---|---|---|
| Active | boolean | – | Whether the method is active |
| Name | string | yes | Payment method name, e.g. "Visa" or "Check" |
| Type | string | – | Card type for credit-card methods: "CREDIT_CARD" or "NON_CREDIT_CARD" |
No output schema declared.
No examples provided.
qbo_payment_methods_get ~35
Get a specific PaymentMethod record by its ID.
| Name | Type | Req | Description |
|---|---|---|---|
| paymentMethodId | string | yes | The unique PaymentMethod ID |
No output schema declared.
No examples provided.
qbo_payment_methods_list ~67
List PaymentMethod records in QuickBooks Online with pagination.
| Name | Type | Req | Description |
|---|---|---|---|
| maxResults | number | – | Maximum number of results to return (default: 100, max: 1000) |
| startPosition | number | – | Starting position for pagination (1-based, default: 1) |
No output schema declared.
No examples provided.
qbo_payment_methods_search ~98
Search PaymentMethod records by Name (LIKE match).
| Name | Type | Req | Description |
|---|---|---|---|
| maxResults | number | – | Maximum number of results to return (default: 100, max: 1000) |
| startPosition | number | – | Starting position for pagination (1-based, default: 1) |
| term | string | yes | Search term matched against Name with LIKE '%term%'. '%' is a wildcard; QBO does not support an ESCAPE clause. |
No output schema declared.
No examples provided.
qbo_payment_methods_update ~134
Sparse-update an existing PaymentMethod record. Only provided fields are changed; Id and SyncToken are required.
| Name | Type | Req | Description |
|---|---|---|---|
| Active | boolean | – | Whether the method is active |
| Name | string | yes | Payment method name, e.g. "Visa" or "Check" |
| SyncToken | string | yes | Current SyncToken of the record (required by QBO for sparse updates; fetch the record first to obtain it) |
| Type | string | – | Card type for credit-card methods: "CREDIT_CARD" or "NON_CREDIT_CARD" |
| paymentMethodId | string | yes | The PaymentMethod ID to update |
No output schema declared.
No examples provided.
qbo_payments_create ~238
Create a new Payment record in QuickBooks Online.
| Name | Type | Req | Description |
|---|---|---|---|
| CustomerRef | object | yes | Customer reference object, e.g. {"value": "123"} where value is the customer ID |
| DepositToAccountRef | object | – | Bank or asset account to deposit this payment into, e.g. {"value": "35"}. Omit on create to use Undeposited Funds. Omit on update to leave the existing deposit account unchanged. |
| Line | array | – | Linked transactions applying this payment, e.g. [{Amount: 100, LinkedTxn: [{TxnId: '5', TxnType: 'Invoice'}]}]. On update, Line replaces existing applications. QuickBooks keeps one line per invoice:… |
| PaymentMethodRef | object | – | Payment method reference object, e.g. {"value": "1"} |
| TotalAmt | number | yes | Total payment amount |
| TxnDate | string | – | Transaction date (YYYY-MM-DD format) |
No output schema declared.
No examples provided.
qbo_payments_get ~32
Get a specific Payment record by its ID.
| Name | Type | Req | Description |
|---|---|---|---|
| paymentId | string | yes | The unique Payment ID |
No output schema declared.
No examples provided.
qbo_payments_list ~116
List Payment records in QuickBooks Online with pagination and optional TxnDate range.
| Name | Type | Req | Description |
|---|---|---|---|
| endDate | string | – | Filter to records on or before this TxnDate (YYYY-MM-DD) |
| maxResults | number | – | Maximum number of results to return (default: 100, max: 1000) |
| startDate | string | – | Filter to records on or after this TxnDate (YYYY-MM-DD) |
| startPosition | number | – | Starting position for pagination (1-based, default: 1) |
No output schema declared.
No examples provided.
qbo_payments_update ~291
Sparse-update an existing Payment record. Only provided fields are changed; Id and SyncToken are required.
| Name | Type | Req | Description |
|---|---|---|---|
| CustomerRef | object | – | Customer reference object, e.g. {"value": "123"} where value is the customer ID |
| DepositToAccountRef | object | – | Bank or asset account to deposit this payment into, e.g. {"value": "35"}. Omit on create to use Undeposited Funds. Omit on update to leave the existing deposit account unchanged. |
| Line | array | – | Linked transactions applying this payment, e.g. [{Amount: 100, LinkedTxn: [{TxnId: '5', TxnType: 'Invoice'}]}]. On update, Line replaces existing applications. QuickBooks keeps one line per invoice:… |
| PaymentMethodRef | object | – | Payment method reference object, e.g. {"value": "1"} |
| SyncToken | string | yes | Current SyncToken of the record (required by QBO for sparse updates; fetch the record first to obtain it) |
| TotalAmt | number | – | Total payment amount |
| TxnDate | string | – | Transaction date (YYYY-MM-DD format) |
| paymentId | string | yes | The Payment ID to update |
No output schema declared.
No examples provided.
qbo_payments_void ~103
Void an existing Payment record. The transaction stays in QuickBooks with amounts set to zero. Id and SyncToken are required (fetch the record first). If this payment was included in a bank deposit, remove that deposit before QuickBooks will void it.
| Name | Type | Req | Description |
|---|---|---|---|
| SyncToken | string | yes | Current SyncToken of the record (required by QBO to void; fetch the record first to obtain it) |
| paymentId | string | yes | The Payment ID to void |
No output schema declared.
No examples provided.
qbo_purchase_orders_create ~186
Create a new PurchaseOrder record in QuickBooks Online.
| Name | Type | Req | Description |
|---|---|---|---|
| DocNumber | string | – | PO number |
| DueDate | string | – | Expected delivery date |
| Line | array | yes | PO lines, same shape as Bill.Line: {Amount, DetailType, AccountBasedExpenseLineDetail | ItemBasedExpenseLineDetail}. |
| Memo | string | – | Memo printed on the PO |
| POStatus | string | – | Status: "Open" or "Closed" |
| PrivateNote | string | – | Private internal note |
| ShipAddr | object | – | Ship-to address (Line1, City, CountrySubDivisionCode, PostalCode) |
| TxnDate | string | – | PO date (YYYY-MM-DD) |
| VendorAddr | object | – | Vendor address override |
| VendorRef | object | yes | Vendor receiving the PO, e.g. {"value": "56"} |
No output schema declared.
No examples provided.
qbo_purchase_orders_get ~35
Get a specific PurchaseOrder record by its ID.
| Name | Type | Req | Description |
|---|---|---|---|
| purchaseOrderId | string | yes | The unique PurchaseOrder ID |
No output schema declared.
No examples provided.
qbo_purchase_orders_list ~117
List PurchaseOrder records in QuickBooks Online with pagination and optional TxnDate range.
| Name | Type | Req | Description |
|---|---|---|---|
| endDate | string | – | Filter to records on or before this TxnDate (YYYY-MM-DD) |
| maxResults | number | – | Maximum number of results to return (default: 100, max: 1000) |
| startDate | string | – | Filter to records on or after this TxnDate (YYYY-MM-DD) |
| startPosition | number | – | Starting position for pagination (1-based, default: 1) |
No output schema declared.
No examples provided.
qbo_purchase_orders_update ~241
Sparse-update an existing PurchaseOrder record. Only provided fields are changed; Id and SyncToken are required.
| Name | Type | Req | Description |
|---|---|---|---|
| DocNumber | string | – | PO number |
| DueDate | string | – | Expected delivery date |
| Line | array | yes | PO lines, same shape as Bill.Line: {Amount, DetailType, AccountBasedExpenseLineDetail | ItemBasedExpenseLineDetail}. |
| Memo | string | – | Memo printed on the PO |
| POStatus | string | – | Status: "Open" or "Closed" |
| PrivateNote | string | – | Private internal note |
| ShipAddr | object | – | Ship-to address (Line1, City, CountrySubDivisionCode, PostalCode) |
| SyncToken | string | yes | Current SyncToken of the record (required by QBO for sparse updates; fetch the record first to obtain it) |
| TxnDate | string | – | PO date (YYYY-MM-DD) |
| VendorAddr | object | – | Vendor address override |
| VendorRef | object | yes | Vendor receiving the PO, e.g. {"value": "56"} |
| purchaseOrderId | string | yes | The PurchaseOrder ID to update |
No output schema declared.
No examples provided.
qbo_purchases_create ~181
Create a new Purchase record in QuickBooks Online.
| Name | Type | Req | Description |
|---|---|---|---|
| AccountRef | object | yes | Bank, credit card, or cash account the purchase was paid from, e.g. {"value": "35"} |
| DocNumber | string | – | Reference number |
| EntityRef | object | – | Optional payee reference, e.g. {"value": "56", "type": "Vendor"} or with type "Customer"/"Employee" |
| Line | array | yes | Expense lines, same shape as Bill.Line: {Amount, DetailType: "AccountBasedExpenseLineDetail" | "ItemBasedExpenseLineDetail", ...}. |
| PaymentType | string | yes | Payment method: "Cash", "Check", or "CreditCard" |
| PrivateNote | string | – | Private note |
| TxnDate | string | – | Purchase date (YYYY-MM-DD) |
No output schema declared.
No examples provided.
qbo_purchases_get ~32
Get a specific Purchase record by its ID.
| Name | Type | Req | Description |
|---|---|---|---|
| purchaseId | string | yes | The unique Purchase ID |
No output schema declared.
No examples provided.
qbo_purchases_list ~116
List Purchase records in QuickBooks Online with pagination and optional TxnDate range.
| Name | Type | Req | Description |
|---|---|---|---|
| endDate | string | – | Filter to records on or before this TxnDate (YYYY-MM-DD) |
| maxResults | number | – | Maximum number of results to return (default: 100, max: 1000) |
| startDate | string | – | Filter to records on or after this TxnDate (YYYY-MM-DD) |
| startPosition | number | – | Starting position for pagination (1-based, default: 1) |
No output schema declared.
No examples provided.
qbo_purchases_update ~234
Sparse-update an existing Purchase record. Only provided fields are changed; Id and SyncToken are required.
| Name | Type | Req | Description |
|---|---|---|---|
| AccountRef | object | yes | Bank, credit card, or cash account the purchase was paid from, e.g. {"value": "35"} |
| DocNumber | string | – | Reference number |
| EntityRef | object | – | Optional payee reference, e.g. {"value": "56", "type": "Vendor"} or with type "Customer"/"Employee" |
| Line | array | yes | Expense lines, same shape as Bill.Line: {Amount, DetailType: "AccountBasedExpenseLineDetail" | "ItemBasedExpenseLineDetail", ...}. |
| PaymentType | string | yes | Payment method: "Cash", "Check", or "CreditCard" |
| PrivateNote | string | – | Private note |
| SyncToken | string | yes | Current SyncToken of the record (required by QBO for sparse updates; fetch the record first to obtain it) |
| TxnDate | string | – | Purchase date (YYYY-MM-DD) |
| purchaseId | string | yes | The Purchase ID to update |
No output schema declared.
No examples provided.
qbo_refund_receipts_create ~181
Create a new RefundReceipt record in QuickBooks Online.
| Name | Type | Req | Description |
|---|---|---|---|
| CustomerMemo | object | – | Memo visible to customer |
| CustomerRef | object | yes | Customer receiving the refund, e.g. {"value": "123"} |
| DepositToAccountRef | object | yes | Account the refund is drawn from, e.g. {"value": "35"} (required) |
| DocNumber | string | – | Refund number |
| Line | array | yes | Refund lines, same shape as Invoice.Line: {Amount, DetailType: "SalesItemLineDetail", SalesItemLineDetail: {ItemRef}}. |
| PaymentMethodRef | object | – | Payment method used to issue refund, e.g. {"value": "1"} |
| PrivateNote | string | – | Private note |
| TxnDate | string | – | Refund date (YYYY-MM-DD) |
No output schema declared.
No examples provided.
qbo_refund_receipts_get ~37
Get a specific RefundReceipt record by its ID.
| Name | Type | Req | Description |
|---|---|---|---|
| refundReceiptId | string | yes | The unique RefundReceipt ID |
No output schema declared.
No examples provided.
qbo_refund_receipts_list ~119
List RefundReceipt records in QuickBooks Online with pagination and optional TxnDate range.
| Name | Type | Req | Description |
|---|---|---|---|
| endDate | string | – | Filter to records on or before this TxnDate (YYYY-MM-DD) |
| maxResults | number | – | Maximum number of results to return (default: 100, max: 1000) |
| startDate | string | – | Filter to records on or after this TxnDate (YYYY-MM-DD) |
| startPosition | number | – | Starting position for pagination (1-based, default: 1) |
No output schema declared.
No examples provided.
qbo_refund_receipts_update ~236
Sparse-update an existing RefundReceipt record. Only provided fields are changed; Id and SyncToken are required.
| Name | Type | Req | Description |
|---|---|---|---|
| CustomerMemo | object | – | Memo visible to customer |
| CustomerRef | object | yes | Customer receiving the refund, e.g. {"value": "123"} |
| DepositToAccountRef | object | yes | Account the refund is drawn from, e.g. {"value": "35"} (required) |
| DocNumber | string | – | Refund number |
| Line | array | yes | Refund lines, same shape as Invoice.Line: {Amount, DetailType: "SalesItemLineDetail", SalesItemLineDetail: {ItemRef}}. |
| PaymentMethodRef | object | – | Payment method used to issue refund, e.g. {"value": "1"} |
| PrivateNote | string | – | Private note |
| SyncToken | string | yes | Current SyncToken of the record (required by QBO for sparse updates; fetch the record first to obtain it) |
| TxnDate | string | – | Refund date (YYYY-MM-DD) |
| refundReceiptId | string | yes | The RefundReceipt ID to update |
No output schema declared.
No examples provided.
qbo_reports_aged_payables ~56
Get an Aged Payables (A/P Aging Summary) report. Shows outstanding vendor balances grouped by age.
| Name | Type | Req | Description |
|---|---|---|---|
| report_date | string | – | Report as-of date (YYYY-MM-DD format, default: today) |
No output schema declared.
No examples provided.
qbo_reports_aged_receivables ~58
Get an Aged Receivables (A/R Aging Summary) report. Shows outstanding customer balances grouped by age.
| Name | Type | Req | Description |
|---|---|---|---|
| report_date | string | – | Report as-of date (YYYY-MM-DD format, default: today) |
No output schema declared.
No examples provided.
qbo_reports_balance_sheet ~85
Get a Balance Sheet report as of a given date range. Shows assets, liabilities, and equity.
| Name | Type | Req | Description |
|---|---|---|---|
| accounting_method | string | – | Accounting method (default: Accrual) |
| end_date | string | yes | End date for the report period (YYYY-MM-DD format) |
| start_date | string | yes | Start date for the report period (YYYY-MM-DD format) |
No output schema declared.
No examples provided.
qbo_reports_cash_flow ~66
Get a Cash Flow Statement for a given date range. Shows cash inflows and outflows from operating, investing, and financing activities.
| Name | Type | Req | Description |
|---|---|---|---|
| end_date | string | yes | End date (YYYY-MM-DD) |
| start_date | string | yes | Start date (YYYY-MM-DD) |
No output schema declared.
No examples provided.
qbo_reports_customer_balance ~51
Get a Customer Balance report as of a given date. Lists the outstanding balance owed by each customer.
| Name | Type | Req | Description |
|---|---|---|---|
| report_date | string | – | Report as-of date (YYYY-MM-DD, default: today) |
No output schema declared.
No examples provided.
How do I install the QuickBooks Online MCP server?
QuickBooks Online runs locally as a container image, launched with docker run --rm -i -e QBO_CLIENT_ID -e QBO_CLIENT_SECRET -e QBO_REFRESH_TOKEN -e QBO_REALM_ID -e QBO_ENVIRONMENT -e MCP_TRANSPORT -e AUTH_MODE -e LOG_LEVEL ghcr.io/wyre-ai/qbo-mcp:v1.6.6. Ready-made configuration for Claude, Cursor, VS Code, Codex and 3 more is on this page, copied from each client's own documentation.
oci · ghcr.io/wyre-ai/qbo-mcp
claude mcp add wyre-ai-qbo-mcp -- docker run --rm -i -e QBO_CLIENT_ID -e QBO_CLIENT_SECRET -e QBO_REFRESH_TOKEN -e QBO_REALM_ID -e QBO_ENVIRONMENT -e MCP_TRANSPORT -e AUTH_MODE -e LOG_LEVEL ghcr.io/wyre-ai/qbo-mcp:v1.6.6
This image reads QBO_CLIENT_ID, QBO_CLIENT_SECRET, QBO_REFRESH_TOKEN, QBO_REALM_ID, QBO_ENVIRONMENT, MCP_TRANSPORT, AUTH_MODE and LOG_LEVEL. Set them in your client's env block for this server; docker run -e passes each one through to the container.
What is the QuickBooks Online MCP server?
QuickBooks Online is an MCP server listed in the public MCP registry as io.github.WYRE-AI/qbo-mcp. MCP server for QuickBooks Online, accounts, customers, invoices, bills, and reports. This page covers its container image (ghcr.io/wyre-ai/qbo-mcp).
Is the QuickBooks Online MCP server safe to use?
QuickBooks Online scores 42 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the QuickBooks Online MCP server expose?
QuickBooks Online exposes 138 tools: qbo_navigate, qbo_status, qbo_customers_list, qbo_customers_get, qbo_customers_create, and 133 more. Their descriptions and schemas cost roughly 16,844 tokens of context every time the server is loaded.
Is the QuickBooks Online MCP server still maintained?
QuickBooks Online is still listed as active in the MCP registry. We last reached this channel on 17 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the QuickBooks Online MCP server under?
QuickBooks Online declares the Apache-2.0 licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.