Wave MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| WAVE_BUSINESS_ID | No | Set automatically by auth_flow.py, or manually | |
| WAVE_ACCESS_TOKEN | Yes | Full Access token from Wave app settings |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| accountA | Chart of Accounts management in Wave. Operations: Read: list, get, search Write: create, update, archive Args: operation: One of the operations listed above. account_id: Account ID (base64 string, required for get/update/archive). data: Dict of fields for create/update. Key fields: - name (str, required for create) - subtype (str, AccountSubtypeValue enum) - currency (str, currency code) - description (str) query: Search text for search operation (matches name, client-side). types: Filter by AccountTypeValue list (e.g. ["ASSET", "LIABILITY"]). subtypes: Filter by AccountSubtypeValue list. page: Page number (default 1). page_size: Results per page (default 50). Returns: JSON string with account data or {"error": "..."}. |
| partyA | Customer and vendor management in Wave. NOTE: Vendors are read-only in the Wave API (no create/update/delete mutations). Operations: Read: list, get, search (both customer and vendor) Write: create, update, delete (customer only) Args: operation: One of the operations listed above. party_type: One of: customer, vendor. party_id: Entity ID (base64 string, required for get/update/delete). data: Dict of fields for create/update. Key customer fields: - name (str, required for create) - firstName, lastName (str) - email (str) - phone (str) - address (dict: addressLine1, addressLine2, city, postalCode, countryCode, provinceCode) - currency (str, currency code) - shippingDetails (dict: name, phone, address) query: Search text for search operation (matches name, client-side). page: Page number (default 1). page_size: Results per page (default 50). Returns: JSON string with party data or {"error": "..."}. |
| transactionA | Invoice and money transaction management in Wave. Entity types: invoice, money_transaction Invoice operations: Read: list, get, search Write: create, update, delete, clone, send, approve, mark_sent, create_payment Money transaction operations: Write: create, bulk_create (BETA — create only, no list/get/update/delete) Args: operation: One of the operations listed above. entity_type: One of: invoice, money_transaction. entity_id: Transaction ID (base64 string, required for get/update/delete/clone/send/approve/mark_sent). data: Dict of fields for create/update. Invoice create: customerId, items (list of {productId, description, quantity, unitPrice, accountId}), invoiceDate, dueDate, memo, currency Invoice create_payment: invoiceId, paymentAccountId, amount, paymentDate, paymentMethod (BANK_TRANSFER|CASH|CHEQUE|CREDIT_CARD|OTHER|PAY_PAL), memo Money transaction create: anchor (dict with accountId, amount, direction: DEPOSIT|WITHDRAWAL), lineItems (list of {accountId, amount, balance}), externalId, description Money transaction bulk_create: transactions (list of individual create inputs) query: Search text for search operation (matches invoiceNumber, customer name, memo). page: Page number (default 1). page_size: Results per page (default 50). Returns: JSON string with transaction data or {"error": "..."}. |
| itemA | Products & services management in Wave. Operations: Read: list, get, search Write: create, update, archive Args: operation: One of the operations listed above. item_id: Product ID (base64 string, required for get/update/archive). data: Dict of fields for create/update. Key fields: - name (str, required for create) - description (str) - unitPrice (decimal as string, e.g. "19.99") - isSold (bool) - isBought (bool) - incomeAccountId (str, account ID) - expenseAccountId (str, account ID) - defaultSalesTaxIds (list of tax IDs) query: Search text for search operation (matches name, client-side). page: Page number (default 1). page_size: Results per page (default 50). Returns: JSON string with product data or {"error": "..."}. |
| referenceA | Lookup data, settings, sales taxes, and estimates in Wave. Read operations: list_businesses, get_business, get_user, list_currencies, list_countries, list_account_types, list_account_subtypes, list_sales_taxes, get_sales_tax, list_estimates, get_estimate Write operations (sales taxes only): create_sales_tax, update_sales_tax, archive_sales_tax Args: operation: One of the operations listed above. entity_id: Entity ID (base64 string, for get_sales_tax/update_sales_tax/archive_sales_tax/get_estimate). data: Dict of fields for create/update sales tax: - name (str, required for create) - abbreviation (str) - rate (str, decimal percentage e.g. "13.0") - isCompound (bool) - isRecoverable (bool) page: Page number (for list_estimates, default 1). page_size: Results per page (for list_estimates, default 50). Returns: JSON string with reference data or {"error": "..."}. |
| reportA | Synthesized financial summaries from Wave data. Wave has no report API. These are built from raw account/customer data. Operations: business_summary — Business info + accounts grouped by type with counts account_balances — All accounts with name, type, subtype, and balance info customer_balances — All customers with outstanding and overdue amounts Args: operation: One of the operations listed above. Returns: JSON string with synthesized report data or {"error": "..."}. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 6 tools
Each tool focuses on a distinct domain (accounts, items, parties, reference data, reports, transactions), making it easy for an agent to select the right tool based on context. However, the 'reference' tool aggregates many unrelated operations (business info, countries, sales taxes, estimates), which could cause confusion. Overall, ambiguity is low.
Tool names are single-word nouns (account, item, party, etc.), consistent in form. However, operations within tools follow different patterns: most use standard verbs (list, get, create, update, delete), but 'reference' uses descriptive names like 'list_businesses' and 'list_currencies', and 'report' uses compound names like 'business_summary'. This mix reduces overall consistency.
With 6 tools covering major Wave entities (accounts, products, customers, transactions, reference data, reports), the count is well-scoped for an accounting MCP server. Each tool earns its place by handling a core domain, and there are no redundant or missing high-level categories.
The tool set covers essential CRUD operations for accounts, items, customers, and transactions, plus reference lookups and synthesized reports. Notable gaps include limited vendor management (read-only), no dedicated bill/expense tool (though money transactions may cover it), and read-only estimates. The surface is mostly complete for typical accounting workflows.