InvoiceBloom ships a hosted MCP server and a JSON API. Give your assistant one API token and it can look up clients, draft invoices, email them, and tell you who still owes you money. Free, like the rest of the app.
Sign in (or create a free account), open Settings › Security,
name a token (for example "Claude Code") and click Create token. Copy it: it starts with ib_ and is shown once.
Revoke it from the same page whenever you like.
The server lives at https://invoicebloom.io/mcp (Streamable HTTP). Send the token as a bearer header.
claude mcp add --transport http invoicebloom https://invoicebloom.io/mcp \
--header "Authorization: Bearer ib_YOUR_TOKEN"
Then ask things like "Invoice Acme for 12 hours of consulting at $150 and send it" or "Which invoices are overdue?".
Add this to claude_desktop_config.json (Settings › Developer › Edit Config). It bridges through mcp-remote because Desktop's config file cannot send headers itself:
{
"mcpServers": {
"invoicebloom": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://invoicebloom.io/mcp",
"--header", "Authorization: Bearer ib_YOUR_TOKEN"]
}
}
}
{
"mcpServers": {
"invoicebloom": {
"url": "https://invoicebloom.io/mcp",
"headers": { "Authorization": "Bearer ib_YOUR_TOKEN" }
}
}
}
| get_account | Your business details, email-confirmation and payment status. |
| list_clients / create_client / update_client | Find or add the people you invoice. |
| list_invoices / get_invoice | Filter by status, client, or overdue; full detail with line items and a shareable link. |
| create_invoice / update_invoice | Draft invoices with line items, tax and late fees. Totals are computed for you. |
| send_invoice | Emails the PDF to the client (with a payment link if Stripe is connected). |
| mark_invoice_paid / delete_invoice | Record an offline payment, or remove an invoice. |
Sending and deleting are flagged so well-behaved assistants confirm with you first. The same anti-abuse rules as the app apply: a confirmed email, at least one line item, and a daily send cap.
Base URL https://invoicebloom.io/api/v1, header Authorization: Bearer ib_YOUR_TOKEN, JSON in and out.
| GET /me | Account profile. |
| GET /clients?q= | List or search clients. POST /clients, GET|PATCH /clients/:id. |
| GET /invoices | Filters: status (draft, sent, paid), client_id, overdue=true for unpaid and late, page. |
| POST /invoices | Create a draft. GET|PATCH|DELETE /invoices/:id. |
| POST /invoices/:id/send | Email it to the client. |
| POST /invoices/:id/mark_paid | Record an offline payment. |
| GET /invoices/:id/pdf | Download the PDF. |
curl -X POST https://invoicebloom.io/api/v1/invoices \
-H "Authorization: Bearer ib_YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"invoice": {
"client_email": "billing@acme.com",
"due_date": "2026-10-25",
"tax": 8.5,
"line_items": [
{ "description": "Consulting", "quantity": 12, "unit": "hours", "rate": 150 }
]
}
}'
# then, using the id from the response:
curl -X POST https://invoicebloom.io/api/v1/invoices/123/send \
-H "Authorization: Bearer ib_YOUR_TOKEN"
429.{"error": "..."} with a 401, 404, 422 or 403 status.YYYY-MM-DD, tax is a percentage.Questions or a client you want supported? Contact us.