MCP server connecting Claude Desktop/Code to QuickBooks Online for natural-language accounting queries
Server has 19 tools with basic naming and descriptions, but significant gaps in schema completeness and parameter documentation. Tool names follow verb_noun convention (get_, list_, create_), which is good. However, most tools lack visible input schemas in the provided code, only 2 tools (get_account_balances, get_account_transactions) show explicit schema definitions. Descriptions are present but generic (10-50 chars for many tools), falling below the 50-200 char LLM-optimized baseline. No output schemas documented. Error handling and recovery guidance absent. Parameter descriptions missing for most tools (e.g., list_invoices, get_invoice_details show no schema). This is typical of community servers, functional but not production-grade.
Create a new customer (premium tier).
Create a new expense (premium tier).
Create a new invoice (premium tier).
Get current balances for your accounts by type.
Get recent transactions for a specific account.
Generate an Aging report (premium tier).
Generate a Balance Sheet report (premium tier).
17 of 19 tools have no visible input schemas in source code. Only get_account_balances and get_account_transactions show explicit JSON Schema definitions.
Tool descriptions are generic and under 50 characters for 17 tools (e.g., 'List all invoices with optional filtering by status and date range' is 65 chars but lacks WHEN to use, WHAT it returns, and prerequisites). Baseline for LLM-optimized descriptions is 50-200 chars with explicit context.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 36 | <=2025-11-25 | v2 |
Generate a Cash Flow report (premium tier).
Get a summary of a customer including invoices and balance.
Get key financial metrics and KPIs (premium tier).
Get detailed information about a specific invoice.
Get all overdue invoices with aging details.
Generate a Profit and Loss report (premium tier).
Get revenue trends over time (premium tier).
Generate a Tax Summary report (premium tier).
Get the top expenses by amount.
List all expenses with optional filtering.
List all invoices with optional filtering by status and date range.
Search for customers by name or other criteria.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields without knowing what each tool returns. Per pattern:tool, output structure must be documented.
No error handling or recovery guidance visible. Tools like create_invoice and create_expense (WRITE operations) lack confirmation/dry-run patterns and error classification (retryable vs fatal). Per pattern:confirmation-request and pattern:error-classification, destructive ops need safeguards.
License validation logic (premium tier gating) is server-side but not exposed in tool definitions. LLMs cannot see which tools require premium licenses or what happens if validation fails. Tool descriptions should state tier requirements.