Free invoice drafts, templates and direct PDF generation for AI agents. No account needed.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Price an invoice (subtotal, tax after discount, shipping, total) and get a builderUrl that opens the free AI Invoice Generator builder prefilled. The human can download a PDF there, or connect Stripe to get a pay link that accepts partial payments. Nothing is stored or sent.
The business sending the invoice. On create, leave it out to use the connected Stripe business's name and email.
The customer. name is required; email is prefilled at checkout.
Your invoice number, e.g. INV-1042
Optional shipping address
YYYY-MM-DD. The invoice reads overdue the day after.
Percent. Applied after discount, not to shipping.
Minor units, taken off the subtotal
Minor units, added after tax
YYYY-MM-DD
Smallest partial payment in minor units (e.g. a deposit). The full balance is always payable.
Let the payer pay part of the balance now
Price an invoice (subtotal, tax after discount, shipping, total) and get a builderUrl that opens the free AI Invoice Generator builder prefilled. The human can download a PDF there, or connect Stripe to get a pay link that accepts partial payments. Nothing is stored or sent.
| Argument | Type | Description |
|---|---|---|
| from | object | The business sending the invoice. On create, leave it out to use the connected Stripe business's name and email. |
| items* | array | |
| notes | string | |
| terms | string | |
| billTo | object | The customer. name is required; email is prefilled at checkout. |
| number | string | Your invoice number, e.g. INV-1042 |
| shipTo | object | Optional shipping address |
| dueDate | string | YYYY-MM-DD. The invoice reads overdue the day after. |
| taxRate | number | Percent. Applied after discount, not to shipping. |
| currency | string | |
| discount | integer | Minor units, taken off the subtotal |
| shipping | integer | Minor units, added after tax |
| issueDate | string | YYYY-MM-DD |
| minPayment | integer | Smallest partial payment in minor units (e.g. a deposit). The full balance is always payable. |
| allowPartial | boolean | Let the payer pay part of the balance now |
{
"type": "object",
"required": [
"items"
],
"properties": {
"from": {
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 200
},
"email": {
"type": "string",
"format": "email"
},
"address": {
"type": "string",
"maxLength": 500,
"description": "Multi-line postal address"
}
},
"description": "The business sending the invoice. On create, leave it out to use the connected Stripe business's name and email."
},
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"description",
"quantity",
"unitPrice"
],
"properties": {
"quantity": {
"type": "number",
"minimum": 0,
"description": "May be fractional, e.g. 1.5 hours"
},
"unitPrice": {
"type": "integer",
"minimum": 0,
"description": "Minor units (cents)"
},
"description": {
"type": "string",
"maxLength": 500
}
}
},
"maxItems": 100,
"minItems": 1
},
"notes": {
"type": "string",
"maxLength": 2000
},
"terms": {
"type": "string",
"maxLength": 2000
},
"billTo": {
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 200
},
"email": {
"type": "string",
"format": "email"
},
"address": {
"type": "string",
"maxLength": 500,
"description": "Multi-line postal address"
}
},
"description": "The customer. name is required; email is prefilled at checkout."
},
"number": {
"type": "string",
"maxLength": 40,
"description": "Your invoice number, e.g. INV-1042"
},
"shipTo": {
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 200
},
"email": {
"type": "string",
"format": "email"
},
"address": {
"type": "string",
"maxLength": 500,
"description": "Multi-line postal address"
}
},
"description": "Optional shipping address"
},
"dueDate": {
"type": "string",
"format": "date",
"description": "YYYY-MM-DD. The invoice reads overdue the day after."
},
"taxRate": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "Percent. Applied after discount, not to shipping."
},
"currency": {
"enum": [
"usd",
"cad",
"eur",
"gbp",
"aud",
"nzd"
],
"type": "string",
"default": "usd"
},
"discount": {
"type": "integer",
"minimum": 0,
"description": "Minor units, taken off the subtotal"
},
"shipping": {
"type": "integer",
"minimum": 0,
"description": "Minor units, added after tax"
},
"issueDate": {
"type": "string",
"format": "date",
"description": "YYYY-MM-DD"
},
"minPayment": {
"type": "integer",
"minimum": 0,
"description": "Smallest partial payment in minor units (e.g. a deposit). The full balance is always payable."
},
"allowPartial": {
"type": "boolean",
"description": "Let the payer pay part of the balance now"
}
}
}List five editable sample invoices: hourly consulting, retainers, milestones, contractor labor/materials and deposit requests. Example rates in USD cents, not pricing advice. No account needed.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Select a template by ID and add sender, customer and dates. Returns invoice JSON, calculated totals and an editable builderUrl. Example amounts need review. Nothing stored or sent.
| Argument | Type | Description |
|---|---|---|
| from | object | The business sending the invoice. |
| billTo | object | The customer. name is required; email is prefilled at checkout. |
| number | string | Your invoice number, e.g. INV-1042 |
| dueDate | string | YYYY-MM-DD. The invoice reads overdue the day after. |
| issueDate | string | YYYY-MM-DD |
| templateId* | string |
{
"type": "object",
"required": [
"templateId"
],
"properties": {
"from": {
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 200
},
"email": {
"type": "string",
"format": "email"
},
"address": {
"type": "string",
"maxLength": 500,
"description": "Multi-line postal address"
}
},
"description": "The business sending the invoice."
},
"billTo": {
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 200
},
"email": {
"type": "string",
"format": "email"
},
"address": {
"type": "string",
"maxLength": 500,
"description": "Multi-line postal address"
}
},
"description": "The customer. name is required; email is prefilled at checkout."
},
"number": {
"type": "string",
"maxLength": 40,
"description": "Your invoice number, e.g. INV-1042"
},
"dueDate": {
"type": "string",
"format": "date",
"description": "YYYY-MM-DD. The invoice reads overdue the day after."
},
"issueDate": {
"type": "string",
"format": "date",
"description": "YYYY-MM-DD"
},
"templateId": {
"enum": [
"consulting_hourly",
"consulting_retainer",
"consulting_milestone",
"contractor_labor",
"contractor_deposit"
],
"type": "string"
}
}
}Generate a downloadable PDF artifact without a browser, account or storage. Requires sender/customer names, invoice number, dates and complete line items. Western European text only; unsupported characters or logos return an explicit error, use the web builder for those. Does not send invoices or process payments.
| Argument | Type | Description |
|---|---|---|
| from* | object | The business sending the invoice. |
| items* | array | |
| notes | string | |
| terms | string | |
| billTo* | object | The customer. name is required; email is prefilled at checkout. |
| number* | string | Your invoice number, e.g. INV-1042 |
| shipTo | object | Optional shipping address |
| dueDate* | string | YYYY-MM-DD. The invoice reads overdue the day after. |
| taxRate |
| number |
| Percent. Applied after discount, not to shipping. |
| currency | string |
| discount | integer | Minor units, taken off the subtotal |
| shipping | integer | Minor units, added after tax |
| issueDate* | string | YYYY-MM-DD |
{
"type": "object",
"required": [
"from",
"billTo",
"number",
"issueDate",
"dueDate",
"items"
],
"properties": {
"from": {
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 200
},
"email": {
"type": "string",
"format": "email"
},
"address": {
"type": "string",
"maxLength": 500,
"description": "Multi-line postal address"
}
},
"description": "The business sending the invoice."
},
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"description",
"quantity",
"unitPrice"
],
"properties": {
"quantity": {
"type": "number",
"minimum": 0,
"description": "May be fractional, e.g. 1.5 hours"
},
"unitPrice": {
"type": "integer",
"minimum": 0,
"description": "Minor units (cents)"
},
"description": {
"type": "string",
"maxLength": 500
}
}
},
"maxItems": 100,
"minItems": 1
},
"notes": {
"type": "string",
"maxLength": 2000
},
"terms": {
"type": "string",
"maxLength": 2000
},
"billTo": {
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 200
},
"email": {
"type": "string",
"format": "email"
},
"address": {
"type": "string",
"maxLength": 500,
"description": "Multi-line postal address"
}
},
"description": "The customer. name is required; email is prefilled at checkout."
},
"number": {
"type": "string",
"maxLength": 40,
"description": "Your invoice number, e.g. INV-1042"
},
"shipTo": {
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 200
},
"email": {
"type": "string",
"format": "email"
},
"address": {
"type": "string",
"maxLength": 500,
"description": "Multi-line postal address"
}
},
"description": "Optional shipping address"
},
"dueDate": {
"type": "string",
"format": "date",
"description": "YYYY-MM-DD. The invoice reads overdue the day after."
},
"taxRate": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "Percent. Applied after discount, not to shipping."
},
"currency": {
"enum": [
"usd",
"cad",
"eur",
"gbp",
"aud",
"nzd"
],
"type": "string",
"default": "usd"
},
"discount": {
"type": "integer",
"minimum": 0,
"description": "Minor units, taken off the subtotal"
},
"shipping": {
"type": "integer",
"minimum": 0,
"description": "Minor units, added after tax"
},
"issueDate": {
"type": "string",
"format": "date",
"description": "YYYY-MM-DD"
}
},
"description": "Direct PDF input. Western European (Windows-1252) text only, no logos, no payment ledger. Unknown text is rejected, never silently replaced."
}