Skip to main content
Glama
QuickBooks Desktop MCP

QuickBooks Desktop MCP

by Compolaga

qb_search_customers

Read-only

Search customer records by name, company, contact, or email and return currency and balance details; optionally include inactive customers and limit results.

Instructions

Finds customers whose name, company name, contact or e-mail contains query (case-insensitive; empty = all). Returns currency and balance.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "qb_search_customers"
  }
}

Input Schema

NameRequiredDescriptionDefault
queryNo
max_resultsNo
include_inactiveNo

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.2.0

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description adds that matching is case-insensitive, that an empty query returns all, and that results include currency and balance, but it omits pagination behavior and how include_inactive affects results.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single well-formed sentence with no wasted words, front-loading the search criteria and return fields. It is appropriately sized for a simple search tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The output schema covers return values and annotations cover safety, so the description does not need to explain those. However, with three parameters at 0% schema coverage, the absence of any explanation for `max_results` and `include_inactive` leaves a functional gap an agent would need to infer.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, but it only explains `query` semantics (searchable fields, case-insensitivity, empty=all). Neither `max_results` nor `include_inactive` is mentioned, leaving two of three parameters undocumented in both schema and description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb (finds), resource (customers), and searchable fields (name, company name, contact, e-mail), making it immediately distinguishable from siblings like qb_create_customer. An agent can identify this as the customer-search tool without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The parenthetical 'empty = all' gives a useful usage hint for retrieving all customers, but the description never states when to use this tool versus alternatives such as qb_list_vendors or qb_create_customer. Usage is implied rather than explicitly guided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.