Serveur MCP

InvoiceBloom

io.github.theasteve/invoicebloom
Entreprise et opérations Public et accessible MCP 2025-11-25

Ce que fait ce MCP

Creates, sends, updates, and tracks invoices for clients, including PDF delivery and payment-link support.

create_client
Creates a new client to invoice. Name and email are required; the email is where invoices are sent. Check list_clients first so you do not create duplicates.
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['name', 'email'], 'properties': {'name': {'type': 'string', 'description': 'Contact name, up to 100 characters.'}, 'email': {'type': 'string', 'description': 'Email address invoices will be sent to.'}, 'notes': {'type': 'string', 'description': 'Private notes, never shown to the client.'}, 'phone': {'type': 'string'}, 'address': {'type': 'string', 'description': 'Postal address, printed on invoices.'}, 'company_name': {'type': 'string'}}}
create_invoice
Creates a draft invoice with line items for an existing client. Identify the client by client_id or client_email (must already exist; use create_client otherwise). Totals are computed server-side: subtotal + tax% + late_fee. Nothing is emailed until you call send_invoice. Returns the invoice, including its invoice_number and public_url.
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['line_items'], 'properties': {'tax': {'type': 'number', 'description': 'Tax as a percentage of the subtotal, e.g. 8.5. Omit for no tax.'}, 'date': {'type': 'string', 'description': 'Invoice date, YYYY-MM-DD. Defaults to today.'}, 'terms': {'type': 'string', 'description': "Payment terms text, e.g. 'Net 30'."}, 'theme': {'enum': ['minimal', 'classic', 'modern', 'creative', 'freelancer', 'contractor', 'consultant'], 'type': 'string', 'description': "Visual template. Defaults to 'minimal'."}, 'due_date': {'type': 'string', 'description': 'Due date, YYYY-MM-DD. Defaults to 30 days from today.'}, 'late_fee': {'type': 'number', 'description': 'Flat late fee amount added to the total. Omit for none.'}, 'client_id': {'type': 'integer', 'description': 'ID from list_clients.'}, 'line_items': {'type': 'array', 'items': {'type': 'object', 'required': ['description', 'quantity', 'rate'], 'properties': {'rate': {'type': 'number', 'description': 'Price per unit.'}, 'unit': {'type': 'string', 'description': "Unit label such as 'hours', 'days' or 'units'. Defaults to 'units'."}, 'quantity': {'type': 'number', 'description': 'Quantity, greater than 0.'}, 'description': {'type': 'string', 'description': "What was delivered, e.g. 'Logo design'."}}}, 'minItems': 1, 'description': 'At least one line item.'}, 'client_email': {'type': 'string', 'description': 'Alternative to client_id: email of an existing client.'}, 'business_name': {'type': 'string', 'description': 'Override the sender name printed on this invoice.'}, 'business_address': {'type': 'string', 'description': 'Override the sender address printed on this invoice.'}, 'payment_instructions': {'type': 'string', 'description': "How to pay (bank details etc.). Defaults to the user's saved instructions."}}}
delete_invoice
Permanently deletes an invoice and its line items. Cannot be undone. Confirm with the user before calling; prefer leaving paid invoices in place for their records.
Destructif Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['invoice_id'], 'properties': {'invoice_id': {'type': 'integer'}}}
get_account
Returns the signed-in user's profile: business name, address, saved payment instructions, whether their email is confirmed (required before sending invoices), whether they can take card payments, and client/invoice counts. Call this first to know who you are acting for.
Lecture seule
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': [], 'properties': {}}
get_invoice
Returns one invoice with its line items, totals, status, the client it is for, a public_url the client can open, and a payment link if one exists.
Lecture seule
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['invoice_id'], 'properties': {'invoice_id': {'type': 'integer'}}}
list_clients
Lists the user's clients (people or companies they invoice), optionally filtered by a search term matched against name, email and company. Use it to find a client_id before creating an invoice.
Lecture seule
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': [], 'properties': {'query': {'type': 'string', 'description': 'Optional case-insensitive search across name, email and company name.'}}}
list_invoices
Lists the user's invoices, newest first, without line items. Filter by status (draft, sent, paid), by client, or overdue_only for unpaid invoices past their due date (there is no 'overdue' status; use overdue_only). Use get_invoice for full detail.
Lecture seule
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': [], 'properties': {'limit': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Defaults to 25.'}, 'status': {'enum': ['draft', 'sent', 'paid'], 'type': 'string'}, 'client_id': {'type': 'integer'}, 'overdue_only': {'type': 'boolean', 'description': 'Only unpaid invoices whose due date has passed.'}}}
mark_invoice_paid
Marks an invoice as paid, for payments received outside InvoiceBloom (bank transfer, cash, cheque). Card payments through the payment link are recorded automatically.
Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['invoice_id'], 'properties': {'invoice_id': {'type': 'integer'}}}
send_invoice
Emails the invoice (with a PDF attached) to the client's email address and marks it as sent. This contacts a real person: confirm with the user before calling. Requires at least one line item and a confirmed user email. If the user takes card payments, a Stripe payment link is added first.
Accès externe
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['invoice_id'], 'properties': {'invoice_id': {'type': 'integer'}}}
update_client
Updates an existing client's details. Only the fields you pass are changed.
Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['client_id'], 'properties': {'name': {'type': 'string'}, 'email': {'type': 'string'}, 'notes': {'type': 'string'}, 'phone': {'type': 'string'}, 'status': {'enum': ['active', 'inactive'], 'type': 'string'}, 'address': {'type': 'string'}, 'client_id': {'type': 'integer'}, 'company_name': {'type': 'string'}}}
update_invoice
Updates an invoice. Only fields you pass change. If you pass line_items, they REPLACE the existing line items entirely, so include every item that should remain. Works on draft and sent invoices; re-send with send_invoice if the client needs the new version.
Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['invoice_id'], 'properties': {'tax': {'type': 'number', 'description': 'Tax as a percentage of the subtotal, e.g. 8.5. Omit for no tax.'}, 'date': {'type': 'string', 'description': 'Invoice date, YYYY-MM-DD. Defaults to today.'}, 'terms': {'type': 'string', 'description': "Payment terms text, e.g. 'Net 30'."}, 'theme': {'enum': ['minimal', 'classic', 'modern', 'creative', 'freelancer', 'contractor', 'consultant'], 'type': 'string', 'description': "Visual template. Defaults to 'minimal'."}, 'due_date': {'type': 'string', 'description': 'Due date, YYYY-MM-DD. Defaults to 30 days from today.'}, 'late_fee': {'type': 'number', 'description': 'Flat late fee amount added to the total. Omit for none.'}, 'client_id': {'type': 'integer'}, 'invoice_id': {'type': 'integer'}, 'line_items': {'type': 'array', 'items': {'type': 'object', 'required': ['description', 'quantity', 'rate'], 'properties': {'rate': {'type': 'number', 'description': 'Price per unit.'}, 'unit': {'type': 'string', 'description': "Unit label such as 'hours', 'days' or 'units'. Defaults to 'units'."}, 'quantity': {'type': 'number', 'description': 'Quantity, greater than 0.'}, 'description': {'type': 'string', 'description': "What was delivered, e.g. 'Logo design'."}}}, 'description': 'Full replacement list of line items.'}, 'client_email': {'type': 'string'}, 'business_name': {'type': 'string', 'description': 'Override the sender name printed on this invoice.'}, 'business_address': {'type': 'string', 'description': 'Override the sender address printed on this invoice.'}, 'payment_instructions': {'type': 'string', 'description': "How to pay (bank details etc.). Defaults to the user's saved instructions."}}}
Ajouté
delete_invoice
27 September 2026 02:40
Ajouté
mark_invoice_paid
27 September 2026 02:40
Ajouté
send_invoice
27 September 2026 02:40
Ajouté
update_invoice
27 September 2026 02:40
Ajouté
create_invoice
27 September 2026 02:40
Ajouté
get_invoice
27 September 2026 02:40
Ajouté
list_invoices
27 September 2026 02:40
Ajouté
update_client
27 September 2026 02:40
Ajouté
create_client
27 September 2026 02:40
Ajouté
list_clients
27 September 2026 02:40
Ajouté
get_account
27 September 2026 02:40