Enhanced QuickBooks Time MCP Server with accountant-friendly features for accessing QuickBooks Time data through API tools
Server has 25 tools with mostly complete schemas and descriptions, but significant gaps undermine quality. All tools are READ_ONLY (good for safety), but descriptions are generic and lack LLM-optimization guidance. Parameter descriptions exist but are often minimal (10-30 chars). No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Output schemas are not documented, LLMs cannot predict response structure. Error handling is present but not recovery-focused. Naming is consistent (verb_noun pattern) but some tools are overly similar (get_user vs get_users vs get_current_user). No evidence of parameter validation rules or constraint documentation in descriptions.
Analyze project profitability with cost and revenue breakdowns.
Get currently active timesheets (users who are 'on the clock') with filtering options.
Get current totals from QuickBooks Time.
Get the current authenticated user's details.
Get custom fields from QuickBooks Time.
Get groups from QuickBooks Time.
Output schemas not documented. LLMs cannot predict response structure or plan downstream tool calls. Tools like get_payroll, get_timesheets, and accounting helpers return complex nested objects with no schema definition visible in code.
Generic descriptions on 10 tools (get_groups, get_custom_fields, get_projects, get_project_activities, get_last_modified, get_notifications, get_managed_clients, get_current_totals, get_user, get_current_user). Descriptions under 50 chars lack context for LLM selection. E.g., 'Get groups from QuickBooks Time.' does not explain when to use it vs other tools.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 52 | <=2025-11-25 | v2 |
Get detailed information about a specific jobcode including its properties, hierarchy position, billing settings, and optional custom fields.
Get the hierarchical structure of jobcodes in your company. Jobcodes can be organized in a parent-child relationship, creating a tree-like structure.
Get jobcodes from QuickBooks Time with advanced filtering options. Returns jobcode details including name, type, and status.
Get information about the last modified items in QuickBooks Time.
Get managed clients from QuickBooks Time.
Get notifications from QuickBooks Time.
Get payroll information from QuickBooks Time.
Get payroll information broken down by jobcode from QuickBooks Time.
Get project activities from QuickBooks Time.
Get project report from QuickBooks Time.
Get projects from QuickBooks Time.
Get a specific timesheet by ID.
Get timesheets from QuickBooks Time.
Get user details from QuickBooks Time with advanced filtering options.
Get users from QuickBooks Time with advanced filtering options.
Prepare month-end closing data with accounting summaries and reconciliation information.
Prepare biweekly payroll data with accounting-friendly formatting and summaries.
Prepare client invoice data with billable hours and project breakdowns.
Prepare quarterly tax information with payroll summaries and tax-relevant data.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). All tools are READ_ONLY but this is not declared in schema. Agents cannot distinguish safe-to-retry operations from those with side effects.
Overlapping tool names create LLM confusion. get_user, get_users, get_current_user are semantically similar. Descriptions do not clarify: get_user accepts 'ids' array (plural) but name suggests singular. get_current_user has empty input schema but no explanation of what 'current' means.
Parameter descriptions lack constraint documentation. E.g., 'limit' parameters have no min/max bounds stated in description. 'type' enum values are documented in schema but not explained in description text (LLMs cannot reliably parse JSON Schema enums). Date parameters lack format guidance (ISO 8601 vs natural language).