Skip to main content
Glama
wyre-technology

QuickBooks Online MCP Server

qbo_navigate

Select a QuickBooks Online domain to access specific tools for managing customers, invoices, expenses, payments, or financial reports.

Instructions

Navigate to a specific domain in QuickBooks Online. Call this first to select which area you want to work with. After navigation, domain-specific tools will be available.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
domainYesThe domain to navigate to: - customers: Customer management - list, get, create, and search customers - invoices: Invoice management - list, get, create invoices and send them by email - expenses: Expense tracking - list and view purchases and bills - payments: Payment management - list, get, and create payments linked to invoices - reports: Financial reports - profit & loss, balance sheet, aged receivables/payables, customer sales

Implementation Reference

  • Tool definition with schema - defines the qbo_navigate tool structure including name, description, and inputSchema with domain validation (enum of allowed domains: customers, invoices, expenses, payments, reports)
    const navigateTool: Tool = {
      name: "qbo_navigate",
      description:
        "Navigate to a specific domain in QuickBooks Online. Call this first to select which area you want to work with. After navigation, domain-specific tools will be available.",
      inputSchema: {
        type: "object",
        properties: {
          domain: {
            type: "string",
            enum: [
              "customers",
              "invoices",
              "expenses",
              "payments",
              "reports",
            ],
            description: `The domain to navigate to:
    - customers: ${domainDescriptions.customers}
    - invoices: ${domainDescriptions.invoices}
    - expenses: ${domainDescriptions.expenses}
    - payments: ${domainDescriptions.payments}
    - reports: ${domainDescriptions.reports}`,
          },
        },
        required: ["domain"],
      },
    };
  • Tool handler implementation - processes the qbo_navigate request by updating server state to the selected domain, retrieving available tools for that domain, and returning a success message with the list of available tools
    if (name === "qbo_navigate") {
      const { domain } = args as { domain: Domain };
      state.currentDomain = domain;
    
      const domainTools = getDomainTools(domain);
      const toolNames = domainTools.map((t) => t.name).join(", ");
    
      return {
        content: [
          {
            type: "text",
            text: `Navigated to ${domain} domain. Available tools: ${toolNames}`,
          },
        ],
      };
    }
  • Domain type definition - TypeScript union type defining the five allowed domains for navigation (customers, invoices, expenses, payments, reports)
    type Domain =
      | "customers"
      | "invoices"
      | "expenses"
      | "payments"
      | "reports";
  • Domain descriptions metadata - provides human-readable descriptions for each domain used in the qbo_navigate tool's input schema to guide users on domain selection
    const domainDescriptions: Record<Domain, string> = {
      customers:
        "Customer management - list, get, create, and search customers",
      invoices:
        "Invoice management - list, get, create invoices and send them by email",
      expenses:
        "Expense tracking - list and view purchases and bills",
      payments:
        "Payment management - list, get, and create payments linked to invoices",
      reports:
        "Financial reports - profit & loss, balance sheet, aged receivables/payables, customer sales",
    };
  • src/index.ts:157-170 (registration)
    Tool registration in ListTools handler - conditionally registers qbo_navigate when currentDomain is null (at root level), making it the entry point for the decision tree architecture
    server.setRequestHandler(ListToolsRequestSchema, async () => {
      const tools: Tool[] = [];
    
      if (state.currentDomain === null) {
        // At root - show navigation tool only
        tools.push(navigateTool);
      } else {
        // In a domain - show domain tools plus back navigation
        tools.push(backTool);
        tools.push(...getDomainTools(state.currentDomain));
      }
    
      return { tools };
    });

Tool Definition Quality

Score is being calculated. Check back soon.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/wyre-technology/qbo-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server