{"name":"io.github.mindstone/mcp-server-quickbooks","slug":"mindstone-mcp-server-quickbooks","title":"QuickBooks Online","description":"QuickBooks Online MCP server: invoices, bills, customers, vendors, employees, and accounts","url":"https://mcp.market/server/mindstone-mcp-server-quickbooks","rating":null,"grade":"A","score":85,"certified":false,"status":"active","category":"finance","tags":["finance"],"presence":{"score":36,"stars":14,"forks":4,"downloads_week":98,"last_push_at":"2026-11-04T07:07:50.000Z","license":"NOASSERTION"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/mindstone/mcp-servers","website":null,"version":"0.4.3","remotes":[],"packages":[{"registryType":"npm","registryBaseUrl":"https://registry.npmjs.org","identifier":"@mindstone/mcp-server-quickbooks","version":"0.4.3","runtimeHint":"npx","transport":{"type":"stdio"},"environmentVariables":[{"description":"Intuit Developer app client ID","isRequired":true,"format":"string","name":"QUICKBOOKS_CLIENT_ID"},{"description":"Intuit Developer app client secret","isRequired":true,"format":"string","isSecret":true,"name":"QUICKBOOKS_CLIENT_SECRET"},{"description":"OAuth 2.0 refresh token","isRequired":true,"format":"string","isSecret":true,"name":"QUICKBOOKS_REFRESH_TOKEN"},{"description":"QuickBooks company (realm) ID","isRequired":true,"format":"string","name":"QUICKBOOKS_REALM_ID"},{"description":"sandbox or production","format":"string","default":"production","name":"QUICKBOOKS_ENVIRONMENT"},{"description":"Optional path to a host bridge state file used for credential management","format":"string","name":"MCP_HOST_BRIDGE_STATE"},{"description":"Backwards-compatible alias for MCP_HOST_BRIDGE_STATE","format":"string","name":"MINDSTONE_REBEL_BRIDGE_STATE"}]}],"tools":[{"name":"configure_quickbooks","description":"Configure QuickBooks Online credentials. Call this when the user provides their Intuit Developer app credentials. WORKFLOW: 1. Go to https://developer.intuit.com/ and create an app (or use existing) 2. Get the Client ID and Client Secret from the app's Keys & credentials page 3. Add http://localhost:8000/callback as a Redirect URI 4. Use the OAuth Playground or your app's auth flow to obtain a Ref","write_action":false,"price_micros":0,"input_schema":null},{"name":"create_quickbooks_bill","description":"Create a new bill (accounts payable) in QuickBooks Online. Example: { \"vendorId\": \"123\", \"lines\": [{ \"description\": \"Office supplies\", \"amount\": 250, \"accountId\": \"456\" }] } WORKFLOW: 1. Use list_quickbooks_vendors to find the vendor ID 2. Use list_quickbooks_accounts to find expense account IDs 3. Create with line items","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_quickbooks_customer","description":"Create a new customer in QuickBooks Online. Example: { \"displayName\": \"Acme Corp\" } Example: { \"displayName\": \"Jane Smith\", \"email\": \"jane@smith.com\", \"phone\": \"555-1234\" }","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_quickbooks_estimate","description":"Create a new estimate (quote) in QuickBooks Online. Example: { \"customerId\": \"123\", \"lines\": [{ \"description\": \"Consulting services\", \"amount\": 1500 }] } WORKFLOW: 1. Use list_quickbooks_customers to find the customer ID 2. Create with line items (description + amount required) 3. Optionally set expirationDate and memo COMMON MISTAKES: - customerId is required (use list_quickbooks_customers to fin","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_quickbooks_invoice","description":"Create a new invoice in QuickBooks Online. Example: { \"customerId\": \"123\", \"lines\": [{ \"description\": \"Consulting services\", \"amount\": 1500 }] } WORKFLOW: 1. Use list_quickbooks_customers to find the customer ID 2. Create with line items (description + amount required) 3. Optionally set dueDate and memo COMMON MISTAKES: - customerId is required (use list_quickbooks_customers to find it) - Each lin","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_quickbooks_vendor","description":"Create a new vendor in QuickBooks Online. Example: { \"displayName\": \"Office Depot\" } Example: { \"displayName\": \"AWS\", \"email\": \"billing@aws.amazon.com\", \"companyName\": \"Amazon Web Services\" }","write_action":true,"price_micros":0,"input_schema":null},{"name":"download_quickbooks_invoice_pdf","description":"Download an invoice as a PDF file from QuickBooks Online. Returns the local file path where the PDF has been saved (system temp directory). Example: { \"invoiceId\": \"123\" } WORKFLOW: 1. Use list_quickbooks_invoices to find the invoice ID 2. Download the PDF, then attach or share the saved file","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_quickbooks_entity","description":"Get a single QuickBooks entity by type and ID. Example: { \"entityType\": \"Invoice\", \"entityId\": \"123\" } Supported entity types: Account, Bill, BillPayment, Customer, Employee, Estimate, Invoice, Item, JournalEntry, Purchase, Vendor","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_quickbooks_report","description":"Run a financial report from QuickBooks Online. Reports available: ProfitAndLoss, BalanceSheet, CashFlow, AgedReceivables, AgedPayables. Example: { \"report\": \"ProfitAndLoss\", \"startDate\": \"2026-01-01\", \"endDate\": \"2026-03-31\" } Example: { \"report\": \"AgedReceivables\", \"asOfDate\": \"2026-03-31\" } WORKFLOW: 1. ProfitAndLoss / BalanceSheet / CashFlow cover a date range (startDate + endDate) 2. AgedRecei","write_action":true,"price_micros":0,"input_schema":null},{"name":"list_quickbooks_accounts","description":"List chart of accounts from QuickBooks Online. Returns: Id, Name, AccountType, AccountSubType, CurrentBalance, Active. Example: {} Example: { \"accountType\": \"Expense\" } Account types: Bank, Accounts Receivable, Other Current Asset, Fixed Asset, Other Asset, Accounts Payable, Credit Card, Other Current Liability, Long Term Liability, Equity, Income, Cost of Goods Sold, Expense, Other Income, Other ","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_quickbooks_bills","description":"List bills (accounts payable) from QuickBooks Online. Returns: Id, DocNumber, TxnDate, DueDate, Balance, TotalAmt, VendorRef. Example: {} Example: { \"vendorId\": \"123\" }","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_quickbooks_customers","description":"List customers from QuickBooks Online. Returns: Id, DisplayName, PrimaryEmailAddr, PrimaryPhone, Balance, Active. Example: {} Example: { \"active\": true } Example: { \"searchTerm\": \"Smith\" }","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_quickbooks_employees","description":"List employees from QuickBooks Online. Returns: Id, DisplayName, PrimaryEmailAddr, PrimaryPhone, Active. Example: {}","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_quickbooks_estimates","description":"List estimates (quotes) from QuickBooks Online. Returns: Id, DocNumber, TxnDate, ExpirationDate, TotalAmt, TxnStatus, CustomerRef, Line items. Example: {} Example: { \"status\": \"Pending\" } Example: { \"customerId\": \"123\" } WORKFLOW: 1. Call with no args to see recent estimates 2. Filter by status (Pending/Accepted/Closed/Rejected) or customer 3. Use get_quickbooks_entity with entityType \"Estimate\" f","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_quickbooks_invoices","description":"List invoices from QuickBooks Online. Returns: Id, DocNumber, TxnDate, DueDate, Balance, TotalAmt, CustomerRef, Line items. Example: {} Example: { \"status\": \"unpaid\" } Example: { \"customerId\": \"123\" } WORKFLOW: 1. Call with no args to see recent invoices 2. Filter by status (unpaid/paid/overdue) or customer 3. Use get_quickbooks_entity for full invoice details","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_quickbooks_vendors","description":"List vendors from QuickBooks Online. Returns: Id, DisplayName, PrimaryEmailAddr, PrimaryPhone, Balance, Active. Example: {} Example: { \"searchTerm\": \"Office\" }","write_action":false,"price_micros":0,"input_schema":null},{"name":"query_quickbooks","description":"Run a QuickBooks query using the QuickBooks Query Language. Returns matching entities. QuickBooks uses a SQL-like query language. Example: { \"query\": \"SELECT * FROM Invoice WHERE Balance > '0' ORDERBY DueDate\" } Example: { \"query\": \"SELECT * FROM Customer WHERE Active = true\" } WORKFLOW: 1. Use this for flexible searches across any entity type 2. Entity names are PascalCase: Invoice, Customer, Ven","write_action":true,"price_micros":0,"input_schema":null},{"name":"send_quickbooks_invoice_email","description":"Email an invoice to its customer via QuickBooks Online. Example: { \"invoiceId\": \"123\" } Example: { \"invoiceId\": \"123\", \"sendTo\": \"billing@example.com\" } WORKFLOW: 1. Use list_quickbooks_invoices to find the invoice ID 2. Send to the invoice's billing email, or override with sendTo Note: this emails a real customer.","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_quickbooks_customer","description":"Sparse-update an existing customer in QuickBooks Online. Example: { \"customerId\": \"123\", \"email\": \"ap@example.com\" } Example: { \"customerId\": \"123\", \"active\": false } If syncToken is omitted the customer is read first to obtain the current one (QuickBooks rejects stale SyncTokens). Setting active to false deactivates the customer.","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_quickbooks_invoice","description":"Sparse-update an existing invoice in QuickBooks Online (header fields only — line items cannot be sparse-updated). Example: { \"invoiceId\": \"123\", \"dueDate\": \"2026-04-01\" } Example: { \"invoiceId\": \"123\", \"memo\": \"Net 30\", \"privateNote\": \"Chased 2026-03-01\" } If syncToken is omitted the invoice is read first to obtain the current one (QuickBooks rejects stale SyncTokens).","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_quickbooks_vendor","description":"Sparse-update an existing vendor in QuickBooks Online. Example: { \"vendorId\": \"123\", \"email\": \"ap@example.com\" } Example: { \"vendorId\": \"123\", \"active\": false } If syncToken is omitted the vendor is read first to obtain the current one (QuickBooks rejects stale SyncTokens). Setting active to false deactivates the vendor.","write_action":true,"price_micros":0,"input_schema":null}],"scan":{"score":85,"grade":"A","scanned_at":"2026-11-04T14:39:45.134Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-11-04T14:39:45.084Z","components":{"code":{"score":25,"max":25,"notes":["41 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":6,"max":15,"notes":["static API keys via environment variables"]},"maintenance":{"score":15,"max":15,"notes":["last push 0 days ago"]},"identity":{"score":9,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"@mindstone/mcp-server-quickbooks","version":"0.4.3","found":true,"license":"FSL-1.1-MIT","hasInstallScripts":false,"dependencyCount":2,"publishedAt":"2026-10-13T22:40:09.767Z","repositoryUrl":"git+https://github.com/mindstone/mcp-servers.git","weeklyDownloads":98}],"repo":{"found":true,"owner":"mindstone","repo":"mcp-servers","archived":false,"pushedAt":"2026-11-04T07:07:50Z","stars":14,"forks":4,"openIssues":27,"ownerType":"Organization","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/58389135?v=4","ownerCreatedAt":"2019-12-01T11:21:22Z","license":"NOASSERTION"},"icon":{"url":"https://avatars.githubusercontent.com/u/58389135?v=4&s=128","source":"registry","width":128,"height":128},"presence":{"stars":14,"forks":4,"downloadsWeek":98,"license":"NOASSERTION","lastPushAt":"2026-11-04T07:07:50.000Z","score":36}}}},"grade_history":[],"reviews":[]}