- DELETE old single-file stub, rebuild from scratch - GraphQL API client with OAuth2 Bearer auth and error handling - 45+ tools across 10 categories: * invoices-tools.ts (10): list, get, create, update, delete, send, approve, mark sent, list/create payments * customers-tools.ts (6): list, get, create, update, delete, search * products-tools.ts (5): list, get, create, update, archive * accounts-tools.ts (4): list, get, create, update (chart of accounts) * transactions-tools.ts (6): list, get, create, update, categorize, list attachments * bills-tools.ts (7): list, get, create, update, list/create payments * estimates-tools.ts (6): list, get, create, update, send, convert to invoice * taxes-tools.ts (3): list, get, create * businesses-tools.ts (3): list, get, get current * reporting-tools.ts (5): P&L, balance sheet, aged receivables, tax summary, cashflow - 17 MCP apps: invoice-dashboard, invoice-detail, invoice-builder, customer-detail, customer-grid, product-catalog, chart-of-accounts, transaction-feed, transaction-categorizer, bill-manager, estimate-builder, tax-overview, profit-loss, balance-sheet, cashflow-chart, aging-report, business-overview - Complete TypeScript types for all Wave API entities - Full MCP server implementation (server.ts, main.ts) - Comprehensive README with examples and API documentation - Clean build, ready for production use
268 lines
10 KiB
TypeScript
268 lines
10 KiB
TypeScript
/**
|
|
* Wave MCP Apps
|
|
* Pre-built UI applications for common workflows
|
|
*/
|
|
|
|
export const waveApps = [
|
|
{
|
|
name: 'invoice-dashboard',
|
|
displayName: 'Invoice Dashboard',
|
|
description: 'Overview of all invoices with status breakdown, recent activity, and aging analysis',
|
|
category: 'invoicing',
|
|
defaultTools: ['wave_list_invoices', 'wave_get_invoice', 'wave_list_invoice_payments'],
|
|
layout: {
|
|
type: 'dashboard',
|
|
widgets: [
|
|
{ type: 'status-cards', tools: ['wave_list_invoices'], groupBy: 'status' },
|
|
{ type: 'table', tool: 'wave_list_invoices', columns: ['invoiceNumber', 'customer', 'status', 'total', 'amountDue', 'dueDate'] },
|
|
{ type: 'chart', chartType: 'bar', tool: 'wave_list_invoices', x: 'status', y: 'total' },
|
|
],
|
|
},
|
|
},
|
|
{
|
|
name: 'invoice-detail',
|
|
displayName: 'Invoice Detail View',
|
|
description: 'Detailed view of a single invoice with line items, payments, and actions',
|
|
category: 'invoicing',
|
|
defaultTools: ['wave_get_invoice', 'wave_list_invoice_payments', 'wave_send_invoice', 'wave_create_invoice_payment'],
|
|
layout: {
|
|
type: 'detail',
|
|
sections: [
|
|
{ type: 'header', fields: ['invoiceNumber', 'status', 'customer', 'total', 'amountDue'] },
|
|
{ type: 'line-items', tool: 'wave_get_invoice', path: 'items' },
|
|
{ type: 'payments', tool: 'wave_list_invoice_payments' },
|
|
{ type: 'actions', buttons: ['send', 'mark-sent', 'record-payment', 'approve'] },
|
|
],
|
|
},
|
|
},
|
|
{
|
|
name: 'invoice-builder',
|
|
displayName: 'Invoice Builder',
|
|
description: 'Create and edit invoices with line items, customer selection, and tax calculation',
|
|
category: 'invoicing',
|
|
defaultTools: ['wave_create_invoice', 'wave_update_invoice', 'wave_list_customers', 'wave_list_products', 'wave_list_taxes'],
|
|
layout: {
|
|
type: 'form',
|
|
sections: [
|
|
{ type: 'customer-select', tool: 'wave_list_customers' },
|
|
{ type: 'date-fields', fields: ['invoiceDate', 'dueDate'] },
|
|
{ type: 'line-item-editor', productTool: 'wave_list_products', taxTool: 'wave_list_taxes' },
|
|
{ type: 'total-calculator', showTax: true, showSubtotal: true },
|
|
{ type: 'submit', createTool: 'wave_create_invoice', updateTool: 'wave_update_invoice' },
|
|
],
|
|
},
|
|
},
|
|
{
|
|
name: 'customer-detail',
|
|
displayName: 'Customer Detail',
|
|
description: 'Customer profile with contact info, invoices, and payment history',
|
|
category: 'customers',
|
|
defaultTools: ['wave_get_customer', 'wave_update_customer', 'wave_list_invoices'],
|
|
layout: {
|
|
type: 'detail',
|
|
sections: [
|
|
{ type: 'profile', fields: ['name', 'email', 'phone', 'address'] },
|
|
{ type: 'invoices', tool: 'wave_list_invoices', filter: { customerId: 'current' } },
|
|
{ type: 'statistics', metrics: ['totalInvoiced', 'totalPaid', 'outstandingBalance'] },
|
|
],
|
|
},
|
|
},
|
|
{
|
|
name: 'customer-grid',
|
|
displayName: 'Customer Grid',
|
|
description: 'Searchable, sortable grid of all customers with quick actions',
|
|
category: 'customers',
|
|
defaultTools: ['wave_list_customers', 'wave_search_customers', 'wave_create_customer'],
|
|
layout: {
|
|
type: 'grid',
|
|
columns: ['name', 'email', 'city', 'outstandingBalance', 'actions'],
|
|
features: ['search', 'sort', 'filter', 'create'],
|
|
actions: ['view', 'edit', 'create-invoice'],
|
|
},
|
|
},
|
|
{
|
|
name: 'product-catalog',
|
|
displayName: 'Product Catalog',
|
|
description: 'Manage products and services with pricing and account mapping',
|
|
category: 'products',
|
|
defaultTools: ['wave_list_products', 'wave_create_product', 'wave_update_product', 'wave_delete_product'],
|
|
layout: {
|
|
type: 'grid',
|
|
columns: ['name', 'description', 'unitPrice', 'incomeAccount', 'actions'],
|
|
features: ['search', 'filter', 'create', 'archive'],
|
|
filters: ['isSold', 'isBought', 'isArchived'],
|
|
},
|
|
},
|
|
{
|
|
name: 'chart-of-accounts',
|
|
displayName: 'Chart of Accounts',
|
|
description: 'View and manage the chart of accounts with balances',
|
|
category: 'accounting',
|
|
defaultTools: ['wave_list_accounts', 'wave_create_account', 'wave_update_account'],
|
|
layout: {
|
|
type: 'tree',
|
|
groupBy: 'type',
|
|
columns: ['name', 'type', 'subtype', 'balance', 'actions'],
|
|
features: ['create', 'edit', 'expand-collapse'],
|
|
},
|
|
},
|
|
{
|
|
name: 'transaction-feed',
|
|
displayName: 'Transaction Feed',
|
|
description: 'Real-time feed of all transactions with filtering and search',
|
|
category: 'accounting',
|
|
defaultTools: ['wave_list_transactions', 'wave_get_transaction', 'wave_categorize_transaction'],
|
|
layout: {
|
|
type: 'feed',
|
|
columns: ['date', 'description', 'account', 'amount', 'actions'],
|
|
features: ['date-filter', 'account-filter', 'search'],
|
|
actions: ['view', 'categorize', 'view-attachments'],
|
|
},
|
|
},
|
|
{
|
|
name: 'transaction-categorizer',
|
|
displayName: 'Transaction Categorizer',
|
|
description: 'Bulk categorize uncategorized transactions',
|
|
category: 'accounting',
|
|
defaultTools: ['wave_list_transactions', 'wave_categorize_transaction', 'wave_list_accounts'],
|
|
layout: {
|
|
type: 'workflow',
|
|
steps: [
|
|
{ type: 'filter', label: 'Select uncategorized transactions' },
|
|
{ type: 'categorize', accountTool: 'wave_list_accounts' },
|
|
{ type: 'review', showSummary: true },
|
|
{ type: 'submit', tool: 'wave_categorize_transaction', batch: true },
|
|
],
|
|
},
|
|
},
|
|
{
|
|
name: 'bill-manager',
|
|
displayName: 'Bill Manager',
|
|
description: 'Track and pay bills (accounts payable)',
|
|
category: 'bills',
|
|
defaultTools: ['wave_list_bills', 'wave_get_bill', 'wave_create_bill', 'wave_create_bill_payment'],
|
|
layout: {
|
|
type: 'dashboard',
|
|
widgets: [
|
|
{ type: 'status-cards', tool: 'wave_list_bills', groupBy: 'status' },
|
|
{ type: 'table', tool: 'wave_list_bills', columns: ['billNumber', 'vendor', 'status', 'total', 'amountDue', 'dueDate'] },
|
|
{ type: 'actions', buttons: ['create-bill', 'record-payment'] },
|
|
],
|
|
},
|
|
},
|
|
{
|
|
name: 'estimate-builder',
|
|
displayName: 'Estimate Builder',
|
|
description: 'Create and manage estimates (quotes) for customers',
|
|
category: 'estimates',
|
|
defaultTools: ['wave_create_estimate', 'wave_update_estimate', 'wave_send_estimate', 'wave_convert_estimate_to_invoice'],
|
|
layout: {
|
|
type: 'form',
|
|
sections: [
|
|
{ type: 'customer-select', tool: 'wave_list_customers' },
|
|
{ type: 'date-fields', fields: ['estimateDate', 'expiryDate'] },
|
|
{ type: 'line-item-editor', productTool: 'wave_list_products', taxTool: 'wave_list_taxes' },
|
|
{ type: 'total-calculator' },
|
|
{ type: 'submit', createTool: 'wave_create_estimate', updateTool: 'wave_update_estimate' },
|
|
{ type: 'actions', buttons: ['send', 'convert-to-invoice'] },
|
|
],
|
|
},
|
|
},
|
|
{
|
|
name: 'tax-overview',
|
|
displayName: 'Tax Overview',
|
|
description: 'View and manage sales taxes',
|
|
category: 'taxes',
|
|
defaultTools: ['wave_list_taxes', 'wave_create_tax', 'wave_tax_summary'],
|
|
layout: {
|
|
type: 'dashboard',
|
|
widgets: [
|
|
{ type: 'tax-list', tool: 'wave_list_taxes' },
|
|
{ type: 'tax-summary', tool: 'wave_tax_summary', dateRange: 'current-quarter' },
|
|
{ type: 'actions', buttons: ['create-tax'] },
|
|
],
|
|
},
|
|
},
|
|
{
|
|
name: 'profit-loss',
|
|
displayName: 'Profit & Loss Report',
|
|
description: 'Income statement showing revenue, expenses, and net income',
|
|
category: 'reporting',
|
|
defaultTools: ['wave_profit_and_loss'],
|
|
layout: {
|
|
type: 'report',
|
|
reportType: 'profitAndLoss',
|
|
features: ['date-range-selector', 'export-pdf', 'export-csv'],
|
|
sections: [
|
|
{ type: 'summary', metrics: ['revenue', 'expenses', 'netIncome'] },
|
|
{ type: 'breakdown', groupBy: 'section' },
|
|
],
|
|
},
|
|
},
|
|
{
|
|
name: 'balance-sheet',
|
|
displayName: 'Balance Sheet',
|
|
description: 'Statement of assets, liabilities, and equity',
|
|
category: 'reporting',
|
|
defaultTools: ['wave_balance_sheet'],
|
|
layout: {
|
|
type: 'report',
|
|
reportType: 'balanceSheet',
|
|
features: ['date-selector', 'export-pdf', 'export-csv'],
|
|
sections: [
|
|
{ type: 'summary', metrics: ['assets', 'liabilities', 'equity'] },
|
|
{ type: 'breakdown', groupBy: 'section' },
|
|
],
|
|
},
|
|
},
|
|
{
|
|
name: 'cashflow-chart',
|
|
displayName: 'Cashflow Chart',
|
|
description: 'Visual cashflow statement with operating, investing, and financing activities',
|
|
category: 'reporting',
|
|
defaultTools: ['wave_cashflow'],
|
|
layout: {
|
|
type: 'chart-report',
|
|
reportType: 'cashflow',
|
|
chartType: 'waterfall',
|
|
features: ['date-range-selector'],
|
|
sections: [
|
|
{ type: 'chart', metrics: ['operatingActivities', 'investingActivities', 'financingActivities', 'netCashChange'] },
|
|
{ type: 'summary-table' },
|
|
],
|
|
},
|
|
},
|
|
{
|
|
name: 'aging-report',
|
|
displayName: 'Aged Receivables Report',
|
|
description: 'Accounts receivable aging showing overdue invoices by customer',
|
|
category: 'reporting',
|
|
defaultTools: ['wave_aged_receivables'],
|
|
layout: {
|
|
type: 'report',
|
|
reportType: 'agedReceivables',
|
|
features: ['date-selector', 'export-csv'],
|
|
sections: [
|
|
{ type: 'summary', metrics: ['total', 'current', 'overdue'] },
|
|
{ type: 'table', columns: ['customer', 'total', 'current', 'days1to30', 'days31to60', 'days61to90', 'over90'] },
|
|
],
|
|
},
|
|
},
|
|
{
|
|
name: 'business-overview',
|
|
displayName: 'Business Overview',
|
|
description: 'High-level business metrics and quick access to common tasks',
|
|
category: 'general',
|
|
defaultTools: ['wave_get_current_business', 'wave_list_invoices', 'wave_list_bills', 'wave_profit_and_loss'],
|
|
layout: {
|
|
type: 'dashboard',
|
|
widgets: [
|
|
{ type: 'business-info', tool: 'wave_get_current_business' },
|
|
{ type: 'quick-stats', metrics: ['totalRevenue', 'outstandingInvoices', 'unpaidBills'] },
|
|
{ type: 'recent-invoices', tool: 'wave_list_invoices', limit: 5 },
|
|
{ type: 'quick-actions', buttons: ['create-invoice', 'create-estimate', 'record-transaction'] },
|
|
],
|
|
},
|
|
},
|
|
];
|