Connect your agent
The server speaks Streamable HTTP and needs no authentication.- Claude Code
- Codex
- Cursor
- Gemini CLI
- VS Code
- Windsurf
- Other clients
What it can do
The server never touches a QuickBooks connection and never needs an API key. Its tools check parameters, build requests and validate charts, and your agent sends what they build with your key. So there is nothing for the server to leak.261 operation tools
One per QuickBooks operation:
find_customers, create_invoice, update_vendor, record_payment,
execute_txn_void… Each checks the arguments against QuickBooks’ schema and returns the API request
that runs it.4 workflow tools
get_workflow_authoring_guide, validate_workflow_chart, list_workflow_templates and
get_workflow_template: everything an agent needs to write a workflow and check
it. Runs start only on realtime and simulated connections.match_records builds a match: the request that finds the record a
name means in a customer’s company file, POST /api/v2/connections/{connection_id}/matches, checked the way
the API checks it, with the answer’s schema and what each tier means. Like the operation tools it never
touches a connection, so the agent sends the request with your key. And report_confusion lets an agent tell
us when a tool, guide or API response confused it, without sending any keys or customer data. We read those
reports to improve the tools. Last, get_integration_checklist returns the
integration checklist: every rule an integration has to get right, or one area’s
with area, each with what to check in the code, so an agent writing or reviewing your webhook handler has
them to hand.
What an operation tool returns
Callingcreate_customer with a name and email returns the request to send, ready to use:
structuredContent
string, string, object
The API call, with
query for a GET or body. Swap in a real connection_id, add your
webhook_url, and send it with your API key.object
Send them too. Each call of a tool gives a fresh
Idempotency-Key, so if the 201 never arrives, the
same request sent again, key and all, answers with the request already queued instead of queueing a
second one. See Retrying a call safely.object
The JSON Schema of the webhook the answer will arrive in, including this operation’s own
data and every QuickBooks status code it can fail with, each with what it means and what to do.curl command, plus a short guide to handling each
webhook state and the rest of the operation’s notes from Intuit’s qbXML reference. The tool’s
description carries only their opening paragraph, since a client loads every tool’s description at once.
So an agent writing your webhook handler gets the data shape and the error cases from the same call that
built the request. Pass "include_qbxml": true to also see the qbXML QuBe Sync will send QuickBooks. That’s
for curiosity and debugging only: your app always sends JSON.
validate_workflow_chart runs the same checks as POST /api/v2/workflows/validate, except the ones that need
your app: the server never has your API key, so it can’t see your workflows. Pass the chart as chart, a JSON
object or a string holding one, and the keys of the workflows your app already has as known_workflows. A
workflow state that calls a key not in that list is a warning rather than an error, and the key is listed in
workflows_to_create: create those in your app before you push this chart, because saving it there checks
that each one exists and takes the input you pass. The result is
{valid, errors, warnings, workflows_to_create}, and each error or warning has a path into the chart and a
message. Errors block saving; warnings are likely mistakes worth a look.
Pair it with the CLI
The MCP server tells your agent what to send. The qube CLI lets it send it safely: log in yourself with the default sandbox scope, and your agent can create a simulated connection, run the requests it built, inject faults, and push the workflows it wrote, without ever seeing a secret or a production app.Calling it directly
It’s plain JSON-RPC overPOST, so curl works for scripting or debugging. (A GET answers 405.)
tools/list returns 100 tools per page. The first page starts with the workflow tools,
report_confusion, match_records and get_integration_checklist, then the operations in alphabetical order. Pass nextCursor back as
params.cursor for the rest.
The server is public, so don’t send it real customer data. Use it to explore and build requests, then send
them yourself with your API key.

