Skip to main content
Glama
QuickBooks Desktop MCP

QuickBooks Desktop MCP

by Compolaga

qb_write_check

Records money out of a bank account as a QuickBooks write check with expense lines, using a preview and confirmation step before posting.

Instructions

Money out of a bank account (Write Checks), e.g. bank charges, fixed monthly payments or an unknown debit to a suspense account. lines: [{"account": expense/other account, "amount", "memo", "customer"}]. Amounts in the bank account's currency; exchange_rate = home-currency units per 1 unit of that currency. Two steps (preview + confirm_code).

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "bank_account": "<bank_account>",
      "txn_date": "<txn_date>",
      "lines": "<lines>"
    },
    "name": "qb_write_check"
  }
}

Input Schema

NameRequiredDescriptionDefault
memoNo
linesYes
payeeNo
run_idNo
txn_dateYes
ref_numberNo
bank_accountYes
confirm_codeNo
exchange_rateNo
expected_totalNo
expected_company_fileNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.2.0

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare this is a non-read-only, non-idempotent, non-destructive write. The description adds genuinely new behavioral context: it is a two-step preview + confirm_code flow, and amounts must be expressed in the bank account's currency with exchange_rate defined as home-currency units per one unit of that currency. That is real value beyond the annotations, though reversibility/rate-limit/permission details are absent.

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

Conciseness4/5

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

Four short lines with the core action front-loaded and no filler. The inline JSON-ish notation for lines is terse but readable; the only slight cost is that the exchange_rate sentence is dense and its placement interrupts the flow of the two-step note.

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?

For an 11-parameter financial write with no output schema and no annotation detail, the description covers the essential call shape (bank_account, lines, currency, exchange rate, confirm flow) but is silent on the guard parameters that look safety-critical, notably expected_total and expected_company_file. An agent could construct a call but could easily miss defensive parameters.

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

Parameters3/5

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

Schema description coverage is 0% across 11 parameters, so the description carries the load here. It documents the lines array shape (account, amount, memo, customer) and explains exchange_rate units, but leaves expected_total, expected_company_file, run_id, ref_number, payee and confirm_code unexplained, which is a substantial gap for a mutation tool.

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

Purpose4/5

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

The description names a concrete verb+resource: writing a check that moves money out of a bank account, with examples of the situations it covers (bank charges, fixed monthly payments, suspense debits). It is clearly distinct from the read-only siblings, though it does not explicitly contrast itself with qb_add_transaction or qb_journal_entry, which are the nearest ambiguous alternatives.

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?

Concrete use cases are given ('bank charges, fixed monthly payments or an unknown debit to a suspense account'), which implies when to reach for this tool. However, there is no explicit guidance on when NOT to use it versus qb_add_transaction, qb_journal_entry, or qb_deposit, so the agent must infer the boundary itself.

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