accounting
Wave
Connect Wave to Elaichi and hand every teammate a governed MCP endpoint — 51 tools ready to call from Claude, Cursor, or any MCP client, clamped by roles, restrictions, and an audit log.
AI tools
Wave tools for your AI agents
51 tools are ready to mint as an MCP endpoint the moment you connect Wave — governed by the same roles, restrictions, and audit log as everything else in Elaichi.
wave_users_me
Get the currently authenticated Wave user. Returns: id, defaultEmail, firstName, lastName, createdAt, modifiedAt.
create_a_wave_account
Create a Wave account via the accountCreate mutation. Required input: businessId, name, subtype. Returns the created account with id, name, currency, type, and subtype. inputErrors[] surfaces field-level validation failures.
delete_a_wave_account_by_id
Delete (archive) a Wave account via the accountArchive mutation. Required: input.id (account ID). Returns didSucceed and any inputErrors for validation failures.
update_a_wave_account_by_id
Update (patch) a Wave account via the accountPatch mutation. Required input fields: id, sequence. Optional: name, description, displayId. Returns the patched account and any inputErrors for validation failures.
create_a_wave_customer
Create a Wave customer via the customerCreate mutation. Required: input (object with businessId, name). Returns the created customer. inputErrors[] surfaces field-level validation failures.
delete_a_wave_customer_by_id
Delete a Wave customer via the customerDelete mutation. Required: input.id (customer ID). Returns didSucceed and inputErrors[] for validation failures.
update_a_wave_customer_by_id
Update (patch) a Wave customer via the customerPatch mutation. Input requires customer id and any fields to update. Returns the patched customer and inputErrors[] for field-level validation failures.
list_all_wave_account_subtypes
List account subtypes in Wave's Chart of Accounts. Returns: name, value, type (with normalBalanceType), archivable, systemCreated, description.
list_all_wave_account_types
List Wave account types (e.g. Asset, Equity, Expense, Income, Liability). Returns: name, normalBalanceType, value. No pagination; returns all types in a single response.
list_all_wave_businesses
List businesses on Wave. Returns: id, name, isPersonal, currency, timezone, phone, website, isArchived. Offset-paginated via page/pageSize.
get_single_wave_business_by_id
Get a Wave business by ID. If no ID is provided and the token is scoped to one business, returns that business; otherwise returns the user's default business. Returns: id, name, currency, address, phone, timezone.
list_all_wave_countries
List all countries in Wave. Returns: code (ISO 3166-1 alpha-2), name, nameWithArticle, and default currency details. No pagination — returns the full list.
get_single_wave_country_by_id
Get a country by its ISO 3166-1 alpha-2 code from Wave. Returns: code, name, nameWithArticle, default currency, and provinces.
list_all_wave_currencies
List all ISO 4217 currencies available in Wave. Returns: code, symbol, name, plural, exponent. No pagination; returns the full set.
get_single_wave_currency_by_id
Get a Wave currency by ISO 4217 code. Required: code (CurrencyCode). Returns: code, symbol, name, plural, exponent.
create_a_wave_estimate
Create a Wave estimate via the estimateCreate mutation. Required input: businessId, customerId. Returns the created estimate with id, status, estimateNumber, and validation errors on failure.
delete_a_wave_estimate_by_id
Delete a Wave estimate via the estimateDelete mutation. Required: input.estimateId. Returns didSucceed and inputErrors for validation failures.
update_a_wave_estimate_by_id
Update a Wave estimate via the estimatePatch mutation. Required: input (object with id, customerId, status, title, estimateDate, currency, exchangeRate, dueDate). Returns the updated estimate and inputErrors for validation failures.
wave_estimates_convert_to_invoice
Convert a Wave estimate into an invoice via convertEstimateToInvoice. Required: input.estimateId. Returns: invoiceId, didSucceed. inputErrors[] surfaces field-level validation failures.
wave_estimates_approve
Approve a Wave estimate via the estimateApprove mutation. Required input: estimateId. Returns the approved estimate and any validation errors.
wave_estimates_clone
Clone a Wave estimate via the estimateClone mutation. Required input: estimateId. Returns the cloned estimate with key fields. inputErrors[] surfaces field-level validation failures.
wave_estimates_send_deposit_payment_receipt
Send a receipt for an estimate deposit payment in Wave via estimateDepositPaymentReceiptSend. Required: input (estimateId, estimatePaymentId, to). Returns didSucceed and inputErrors for validation failures.
wave_estimates_generate_pdf
Generate a PDF for a Wave estimate via estimateGeneratePdf mutation. Required: input.estimateId. Returns: pdfUrl, didSucceed, and inputErrors for validation failures.
wave_estimates_mark_accepted
Mark a Wave estimate as accepted via the estimateMarkAccepted mutation. Required input: estimateId. Returns the updated estimate and any validation errors.
wave_estimates_mark_sent
Mark a Wave estimate as sent via the estimateMarkSent mutation. Required input: estimateId, sendMethod. Returns the updated estimate and inputErrors[] for validation failures.
wave_estimates_reset_acceptance
Reset the acceptance status of a Wave estimate via estimateResetAcceptance. Required input: estimateId. Returns the reset estimate and any validation errors.
wave_estimates_send
Send a Wave estimate via the estimateSend mutation. Required input: estimateId, to (email addresses). Returns the sent estimate and any inputErrors for validation failures.
wave_estimates_send_acceptance_customer_email
Send acceptance notification email to customer for a Wave estimate via estimateSendAcceptanceCustomerEmail mutation. Required: input with estimateId. Returns didSucceed, estimate details, and inputErrors for validation failures.
delete_a_wave_estimate_payment_by_id
Delete a Wave estimate manual payment via estimatePaymentDelete. Required: input.id (estimate payment ID). Returns didSucceed and inputErrors for validation failures.
delete_a_wave_invoice_payment_by_id
Delete a manual invoice payment in Wave via invoicePaymentDelete. Required: input.id (invoice payment ID). Returns didSucceed and inputErrors for validation failures.
update_a_wave_invoice_payment_by_id
Update a Wave invoice payment via invoicePaymentPatch. Required: input (object with id and optional fields like amount, paymentDate, paymentMethod, memo, exchangeRate, paymentAccountId). Returns the updated invoice payment and any inputErrors.
create_a_wave_invoice_payment
Record a manual payment against a Wave invoice via invoicePaymentCreateManual. Required: input (invoiceId, paymentAccountId, amount, paymentDate, paymentMethod, exchangeRate). Returns the created invoicePayment and any inputErrors.
create_a_wave_invoice
Create a Wave invoice via the invoiceCreate mutation. Required input: businessId, customerId. Returns the created invoice with key fields. inputErrors[] surfaces field-level validation failures.
update_a_wave_invoice_by_id
Update (patch) a Wave invoice via the invoicePatch mutation. Required: input.id. Only provided fields are updated. Returns the patched invoice and inputErrors[] for field-level validation failures.
delete_a_wave_invoice_by_id
Delete a Wave invoice via the invoiceDelete mutation. Required: input.invoiceId. Returns didSucceed and inputErrors[] for validation failures.
wave_invoices_approve
Approve a Wave invoice via the invoiceApprove mutation. Required: input.invoiceId. Returns the approved invoice and any validation errors.
wave_invoices_clone
Clone a Wave invoice via the invoiceClone mutation. Required: input.invoiceId. Returns the cloned invoice with key fields. inputErrors[] surfaces validation failures.
wave_invoices_mark_sent
Mark a Wave invoice as sent via the invoiceMarkSent mutation. Required input: invoiceId, sendMethod. Optional: sentAt. Returns the updated invoice and any inputErrors for validation failures.
wave_invoices_send_payment_receipt
Send an invoice payment receipt email in Wave via invoicePaymentReceiptSend. Required input: invoiceId, invoicePaymentId, to (email addresses). Returns didSucceed and inputErrors for validation.
wave_invoices_send
Send a Wave invoice via the invoiceSend mutation. Requires Business.emailSendEnabled to be true. Input: invoiceId, to (email addresses), subject, message, attachPDF, fromAddress, ccMyself. Returns the sent invoice and any input errors.
create_a_wave_money_deposit_transaction
Create a money deposit transaction in Wave via moneyDepositTransactionCreate. Required input: businessId, date, description, deposit, lineItems, origin. Returns didSucceed and inputErrors for validation.
create_a_wave_money_transaction
Create a Wave money transaction via moneyTransactionCreate mutation (BETA). Requires isClassicAccounting to be false. Input includes businessId, externalId, date, description, anchor, and lineItems. inputErrors[] surfaces field-level validation failures.
wave_money_transactions_bulk_create
Bulk create money transactions in Wave via moneyTransactionsCreate mutation. BETA: requires isClassicAccounting to be false. Input: businessId, transactions array. Returns created transaction ids and inputErrors for validation failures.
get_single_wave_o_auth_application_by_id
Get the current OAuth application in Wave. Returns: id, name, description, clientId, extraData, createdAt, modifiedAt.
create_a_wave_product
Create a product in Wave via the productCreate mutation. Required input: businessId, name, unitPrice. Returns the created product and any inputErrors for validation failures.
update_a_wave_product_by_id
Update a Wave product via the productPatch mutation. Input requires product id; optional fields: name, description, unitPrice, defaultSalesTaxIds, incomeAccountId, expenseAccountId. Returns updated product and inputErrors for validation failures.
delete_a_wave_product_by_id
Delete (archive) a Wave product via the productArchive mutation. Requires input with the product ID. Returns the archived product and any validation errors.
get_single_wave_province_by_id
Get a Wave province (state/county/region) by its ISO 3166-2 code. Returns: code, name.
create_a_wave_sales_tax
Create a sales tax in Wave via the salesTaxCreate mutation. Required input: businessId, name, abbreviation, rate. Returns the created sales tax. inputErrors[] surfaces field-level validation failures.
update_a_wave_sales_tax_by_id
Update a Wave sales tax via the salesTaxPatch mutation. Required: input (object with id and optional name, abbreviation, description, taxNumber, rates). Returns the updated sales tax and any inputErrors for validation failures.
delete_a_wave_sales_tax_by_id
Delete (archive) a Wave sales tax via the salesTaxArchive mutation. Required: input with sales tax ID. Returns the archived sales tax and validation errors if any.
How it works
From Wave account to governed MCP endpoint
Connect
Link a Wave account through Elaichi's hosted connect flow. Credentials are vaulted — nobody, including the AI, ever sees them.
Compose
The connection becomes a toolbox instantly. Curate which Wave tools are exposed, rename them, or freeze arguments.
Mint
Mint a personal MCP endpoint on that toolbox and paste it into Claude, Cursor, or any MCP client — governed by roles, restrictions, and audit logs.
Give every teammate a governed MCP server
Start a 14-day Gold trial — connect a product, curate a toolbox, and paste an endpoint into Claude or Cursor in minutes.