UNPKG

qbo-mcp-ts

Version:

TypeScript QuickBooks Online MCP Server with enhanced features and dual transport support

163 lines 6.5 kB
"use strict"; /** * Core TypeScript type definitions for QBOMCP-TS */ Object.defineProperty(exports, "__esModule", { value: true }); exports.NetworkError = exports.RateLimitError = exports.ValidationError = exports.AuthenticationError = exports.QBOError = exports.JournalEntrySchema = exports.ChartOfAccountsSchema = exports.CustomerBalanceSchema = exports.CreateCustomerSchema = exports.GetCustomersSchema = exports.AgingReportSchema = exports.CashFlowSchema = exports.BalanceSheetSchema = exports.ProfitAndLossSchema = exports.GetExpensesSchema = exports.CreateExpenseSchema = exports.SendInvoiceSchema = exports.CreateInvoiceSchema = exports.GetInvoicesSchema = void 0; const zod_1 = require("zod"); // ============================================================================ // MCP Tool Input Schemas (using Zod for validation) // ============================================================================ exports.GetInvoicesSchema = zod_1.z.object({ status: zod_1.z.enum(['unpaid', 'paid', 'overdue', 'all']).optional(), customerName: zod_1.z.string().optional(), dateFrom: zod_1.z.string().optional(), dateTo: zod_1.z.string().optional(), minAmount: zod_1.z.number().optional(), maxAmount: zod_1.z.number().optional(), limit: zod_1.z.number().max(100).optional(), }); exports.CreateInvoiceSchema = zod_1.z.object({ customerName: zod_1.z.string(), items: zod_1.z .array(zod_1.z.object({ description: zod_1.z.string(), amount: zod_1.z.number().positive(), quantity: zod_1.z.number().positive().optional(), unitPrice: zod_1.z.number().positive().optional(), })) .min(1), dueDate: zod_1.z.string().optional(), memo: zod_1.z.string().optional(), emailToCustomer: zod_1.z.boolean().optional(), }); exports.SendInvoiceSchema = zod_1.z.object({ invoiceId: zod_1.z.string(), email: zod_1.z.string().email().optional(), subject: zod_1.z.string().optional(), message: zod_1.z.string().optional(), }); exports.CreateExpenseSchema = zod_1.z.object({ vendorName: zod_1.z.string(), amount: zod_1.z.number().positive(), accountName: zod_1.z.string(), paymentMethod: zod_1.z.enum(['Cash', 'Check', 'Credit Card', 'Bank']).optional(), description: zod_1.z.string().optional(), date: zod_1.z.string().optional(), referenceNumber: zod_1.z.string().optional(), }); exports.GetExpensesSchema = zod_1.z.object({ dateFrom: zod_1.z.string().optional(), dateTo: zod_1.z.string().optional(), vendorName: zod_1.z.string().optional(), minAmount: zod_1.z.number().optional(), maxAmount: zod_1.z.number().optional(), accountName: zod_1.z.string().optional(), limit: zod_1.z.number().max(100).optional(), }); exports.ProfitAndLossSchema = zod_1.z.object({ startDate: zod_1.z.string().optional(), endDate: zod_1.z.string().optional(), summarizeBy: zod_1.z.enum(['Total', 'Month', 'Quarter', 'Year']).optional(), accountingMethod: zod_1.z.enum(['Cash', 'Accrual']).optional(), }); exports.BalanceSheetSchema = zod_1.z.object({ asOfDate: zod_1.z.string().optional(), summarizeBy: zod_1.z.enum(['Total', 'Month', 'Quarter']).optional(), accountingMethod: zod_1.z.enum(['Cash', 'Accrual']).optional(), }); exports.CashFlowSchema = zod_1.z.object({ startDate: zod_1.z.string().optional(), endDate: zod_1.z.string().optional(), }); exports.AgingReportSchema = zod_1.z.object({ reportType: zod_1.z.enum(['receivables', 'payables']), asOfDate: zod_1.z.string().optional(), agingPeriod: zod_1.z.number().default(30), }); exports.GetCustomersSchema = zod_1.z.object({ active: zod_1.z.boolean().optional(), withBalance: zod_1.z.boolean().optional(), nameContains: zod_1.z.string().optional(), limit: zod_1.z.number().max(100).optional(), }); exports.CreateCustomerSchema = zod_1.z.object({ displayName: zod_1.z.string(), givenName: zod_1.z.string().optional(), familyName: zod_1.z.string().optional(), companyName: zod_1.z.string().optional(), email: zod_1.z.string().email().optional(), phone: zod_1.z.string().optional(), billingAddress: zod_1.z .object({ line1: zod_1.z.string().optional(), city: zod_1.z.string().optional(), countrySubDivisionCode: zod_1.z.string().optional(), postalCode: zod_1.z.string().optional(), }) .optional(), }); exports.CustomerBalanceSchema = zod_1.z.object({ customerName: zod_1.z.string(), }); exports.ChartOfAccountsSchema = zod_1.z.object({ accountType: zod_1.z.enum(['Asset', 'Liability', 'Equity', 'Income', 'Expense']).optional(), active: zod_1.z.boolean().optional(), }); exports.JournalEntrySchema = zod_1.z.object({ date: zod_1.z.string(), entries: zod_1.z .array(zod_1.z.object({ accountName: zod_1.z.string(), debit: zod_1.z.number().optional(), credit: zod_1.z.number().optional(), description: zod_1.z.string().optional(), })) .min(2), memo: zod_1.z.string().optional(), }); // ============================================================================ // Error Types // ============================================================================ class QBOError extends Error { code; statusCode; details; constructor(message, code, statusCode, details) { super(message); this.code = code; this.statusCode = statusCode; this.details = details; this.name = 'QBOError'; } } exports.QBOError = QBOError; class AuthenticationError extends QBOError { constructor(message, details) { super(message, 'AUTH_ERROR', 401, details); this.name = 'AuthenticationError'; } } exports.AuthenticationError = AuthenticationError; class ValidationError extends QBOError { constructor(message, details) { super(message, 'VALIDATION_ERROR', 400, details); this.name = 'ValidationError'; } } exports.ValidationError = ValidationError; class RateLimitError extends QBOError { constructor(message, retryAfter) { super(message, 'RATE_LIMIT', 429, { retryAfter }); this.name = 'RateLimitError'; } } exports.RateLimitError = RateLimitError; class NetworkError extends QBOError { constructor(message, details) { super(message, 'NETWORK_ERROR', 503, details); this.name = 'NetworkError'; } } exports.NetworkError = NetworkError; //# sourceMappingURL=index.js.map