From 4d4248ba35133deedb84dbbc8c30eaa2f7674397 Mon Sep 17 00:00:00 2001 From: djiang-jq Date: Mon, 5 Oct 2026 22:51:47 -0700 Subject: [PATCH] feat(third_party): add QuickBooks Online plugin Adds the opt-in plugin for the Cursor-hosted QuickBooks Online MCP server. Unlike every other connector here, it ships no mcp.json: the server is Cursor-side and the plugin is only the gate that turns it on, so the manifest carries metadata and a logo and nothing else. Logo is QuickBooks' official mark from quickbooks.intuit.com, resized to the repo's 192x192 RGBA convention. Co-authored-by: Cursor --- .cursor-plugin/marketplace.json | 5 ++ README.md | 1 + .../.cursor-plugin/plugin.json | 36 +++++++++++ third_party/quickbooks-online/CHANGELOG.md | 10 +++ third_party/quickbooks-online/LICENSE | 21 +++++++ third_party/quickbooks-online/README.md | 59 ++++++++++++++++++ third_party/quickbooks-online/assets/logo.png | Bin 0 -> 12036 bytes 7 files changed, 132 insertions(+) create mode 100644 third_party/quickbooks-online/.cursor-plugin/plugin.json create mode 100644 third_party/quickbooks-online/CHANGELOG.md create mode 100644 third_party/quickbooks-online/LICENSE create mode 100644 third_party/quickbooks-online/README.md create mode 100644 third_party/quickbooks-online/assets/logo.png diff --git a/.cursor-plugin/marketplace.json b/.cursor-plugin/marketplace.json index 7e4aa377f..891bcc8f6 100644 --- a/.cursor-plugin/marketplace.json +++ b/.cursor-plugin/marketplace.json @@ -507,6 +507,11 @@ "name": "posthog-mcp", "source": "third_party/posthog-mcp", "description": "Work with PostHog from chat: query product analytics and run SQL, manage feature flags and experiments, triage error tracking issues, and review session replays, surveys, and dashboards (URL-only connector to PostHog's hosted MCP server)." + }, + { + "name": "quickbooks-online", + "source": "third_party/quickbooks-online", + "description": "Read invoices, bills, expenses, customers, accounts, and financial reports." } ] } diff --git a/README.md b/README.md index 7d7e7cb99..0ba8f6e95 100644 --- a/README.md +++ b/README.md @@ -93,6 +93,7 @@ Official Cursor plugins for popular developer tools, frameworks, and SaaS produc | `etoro-trading` | [eToro Trading](third_party/etoro-trading/) | Cursor | Integrations | View your eToro portfolio, balances, positions, and watchlists, research instruments and traders, and prepare and place trades. | | `x-money` | [X Money](third_party/x-money/) | Cursor | Integrations | Use your X Money Card, send money to users on X, manage your finances, view your balance and browse through your transaction history. | | `shopify-store` | [Shopify](third_party/shopify-store/) | Cursor | Integrations | Connect your Shopify store so Grok can answer questions about products, orders, customers, inventory, and sales. | +| `quickbooks-online` | [QuickBooks Online](third_party/quickbooks-online/) | Cursor | Integrations | Read invoices, bills, expenses, customers, accounts, and financial reports. | Author values match each plugin’s `plugin.json` `author.name` (Cursor lists `plugins@cursor.com` in the manifest). ## Repository structure diff --git a/third_party/quickbooks-online/.cursor-plugin/plugin.json b/third_party/quickbooks-online/.cursor-plugin/plugin.json new file mode 100644 index 000000000..918a22232 --- /dev/null +++ b/third_party/quickbooks-online/.cursor-plugin/plugin.json @@ -0,0 +1,36 @@ +{ + "name": "quickbooks-online", + "displayName": "QuickBooks Online", + "version": "1.0.0", + "minClientVersions": { + "cursor": "3.19.0" + }, + "description": "Read invoices, bills, expenses, customers, accounts, and financial reports.", + "author": { + "name": "Cursor", + "email": "plugins@cursor.com" + }, + "homepage": "https://github.com/cursor/plugins/tree/main/third_party/quickbooks-online", + "repository": "https://github.com/cursor/plugins", + "license": "MIT", + "logo": "assets/logo.png", + "keywords": [ + "quickbooks", + "quickbooks online", + "qbo", + "intuit", + "accounting", + "bookkeeping", + "invoices", + "expenses", + "finance", + "mcp" + ], + "category": "integrations", + "tags": [ + "quickbooks", + "accounting", + "finance", + "mcp" + ] +} diff --git a/third_party/quickbooks-online/CHANGELOG.md b/third_party/quickbooks-online/CHANGELOG.md new file mode 100644 index 000000000..d51ce4231 --- /dev/null +++ b/third_party/quickbooks-online/CHANGELOG.md @@ -0,0 +1,10 @@ +# Changelog + +All notable changes to this plugin will be documented here. + +## 1.0.0 — initial release + +- Added the `quickbooks-online` plugin, the opt-in for the QuickBooks Online MCP server that Cursor hosts and credentials. +- Carries no MCP server definition: the server is Cursor-side, so installing the plugin is the whole configuration. +- Auth is Cursor-managed OAuth against Intuit, authorized per company file. +- Logo: QuickBooks' official mark, from `quickbooks.intuit.com`. diff --git a/third_party/quickbooks-online/LICENSE b/third_party/quickbooks-online/LICENSE new file mode 100644 index 000000000..ca2bba771 --- /dev/null +++ b/third_party/quickbooks-online/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 Cursor + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/third_party/quickbooks-online/README.md b/third_party/quickbooks-online/README.md new file mode 100644 index 000000000..b820becc2 --- /dev/null +++ b/third_party/quickbooks-online/README.md @@ -0,0 +1,59 @@ +# QuickBooks Online + +Cursor plugin that connects agents to [QuickBooks Online](https://quickbooks.intuit.com) — Intuit's cloud accounting product — through a [Model Context Protocol](https://modelcontextprotocol.io/) server that Cursor hosts and credentials. + +Read a company file's accounting data: invoices, bills, expenses, payments, customers and vendors, the chart of accounts, journal entries, and the standard financial reports. + +## Install + +1. Open **Cursor Settings → Plugins**. +2. Search for **QuickBooks Online**. +3. Click **Install**, then sign in to Intuit when Cursor prompts you. + +Or run `/add-plugin quickbooks-online` in chat. + +## MCP + +This plugin ships no `mcp.json`, and that is deliberate. + +Every other connector in this repository either points at a vendor's hosted endpoint or runs a package locally over stdio, so it carries its own server definition. QuickBooks Online does not: Cursor runs the server, and the plugin exists only as the opt-in that turns it on for your account. Installing the plugin is what makes the server available; there is no command to run, no endpoint to reach, and no API key or client secret to paste. + +One consequence worth knowing: because the server is not declared here, you will not find it in a local `mcp.json` and you cannot point another MCP client at it. It is reachable from Cursor only. + +## Before you connect + +Nothing to prepare. Cursor owns the OAuth client, so you do not need an Intuit developer account or an app of your own. + +You will be asked to sign in to Intuit and pick a company. Authorization is per company file — connect once per company you want agents to reach, and grant only the ones you intend to expose. + +## What agents can do + +| Category | Capabilities | +| --- | --- | +| Accounts | Chart of accounts and company information | +| Contacts | Customers, vendors, and employees | +| Sales | Invoices, credit memos, and payments received | +| Purchases | Bills, expenses, purchase orders, and payments made | +| Banking | Bank transactions and journal entries | +| Items | Products, services, and tracking categories | +| Reports | Profit and loss, balance sheet, and cash flow statement | + +The server is the source of truth for tool names and schemas. + +## Notes + +- Access follows whatever the signed-in Intuit user can see. The connector cannot reach a company file that user has no access to. +- QuickBooks Online and QuickBooks Desktop are different products. This connector is for QuickBooks Online. +- Disconnecting is two independent steps: uninstalling the plugin stops Cursor from offering the server, and revoking the connection in Intuit's account settings ends Cursor's access to your data. + +## Docs + +- QuickBooks Online: https://quickbooks.intuit.com +- Intuit Developer: https://developer.intuit.com +- Model Context Protocol: https://modelcontextprotocol.io + +Logo is QuickBooks' official mark, from `quickbooks.intuit.com`. + +## License + +MIT diff --git a/third_party/quickbooks-online/assets/logo.png b/third_party/quickbooks-online/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..b12caa8638eb839d3539f03c7f9e8b2f7dde8ee3 GIT binary patch literal 12036 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 O(B-9-r79$hgZ>vPg$6GG literal 0 HcmV?d00001