Create quote
Create a draft quote for a client with line items and a valid-until date.
MCP tool invoice_ninja_write → create_quote
Creates a quote as a draft and returns its number and total. A quote has no effect on the client balance until it becomes an invoice, and a draft is invisible to the client until you send it with send_quote. Valid until is optional; when the client record sets a default quote validity period, Invoice Ninja applies it. create_quote runs without asking first: a draft reaches nobody and you can delete it in Invoice Ninja.
Parameters
| Name | Type | Description |
|---|---|---|
| company string | string | Company name, for accounts with several companies. Default: the company open when you signed in. |
| client_id string required | string | Client ID from list_clients or create_client. |
| items array required | array | Line items. Each has product (name from list_products or free text), description, unit_cost and quantity (decimals allowed). |
| quote_date date | date | Default: today. |
| valid_until date | date | Expiry date of the price. Default: none, or the validity period set on the client. |
| public_notes string | string | Note the client sees on the quote. |
tools/call
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "invoice_ninja_write",
"arguments": {
"operation": "create_quote",
"arguments": {
"client_id": "client_8c41d2",
"items": "items"
}
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"quote_number": "Q-0017",
"client": "Kestrel Labs",
"status": "draft",
"quote_date": "2026-10-14",
"valid_until": "2026-11-13",
"currency": "USD",
"items": [
{
"product": "Brand refresh",
"description": "Brand refresh, fixed price",
"unit_cost": 2400,
"quantity": 1,
"line_total": 2400
}
],
"amount": 2400
},
"isError": false
}