MCP · Invoices
Create a draft invoice
Creates a draft sales invoice for a registered customer, or for a new customer together with it. The customer is found from what the user said, and the user reviews the draft before it is created. It is never sent here; use send_invoice for that.
Description for models
Sent verbatim in tools/list. It's written for the model, so it says when to use the tool.
Arguments
Who the invoice is for, in the user's own words: a name or part of one, a contact person, an email address, a KvK number or a VAT number. Or a customer id from an earlier reply of this tool. Never a name you chose from a list yourself.
YYYY-MM-DD. Omit to use the customer's payment term.
YYYY-MM-DD. Omit for today.
One entry per invoice line: what was delivered, as the user said it.
One entry per line, in the same order: how many, such as hours or pieces.
One entry per line, in the same order: the price of one unit EXCLUDING VAT, in the invoice currency, as a decimal string such as "95" or "95.50". If the user gave a price including VAT, ask for the price excluding VAT.
One entry per line, in the same order: the VAT rate in percent, such as 21 or 9. Omit the whole list only when the user named no rate; the reply then asks for one, unless the last invoice to this customer used one rate.
Two letters, such as NL or BE.
Where invoices for the new customer go. Without it, the invoice cannot be sent from here.
The Dutch Chamber of Commerce number.
Only after this tool said no customer matches, or the user said the customer is new: its official name, as the user gave it. Pass it instead of customer. Never look up or guess any new_customer_ field.
A note printed on the invoice.
The customer's purchase order number.
Only from an earlier reply of this tool, and only after the user agreed to the review it showed.
Added by the server
On every tool that acts on one companyThe id of the company this applies to. This connection covers a single company, which is filled in for you, so you can leave this out.
Result
content[0].text, starting with Company: and the company name.isError: true. The text says what went wrong and what to tell the user.workspace argument, the server asks which company the call is for. A client that can't ask gets an error that lists the companies.Tools return plain text with no output schema. This example follows the tool's real format, but the values are made up.