MCP Server for Wave
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| WAVE_OP_PATH | No | 1Password secret reference to read the token, e.g. op://Vault/Item/credential (optional) | |
| WAVE_TIMEOUT_MS | No | Per-request timeout in milliseconds (optional, default 20000) | 20000 |
| WAVE_BUSINESS_ID | No | Default business ID so tools can omit business_id (optional) | |
| WAVE_ACCESS_TOKEN | Yes | OAuth2 bearer token from the Wave developer portal (required) | |
| WAVE_ALLOW_WRITES | No | Set to 1 to register the 44 tools that change or send data (optional, default off) | 0 |
| WAVE_HTTP_RETRIES | No | Number of retries on 429 and 5xx (optional, default 2) | 2 |
| WAVE_TOTAL_BUDGET_MS | No | Total time for one call including retries in milliseconds (optional, default 50000) | 50000 |
| WAVE_ACCESS_TOKEN_FILE | No | Path to a file containing the access token (optional) | |
| WAVE_MAX_RESPONSE_BYTES | No | Reject responses above this size in bytes (optional, default 8388608) | 8388608 |
| WAVE_DISABLE_AGENT_CONFIG_FALLBACK | No | Set to 1 to read only the environment, not agent config files (optional, default off) | 0 |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| wave_auth_statusA | Report how this server resolved its Wave credentials and whether write tools are enabled. Makes no Wave API request, so it works even when the token is missing or expired -- use it first when other tools report authentication problems. |
| wave_get_userA | Get the Wave user account that owns the current access token. Useful for confirming which account a token authenticates as. |
| wave_list_currenciesA | List the currency codes Wave supports. Wave supports about 160 currencies, so pass search to narrow the list. |
| wave_get_currencyA | Get one currency by ISO 4217 code. |
| wave_list_countriesA | List the countries Wave supports, with each one's default currency. |
| wave_get_countryA | Get one country and its provinces or states. Use this to find the province codes that address fields expect. |
| wave_get_provinceA | Get one province or state by its code. |
| wave_list_account_typesA | List the five top-level account types in Wave's chart of accounts: ASSET, LIABILITY, EQUITY, INCOME, and EXPENSE, each with its normal balance. |
| wave_list_account_subtypesA | List account subtypes -- the value wave_create_account needs. Every account belongs to a subtype (CASH_AND_BANK, EXPENSE, INCOME, ...), which in turn determines its type. Some subtypes are system-created and cannot be used for new accounts. |
| wave_get_oauth_applicationA | Get the OAuth application that issued the current access token. |
| wave_list_businessesA | List the Wave businesses this access token can reach. Start here: every other tool needs a business ID. Pass one to wave_set_default_business so later calls can omit it. |
| wave_get_businessA | Get full detail for one business: currency, address, type, and settings. |
| wave_set_default_businessA | Set the business that later tool calls use when none is given. This is session state on the running server, not a change in Wave. Set WAVE_BUSINESS_ID in the environment to make it persist across restarts. |
| wave_get_invoice_estimate_settingsA | Get the branding applied to invoices and estimates: accent color and logo. |
| wave_list_accountsA | List the chart of accounts, with balances. Filter by type to find the account a transaction needs: EXPENSE for expense categories, INCOME for revenue, ASSET with subtype CASH_AND_BANK for bank accounts, LIABILITY with subtype CREDIT_CARD for cards. |
| wave_get_accountA | Get one account by ID, including its current balance. |
| wave_list_customersA | List customers, with each one's outstanding and overdue balance. Wave can filter by exact email only; name_contains is applied by this server after fetching, so combine it with fetch_all=true when searching a large customer list. |
| wave_get_customerA | Get one customer by ID, including address and shipping details. |
| wave_list_vendorsA | List vendors -- the suppliers a business buys from. Vendors are read-only in Wave's API: they can be listed and read but not created, changed, or deleted. Wave filters by exact email only; name_contains is applied locally, so pair it with fetch_all=true on a long vendor list. |
| wave_get_vendorA | Get one vendor by ID, including address and shipping details. |
| wave_list_productsA | List products and services. Invoice and estimate line items must reference a product, so this is the usual first step when building either one. |
| wave_get_productA | Get one product by ID, including its accounts and default sales taxes. |
| wave_list_sales_taxesA | List sales taxes, with their current rate and rate history. |
| wave_get_sales_taxA | Get one sales tax by ID, including its full rate history. |
| wave_list_invoicesA | List invoices, filtered by status, customer, date range, or amount due. To find unpaid invoices use status "UNPAID"; "OVERDUE" narrows that to ones past their due date. |
| wave_get_invoiceA | Get one invoice in full: line items, taxes, discounts, and payments. |
| wave_get_invoice_paymentA | Get one invoice payment by ID. To see every payment on an invoice, call wave_get_invoice instead: it returns them all. |
| wave_list_estimatesB | List estimates (quotes), filtered by status, customer, or date range. |
| wave_get_estimateA | Get one estimate in full: line items, deposits, and acceptance history. |
| wave_get_estimate_paymentA | Get one estimate deposit payment by ID. To see every deposit on an estimate, call wave_get_estimate with include_deposit_payments=true. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| Wave businesses | Every Wave business this access token can reach, with IDs and currencies. |
| Chart of accounts | The default business's chart of accounts, with types, subtypes, and balances. |
| Customers | The default business's customers, with outstanding and overdue balances. |
| Vendors | The default business's vendors. Read-only: Wave's API has no vendor mutations. |
| Products and services | The default business's products. Invoice and estimate line items must reference one. |
| Sales taxes | The default business's sales taxes, with current rates and rate history. |
| Account type taxonomy | Wave's account types and subtypes -- the vocabulary wave_create_account expects. |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/oliverames/wave-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server