Skip to main content
Glama

Record invoice payment

wave_record_invoice_payment

Records an off-platform payment (cash, cheque, bank transfer) against an approved invoice and assigns it to the account that received the funds.

Instructions

Record a payment received outside Wave against an invoice (cash, cheque, bank transfer...). paymentAccountId is the account the money went into (usually types=[ASSET] subtypes=[CASH_AND_BANK]). The invoice must be approved, not a draft.

Input Schema

NameRequiredDescriptionDefault
memoNo
amountYesPositive amount, at most 2 decimals
invoiceIdYesInvoice ID
paymentDateYesDate, YYYY-MM-DD
exchangeRateNoPayment-account currency per invoice currency; 1 when they match
paymentMethodYes
paymentAccountIdYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.0.0

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this is a non-read-only, non-destructive mutation, and the description adds genuine context beyond them: the approved-invoice prerequisite and the account-selection hint. However, the annotations mark idempotentHint=false, and the description never warns that calling it twice creates a duplicate payment, nor does it say whether a recorded payment can be corrected or reversed (via wave_update_invoice_payment / wave_delete_invoice_payment).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences: what it does, how to pick the account, and the precondition. No filler, and the purpose is front-loaded ahead of the constraint.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter mutation with no output schema, the description covers purpose, account selection, and the approval precondition, but leaves the agent without any statement of what comes back (a payment id usable with wave_get_invoice_payment / wave_send_invoice_payment_receipt?) or how multi-currency exchangeRate behaves in practice. Adequate to call, not complete enough to be confident about the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With schema coverage at 57%, the description compensates for the biggest undocumented parameter: paymentAccountId is explained as the account the money landed in, with concrete guidance (types=[ASSET] subtypes=[CASH_AND_BANK]). The listed payment methods (cash, cheque, bank transfer) also map onto the paymentMethod enum. It adds nothing for memo, amount, or exchangeRate, but those are already documented in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Record a payment received outside Wave against an invoice" states a specific verb (record) plus resource (invoice payment) and scopes it to off-platform payments, which separates it from the estimate-deposit and online-payment siblings. It stops short of naming an alternative tool outright, but the resource is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase "received outside Wave" tells the agent when this is the right tool, and "The invoice must be approved, not a draft" is an explicit precondition that prevents a common failure. There is no explicit when-not guidance (e.g., for already-recorded or externally-synced payments) or pointer to wave_update_invoice_payment when a payment was entered incorrectly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools