Skip to content

feat(quickbooks-online): add Intuit QuickBooks skills - #757

Merged
djiang-jq merged 1 commit into
cursor:mainfrom
djiang-jq:djiang/quickbooks-skills
Oct 21, 2026
Merged

djiang-jq merged 1 commit into
cursor:mainfrom
djiang-jq:djiang/quickbooks-skills

Conversation

@djiang-jq

@djiang-jq djiang-jq commented Oct 21, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Adds the skills from Intuit's QuickBooks plugin to the quickbooks-online plugin and bumps it to 1.2.0.

  • Copied unchanged: business-health-check, industry-benchmark, chase-overdue-invoices, email-to-estimate-invoice, payroll-help, analyze-payroll-cost, payroll-employee-onboarding, set-base-pay, lending.
  • Rewritten: Intuit's setup skill only covers claude.ai connectors and Claude Code's /mcp, so it's replaced by quickbooks-setup, which covers installing the plugin and signing in to Intuit in Cursor.
  • Intuit's skills are Apache 2.0; the license is included at skills/LICENSE.
  • plugin.json now declares "skills": "./skills/". The description is updated in plugin.json and marketplace.json, and the README and CHANGELOG are updated.

Notes for review

  • I couldn't confirm the tool names (qbo_payroll_*, qbo_lending_*, the *_text report variants) against mcp-e2e.quickbooks.intuit.com. It's the same Intuit server, but they're worth a check after connecting.
  • business-health-check and industry-benchmark finish by calling widget tools (business_health_check_widget, industry_benchmark_widget), so their output depends on Cursor displaying those widgets.
  • The skills add write actions (sending invoice reminders, creating customers, invoices, and employees, changing pay), all behind explicit confirmation, so the plugin is no longer read-only.

Test plan

  • node scripts/validate-plugins.mjs
  • Connect QuickBooks Online in Cursor and run "How is my business doing this month?"

Made with Cursor


Note

Medium Risk
Expands the plugin from mostly read-only MCP access to agent workflows that can send customer emails, create sales documents, and change payroll data when the user confirms—financial and PII-adjacent actions worth validating against live Intuit tools and widget support.

Reviewed by Cursor Bugbot for commit 1b5e36c. Bugbot is set up for automated code reviews on this repo. Configure here.

Co-authored-by: Cursor <cursoragent@cursor.com>
@djiang-jq
djiang-jq merged commit 5dba0b8 into cursor:main Oct 21, 2026
2 checks passed

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 2 potential issues.

Fix All in Cursor

Bugbot Autofix is ON, but it could not run because the branch was deleted or merged before autofix could start.

Reviewed by Cursor Bugbot for commit 1b5e36c. Configure here.

| Code | Meaning | What to tell the user | Resolution (re-call) |
|---|---|---|---|
| MCP-0020 | Pending bank-payment match | "Invoice #X may already be paid — there's a pending bank match." **Never say it IS paid.** | `pending_match_confirmed=true` **sends those invoices anyway** (they are eligible) |
| MCP-0021 | Invoice appears already paid | "Invoice #X appears already paid. Send the reminder anyway?" | `already_paid_confirmed=true` **drops** the held invoices and sends the rest |

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Already-paid confirm drops invoices

Medium Severity · Logic Bug

The MCP-0021 hold tells the user the invoice appears paid and asks whether to send the reminder anyway, but already_paid_confirmed=true drops those invoices and sends only the rest. A yes therefore skips the reminders the user just approved.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 1b5e36c. Configure here.

**Bulk sends - group by tone in confirmation:**
- All bulk reminders use the same QBO template (custom text is not allowed for bulk)
- BUT the confirmation table MUST group invoices by aging bucket so the user sees which tones apply
- Add a "Tone" column showing: Gentle (1-30), Standard (31-60), Firm (61-90), or **Urgent** (91+)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Conflicting bulk reminder tone guidance

Low Severity · Logic Bug

Bulk reminder confirmation is told both to add a per-invoice Tone column and to omit it because every invoice uses the same QuickBooks template. Agents will flip between those UIs, and a Tone column implies custom wording that the send path cannot apply.

Additional Locations (2)
Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 1b5e36c. Configure here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant