Alder Invoices

Free invoice drafts, templates and direct PDF generation for AI agents. No account needed.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
79%
Naming quality
90%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,641Tokens (tool definitions)
~4.1 KBTypical response size
Moderate attention impact (1.28% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "invoice-generator": {
      "url": "https://alderinvoices.com/mcp"
    }
  }
}

Remote endpoints

https://alderinvoices.com/mcpstreamable-http

What it can do

Tool inventory

Tools (4)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢draft_invoice(allowPartial, billTo, currency, discount, dueDate, ...)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "allowPartial": {
      "description": "Let the payer pay part of the balance now",
      "type": "boolean"
    },
    "billTo": {
      "description": "The customer. name is required; email is prefilled at checkout.",
      "properties": {
        "address": {
          "description": "Multi-line postal address",
          "maxLength": 500,
          "type": "string"
        },
        "email": {
          "format": "email",
          "type": "string"
        },
        "name": {
          "maxLength": 200,
          "type": "string"
        }
      },
      "type": "object"
    },
    "currency": {
      "default": "usd",
      "enum": [
        "usd",
        "cad",
        "eur",
        "gbp",
        "aud",
        "nzd"
      ],
      "type": "string"
    },
    "discount": {
      "description": "Minor units, taken off the subtotal",
      "minimum": 0,
      "type": "integer"
    },
    "dueDate": {
      "description": "YYYY-MM-DD. The invoice reads overdue the day after.",
      "format": "date",
      "type": "string"
    },
    "from": {
      "description": "The business sending the invoice. On create, leave it out to use the connected Stripe business's name and email.",
      "properties": {
        "address": {
          "description": "Multi-line postal address",
          "maxLength": 500,
          "type": "string"
        },
        "email": {
          "format": "email",
          "type": "string"
        },
        "name": {
          "maxLength": 200,
          "type": "string"
        }
      },
      "type": "object"
    },
    "issueDate": {
      "description": "YYYY-MM-DD",
      "format": "date",
      "type": "string"
    },
    "items": {
      "items": {
        "properties": {
          "description": {
            "maxLength": 500,
            "type": "string"
          },
          "quantity": {
            "description": "May be fractional, e.g. 1.5 hours",
            "minimum": 0,
            "type": "number"
          },
          "unitPrice": {
            "description": "Minor units (cents)",
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "description",
          "quantity",
          "unitPrice"
        ],
        "type": "object"
      },
      "maxItems": 100,
      "minItems": 1,
      "type": "array"
    },
    "minPayment": {
      "description": "Smallest partial payment in minor units (e.g. a deposit). The full balance is always payable.",
      "minimum": 0,
      "type": "integer"
    },
    "notes": {
      "maxLength": 2000,
      "type": "string"
    },
    "number": {
      "description": "Your invoice number, e.g. INV-1042",
      "maxLength": 40,
      "type": "string"
    },
    "shipTo": {
      "description": "Optional shipping address",
      "properties": {
        "address": {
          "description": "Multi-line postal address",
          "maxLength": 500,
          "type": "string"
        },
        "email": {
          "format": "email",
          "type": "string"
        },
        "name": {
          "maxLength": 200,
          "type": "string"
        }
      },
      "type": "object"
    },
    "shipping": {
      "description": "Minor units, added after tax",
      "minimum": 0,
      "type": "integer"
    },
    "taxRate": {
      "description": "Percent. Applied after discount, not to shipping.",
      "maximum": 100,
      "minimum": 0,
      "type": "number"
    },
    "terms": {
      "maxLength": 2000,
      "type": "string"
    }
  },
  "required": [
    "items"
  ]
}
🟢list_invoice_templates

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.

Input Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
🟢prepare_invoice_template(billTo, dueDate, from, issueDate, number, ...)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "billTo": {
      "description": "The customer. name is required; email is prefilled at checkout.",
      "properties": {
        "address": {
          "description": "Multi-line postal address",
          "maxLength": 500,
          "type": "string"
        },
        "email": {
          "format": "email",
          "type": "string"
        },
        "name": {
          "maxLength": 200,
          "type": "string"
        }
      },
      "type": "object"
    },
    "dueDate": {
      "description": "YYYY-MM-DD. The invoice reads overdue the day after.",
      "format": "date",
      "type": "string"
    },
    "from": {
      "description": "The business sending the invoice.",
      "properties": {
        "address": {
          "description": "Multi-line postal address",
          "maxLength": 500,
          "type": "string"
        },
        "email": {
          "format": "email",
          "type": "string"
        },
        "name": {
          "maxLength": 200,
          "type": "string"
        }
      },
      "type": "object"
    },
    "issueDate": {
      "description": "YYYY-MM-DD",
      "format": "date",
      "type": "string"
    },
    "number": {
      "description": "Your invoice number, e.g. INV-1042",
      "maxLength": 40,
      "type": "string"
    },
    "templateId": {
      "enum": [
        "consulting_hourly",
        "consulting_retainer",
        "consulting_milestone",
        "contractor_labor",
        "contractor_deposit"
      ],
      "type": "string"
    }
  },
  "required": [
    "templateId"
  ]
}
🟢render_invoice_pdf(billTo, currency, discount, dueDate, from, ...)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "billTo": {
      "description": "The customer. name is required; email is prefilled at checkout.",
      "properties": {
        "address": {
          "description": "Multi-line postal address",
          "maxLength": 500,
          "type": "string"
        },
        "email": {
          "format": "email",
          "type": "string"
        },
        "name": {
          "maxLength": 200,
          "type": "string"
        }
      },
      "type": "object"
    },
    "currency": {
      "default": "usd",
      "enum": [
        "usd",
        "cad",
        "eur",
        "gbp",
        "aud",
        "nzd"
      ],
      "type": "string"
    },
    "discount": {
      "description": "Minor units, taken off the subtotal",
      "minimum": 0,
      "type": "integer"
    },
    "dueDate": {
      "description": "YYYY-MM-DD. The invoice reads overdue the day after.",
      "format": "date",
      "type": "string"
    },
    "from": {
      "description": "The business sending the invoice.",
      "properties": {
        "address": {
          "description": "Multi-line postal address",
          "maxLength": 500,
          "type": "string"
        },
        "email": {
          "format": "email",
          "type": "string"
        },
        "name": {
          "maxLength": 200,
          "type": "string"
        }
      },
      "type": "object"
    },
    "issueDate": {
      "description": "YYYY-MM-DD",
      "format": "date",
      "type": "string"
    },
    "items": {
      "items": {
        "properties": {
          "description": {
            "maxLength": 500,
            "type": "string"
          },
          "quantity": {
            "description": "May be fractional, e.g. 1.5 hours",
            "minimum": 0,
            "type": "number"
          },
          "unitPrice": {
            "description": "Minor units (cents)",
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "description",
          "quantity",
          "unitPrice"
        ],
        "type": "object"
      },
      "maxItems": 100,
      "minItems": 1,
      "type": "array"
    },
    "notes": {
      "maxLength": 2000,
      "type": "string"
    },
    "number": {
      "description": "Your invoice number, e.g. INV-1042",
      "maxLength": 40,
      "type": "string"
    },
    "shipTo": {
      "description": "Optional shipping address",
      "properties": {
        "address": {
          "description": "Multi-line postal address",
          "maxLength": 500,
          "type": "string"
        },
        "email": {
          "format": "email",
          "type": "string"
        },
        "name": {
          "maxLength": 200,
          "type": "string"
        }
      },
      "type": "object"
    },
    "shipping": {
      "description": "Minor units, added after tax",
      "minimum": 0,
      "type": "integer"
    },
    "taxRate": {
      "description": "Percent. Applied after discount, not to shipping.",
      "maximum": 100,
      "minimum": 0,
      "type": "number"
    },
    "terms": {
      "maxLength": 2000,
      "type": "string"
    }
  },
  "required": [
    "from",
    "billTo",
    "number",
    "issueDate",
    "dueDate",
    "items"
  ],
  "description": "Direct PDF input. Western European (Windows-1252) text only, no logos, no payment ledger. Unknown text is rejected, never silently replaced."
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded4 tools