wave-mcp-server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| WAVE_BUSINESS_ID | Yes | The business id to operate on. You can find it by running the server with --list-businesses. | |
| WAVE_ACCESS_TOKEN | Yes | Your Wave Full Access Token from the Wave developer portal. Treat it like a password. |
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": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| wave_get_businessA | Show the Wave business this server is pinned to: name, default currency, timezone and whether Wave email sending is enabled. Use it to check the connection before other tools. All wave_* tools act on this one business only. |
| wave_list_customersA | List customers of the pinned Wave business, sorted by name. Filter by exact |
| wave_get_customerA | Get one customer by id, including address, default currency and outstanding/overdue amounts. |
| wave_create_customerA | Create a customer in the pinned Wave business. Check wave_list_customers first to avoid duplicates. Set |
| wave_update_customerB | Change fields on an existing customer. Only the fields you pass are changed. |
| wave_list_productsA | List the products/services the business sells (unarchived), sorted by name. Each invoice line item needs a product id from here. Shows unit price, income account and default sales taxes. |
| wave_list_sales_taxesA | List the business's sales taxes (e.g. HST) with ids and current rates. Use the ids in wave_create_invoice line items ( |
| wave_list_accountsA | List chart-of-accounts entries (unarchived). Filter by |
| wave_create_productA | Create a product/service that can be used on invoice line items. Check wave_list_products first. |
| wave_list_invoicesA | List invoices of the pinned Wave business, newest invoice date first. Filter by status, customer, currency, invoice date range or invoice number (contains match). Returns summaries; use wave_get_invoice for line items and payments. For accounts receivable, list status OVERDUE or UNPAID. |
| wave_get_invoiceA | Get one invoice with line items, taxes, payments, totals, amount due and the PDF and customer-view URLs. |
| wave_create_invoiceA | Create a DRAFT invoice. Nothing is sent and nothing is posted to the books until wave_approve_invoice and wave_send_invoice. Needs a customer id (wave_list_customers) and at least one line item with a product id (wave_list_products). Tax per line: omit sales_tax_ids to use the product's defaults, or pass [] for no tax (zero-rated US/export clients). |
| wave_update_invoiceA | Change a DRAFT invoice. Only the fields you pass are changed, except |
| wave_approve_invoiceA | Approve a DRAFT invoice, which posts it to the books and makes it sendable. It does not email anyone. This is a two-step tool: the first call (confirm omitted) returns a preview and a fingerprint and changes nothing. Show the preview to the user. Only after they agree, call again with confirm: true and the fingerprint. |
| wave_send_invoiceA | Have Wave EMAIL an approved invoice to the given addresses. This reaches a real client and cannot be unsent. The preview shows recipients, subject, totals and tax, and whether a recipient matches the customer's email on file. This is a two-step tool: the first call (confirm omitted) returns a preview and a fingerprint and changes nothing. Show the preview to the user. Only after they agree, call again with confirm: true and the fingerprint. |
| wave_mark_invoice_sentA | Record that an approved invoice was sent outside Wave (e.g. from your own email). Wave emails no one. This is a two-step tool: the first call (confirm omitted) returns a preview and a fingerprint and changes nothing. Show the preview to the user. Only after they agree, call again with confirm: true and the fingerprint. |
| wave_record_paymentA | Record a payment the business has ALREADY received against an approved invoice. This changes the books; it does not move money. |
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 17 tools
Each tool targets a distinct resource+action, and the descriptions carefully delineate the tricky invoice lifecycle tools (create vs approve vs send vs mark_sent) with explicit sequencing notes. An agent can reliably select the right tool for each step.
Every tool follows a strict wave_verb_noun snake_case pattern (wave_list_customers, wave_create_invoice, wave_record_payment), with no deviations in casing or verb style across the set.
17 tools is on the higher side but each covers a genuine entity/action across the customers, products, invoices, taxes, accounts and payments domain. It is well-scoped for a full invoicing lifecycle with only minor redundancy.
The invoice lifecycle is fully covered (create, update, approve, send, record payment), plus customers, products, taxes and accounts. Minor gaps exist: no customer delete/archive and no product update/get, but core workflows have no dead ends.