Last updated: .
Public HTTPS connection
MCP endpoint: https://invoice.bestmaker.app/api/mcp
Transport: MCP Streamable HTTP, stateless JSON responses. Use an MCP client that supports remote HTTP servers. Enter the endpoint in its remote-server settings. There is no login, API key, SSH tunnel or local Node installation to configure. This is not a legacy SSE endpoint; opening the API URL in a browser returns a method error, not this guide.
Server-side and desktop MCP clients can connect directly. Browser clients from other websites are not permitted by the Origin policy; there is no wildcard CORS access.
Claude Code
claude mcp add --transport http invoice-best-maker https://invoice.bestmaker.app/api/mcp Visual Studio Code
Add this to .vscode/mcp.json, then start the server from the editor's MCP controls:
{
"servers": {
"invoice-best-maker": {
"type": "http",
"url": "https://invoice.bestmaker.app/api/mcp"
}
}
} Other clients may use a different configuration format. Select Streamable HTTP and the same HTTPS URL; do not configure an SSH or command-based transport.
Available invoice tools
invoice_discover— call with{}to list six templates, 20 supported currencies, document types and limits.invoice_calc— validate decimal strings and calculate line amounts, discounts, tax, shipping and balance due.invoice_generate— validate a complete document and return self-contained HTML instructuredContent.html, plus totals and warnings.
Templates: Classic, Modern, Minimal, Bold, Compact and Elegant. Document types: invoice, estimate, receipt and proforma. There is no customer database, payment processing, file hosting or generated public invoice link.
The API returns HTML, not PDF. Save the HTML in your client, inspect it in a browser and use Print → Save as PDF. Automated PDF generation is not offered. Long invoices may span several pages.
Calculate an invoice total
Call invoice_calc with the following arguments. The balance due is 137.50 USD, represented as the exact integer-cent string 13750.
{
"currency": "USD",
"items": [
{
"description": "Consulting",
"qty": "1",
"unitPrice": "125.00",
"discountPercent": "0",
"taxPercent": "10"
}
],
"discountMode": "percent",
"discountValue": "0",
"shipping": "0"
} All numeric inputs must be decimal strings, not JSON numbers. Use a decimal point and at most two fractional digits; no exponent, comma, sign or whitespace. Zero tax, discount and shipping must be supplied explicitly as "0". Quantity and unit price must be positive. No sample customer or current-date defaults are inserted.
Generate the complete HTML document
Call invoice_generate with the following explicit fields. Replace the example parties and dates with your own values. Empty text fields are allowed but must still be supplied; dueDate cannot precede issueDate.
{
"currency": "USD",
"items": [
{
"description": "Consulting",
"qty": "1",
"unitPrice": "125.00",
"discountPercent": "0",
"taxPercent": "10"
}
],
"discountMode": "percent",
"discountValue": "0",
"shipping": "0",
"docType": "invoice",
"template": "classic",
"number": "INV-001",
"issueDate": "2026-11-11",
"dueDate": "2026-11-30",
"from": {
"name": "Your business",
"address": "",
"email": "",
"phone": "",
"taxId": ""
},
"to": {
"name": "Your client",
"address": "",
"email": "",
"phone": "",
"taxId": ""
},
"additionalDetails": "",
"paymentTerms": "",
"paymentMethods": [
"bank"
],
"notes": "",
"terms": ""
} Logo data, remote URLs, filesystem paths, item IDs and unknown fields are rejected. Read the returned structuredContent: format is html, mimeType is text/html, and html contains the full escaped document. Review all details before sending it to a client.
Request limits and retries
- Maximum JSON request: 256 KiB; maximum result including protocol overhead: 2 MiB.
- Up to 100 items, 500 characters per description or party text field, 80 characters per invoice number.
- Public edge rate: 60 requests per minute per IP, burst up to 20. Protocol initialization and tool-list requests count too.
- One computation runs at a time across clients, with a five-second computation deadline. Send calls sequentially.
HTTP 429 means wait for Retry-After when present, or at least 60 seconds otherwise. 503 means the service is busy. A tool can return BUSY or TIMEOUT; retry later with backoff, not a request flood. INVALID_INPUT, AMOUNT_OVERFLOW and UNREPRESENTABLE_CURRENCY_AMOUNT require correcting the input. Availability is best-effort, not an SLA.
The calculation core uses two-decimal units for all currencies. JPY accepts only whole-yen monetary inputs and whole-yen calculated amounts, including tax and discounts. Fractional-yen results are rejected rather than hidden by display rounding. KWD and three-decimal input are unsupported. This is not a jurisdiction-specific tax or e-invoicing compliance service.
Privacy before you connect
MCP requests are processed on our server. Your MCP client and its connected model provider may also see the invoice and returned HTML. Unlike the browser generator, this API is not local-only.
The MCP application does not persist invoices or log request/response bodies. Temporary request processing and short-lived IP-based rate counters remain in memory; this is not a memory-erasure guarantee. The proxy disables normal access logging for the API endpoint, but operational errors and your client's logs may still exist. Never put invoice data in URL query parameters, which this endpoint rejects.
Do not submit payment-card details, passwords or unnecessary personal information. Check your client's cloud forwarding and retention settings. See the Privacy policy and Terms of use.