Invoice Ninja MCP by usefulapi
by usefulapi.io · remote · no sign-in to list tools · v1.16.3 · published by io.usefulapi
Manage Invoice Ninja clients, invoices, quotes, expenses, tasks and projects.
24 tools: 11 can delete or cancel things and 13 only read.
Scanned Oct 21, 2026
- Deletes or cancels11Claude Code: deny: see these tools
- Can't be undone0Claude Code: ask
- Changes things0Claude Code: ask
- Only reads13Claude Code: allow: see these tools
No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http invoice-ninja https://invoice-ninja.usefulapi.io/mcpTools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
24 tools
Deletes or cancels 11Claude Code: deny
invoiceninja_convert_quote_to_invoiceConvert a quote into a new invoice (the quote is marked converted and links to it).No findings
Why it is in this group
- The name "invoiceninja_convert_quote_to_invoice" says "convert": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Convert a quote into a new invoice (the quote is marked converted and links to it). Returns the new invoice. Invoice Ninja: GET /api/v1/quotes/{id}/convert_to_invoice.
Annotations the server declares
- title: Convert a quote to an invoice
- destructiveHint: true
invoiceninja_create_clientCreate a client, optionally with contacts.No findings
Why it is in this group
- The name "invoiceninja_create_client" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Create a client, optionally with contacts. Give at least a name or one contact. Invoice Ninja: POST /api/v1/clients.
Annotations the server declares
- title: Create a client
- destructiveHint: true
invoiceninja_create_expenseLog an expense, optionally tied to a vendor, client or project and flagged to be re-invoiced.No findings
Why it is in this group
- The name "invoiceninja_create_expense" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Log an expense, optionally tied to a vendor, client or project and flagged to be re-invoiced. Invoice Ninja: POST /api/v1/expenses.
Annotations the server declares
- title: Create an expense
- destructiveHint: true
invoiceninja_create_invoiceCreate a DRAFT invoice for a client.No findings
Why it is in this group
- The name "invoiceninja_create_invoice" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Create a DRAFT invoice for a client. It is not sent or emailed — use invoiceninja_mark_invoice_sent or invoiceninja_email_invoice afterwards. Invoice Ninja: POST /api/v1/invoices.
Annotations the server declares
- title: Create an invoice
- destructiveHint: true
invoiceninja_create_projectCreate a project for a client, with an optional hourly task rate, budget and due date.No findings
Why it is in this group
- The name "invoiceninja_create_project" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Create a project for a client, with an optional hourly task rate, budget and due date. Invoice Ninja: POST /api/v1/projects.
Annotations the server declares
- title: Create a project
- destructiveHint: true
invoiceninja_create_quoteCreate a DRAFT quote (estimate) for a client.No findings
Why it is in this group
- The name "invoiceninja_create_quote" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Create a DRAFT quote (estimate) for a client. Nothing is emailed. Invoice Ninja: POST /api/v1/quotes.
Annotations the server declares
- title: Create a quote
- destructiveHint: true
invoiceninja_create_taskCreate a task, optionally with logged time entries, for a client or project.No findings
Why it is in this group
- The name "invoiceninja_create_task" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Create a task, optionally with logged time entries, for a client or project. Invoice Ninja: POST /api/v1/tasks.
Annotations the server declares
- title: Create a task / log time
- destructiveHint: true
invoiceninja_email_invoiceOUTWARD-FACING: sends a real email with the invoice to the client's invited contacts, and marks the invoice sent.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it OUTWARD-FACING: sends a real email with the invoice to the client's invited contacts, and marks the invoice sent. Cannot be unsent — confirm with the user first. Invoice Ninja: POST /api/v1/invoices/bulk with action=email.
Annotations the server declares
- title: Email an invoice to the client
- destructiveHint: true
invoiceninja_mark_invoice_sentMark a draft invoice as sent WITHOUT emailing it.No findings
Why it is in this group
- The name "invoiceninja_mark_invoice_sent" says "mark": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Mark a draft invoice as sent WITHOUT emailing it. This moves it out of draft and adds its amount to the client's balance. Invoice Ninja: GET /api/v1/invoices/{id}/mark_sent.
Annotations the server declares
- title: Mark an invoice sent
- destructiveHint: true
invoiceninja_update_clientUpdate a client's details; only the fields you pass change.No findings
Why it is in this group
- The name "invoiceninja_update_client" says "update": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Update a client's details; only the fields you pass change. Passing contacts replaces the contact list. Invoice Ninja: PUT /api/v1/clients/{id}.
Annotations the server declares
- title: Update a client
- destructiveHint: true
invoiceninja_update_invoiceEdit an invoice; only the fields you pass change, but line_items (if passed) replace every existing line.No findings
Why it is in this group
- The name "invoiceninja_update_invoice" says "update": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Edit an invoice; only the fields you pass change, but line_items (if passed) replace every existing line. Does not send anything. Invoice Ninja: PUT /api/v1/invoices/{id}.
Annotations the server declares
- title: Update an invoice
- destructiveHint: true
Only reads 13Claude Code: allow
invoiceninja_get_clientFetch one client by id, with contacts, address, balance and paid-to-date.No findings
Why it is in this group
- The name "invoiceninja_get_client" says "get": a word for reading.
Description, as the server wrote it Fetch one client by id, with contacts, address, balance and paid-to-date. Invoice Ninja: GET /api/v1/clients/{id}.
Annotations the server declares
- title: Get one client
- readOnlyHint: true
invoiceninja_get_invoiceFetch one invoice by id — line items, totals, balance, dates, status and invitations.No findings
Why it is in this group
- The name "invoiceninja_get_invoice" says "get": a word for reading.
Description, as the server wrote it Fetch one invoice by id — line items, totals, balance, dates, status and invitations. Invoice Ninja: GET /api/v1/invoices/{id}.
Annotations the server declares
- title: Get one invoice
- readOnlyHint: true
invoiceninja_get_quoteFetch one quote by id — line items, totals, status and the invoice it was converted to (invoice_id), if any.No findings
Why it is in this group
- The name "invoiceninja_get_quote" says "get": a word for reading.
Description, as the server wrote it Fetch one quote by id — line items, totals, status and the invoice it was converted to (invoice_id), if any. Invoice Ninja: GET /api/v1/quotes/{id}.
Annotations the server declares
- title: Get one quote
- readOnlyHint: true
invoiceninja_list_clientsList clients with balances and contacts, optionally searched by name, email or number.No findings
Why it is in this group
- The name "invoiceninja_list_clients" says "list": a word for reading.
Description, as the server wrote it List clients with balances and contacts, optionally searched by name, email or number. Invoice Ninja: GET /api/v1/clients.
Annotations the server declares
- title: List clients
- readOnlyHint: true
invoiceninja_list_expensesList expenses, filterable by client and invoicing/payment state.No findings
Why it is in this group
- The name "invoiceninja_list_expenses" says "list": a word for reading.
Description, as the server wrote it List expenses, filterable by client and invoicing/payment state. Invoice Ninja: GET /api/v1/expenses.
Annotations the server declares
- title: List expenses
- readOnlyHint: true
invoiceninja_list_invoicesList invoices, filterable by client and payment status (paid / unpaid / overdue).No findings
Why it is in this group
- The name "invoiceninja_list_invoices" says "list": a word for reading.
Description, as the server wrote it List invoices, filterable by client and payment status (paid / unpaid / overdue). status_id on each invoice: 1 draft, 2 sent, 3 partial, 4 paid, 5 cancelled, 6 reversed. Invoice Ninja: GET /api/v1/invoices.
Annotations the server declares
- title: List invoices
- readOnlyHint: true
invoiceninja_list_paymentsList payments received, with amount, date, refunded/applied totals and the invoices each was applied to (paymentables).No findings
Why it is in this group
- The name "invoiceninja_list_payments" says "list": a word for reading.
Description, as the server wrote it List payments received, with amount, date, refunded/applied totals and the invoices each was applied to (paymentables). Read-only: this server never records or refunds payments. Invoice Ninja: GET /api/v1/payments.
Annotations the server declares
- title: List payments
- readOnlyHint: true
invoiceninja_list_productsList products / services in the catalog with price, cost and default taxes.No findings
Why it is in this group
- The name "invoiceninja_list_products" says "list": a word for reading.
Description, as the server wrote it List products / services in the catalog with price, cost and default taxes. Invoice Ninja: GET /api/v1/products.
Annotations the server declares
- title: List products
- readOnlyHint: true
invoiceninja_list_projectsList projects with client, budgeted hours, task rate, current hours and due date.No findings
Why it is in this group
- The name "invoiceninja_list_projects" says "list": a word for reading.
Description, as the server wrote it List projects with client, budgeted hours, task rate, current hours and due date. Invoice Ninja: GET /api/v1/projects.
Annotations the server declares
- title: List projects
- readOnlyHint: true
invoiceninja_list_quotesList quotes (estimates), filterable by client and quote status.No findings
Why it is in this group
- The name "invoiceninja_list_quotes" says "list": a word for reading.
Description, as the server wrote it List quotes (estimates), filterable by client and quote status. Invoice Ninja: GET /api/v1/quotes.
Annotations the server declares
- title: List quotes
- readOnlyHint: true
invoiceninja_list_recurring_invoicesList recurring invoice schedules with frequency, next send date and remaining cycles.No findings
Why it is in this group
- The name "invoiceninja_list_recurring_invoices" says "list": a word for reading.
Description, as the server wrote it List recurring invoice schedules with frequency, next send date and remaining cycles. Read-only. Invoice Ninja: GET /api/v1/recurring_invoices.
Annotations the server declares
- title: List recurring invoices
- readOnlyHint: true
invoiceninja_list_tasksList tasks / time entries with their time_log, duration, rate and linked client, project and invoice.No findings
Why it is in this group
- The name "invoiceninja_list_tasks" says "list": a word for reading.
Description, as the server wrote it List tasks / time entries with their time_log, duration, rate and linked client, project and invoice. Invoice Ninja: GET /api/v1/tasks.
Annotations the server declares
- title: List tasks
- readOnlyHint: true
invoiceninja_list_vendorsList vendors (suppliers) with contacts and address.No findings
Why it is in this group
- The name "invoiceninja_list_vendors" says "list": a word for reading.
Description, as the server wrote it List vendors (suppliers) with contacts and address. Invoice Ninja: GET /api/v1/vendors.
Annotations the server declares
- title: List vendors
- readOnlyHint: true
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.16.3. Values in angle brackets are yours to fill in.
claude mcp add --transport http invoice-ninja https://invoice-ninja.usefulapi.io/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__invoice-ninja__invoiceninja_list_clients",
"mcp__invoice-ninja__invoiceninja_get_client",
"mcp__invoice-ninja__invoiceninja_list_invoices",
"mcp__invoice-ninja__invoiceninja_get_invoice",
"mcp__invoice-ninja__invoiceninja_list_quotes",
"mcp__invoice-ninja__invoiceninja_get_quote",
"mcp__invoice-ninja__invoiceninja_list_products",
"mcp__invoice-ninja__invoiceninja_list_payments",
"mcp__invoice-ninja__invoiceninja_list_expenses",
"mcp__invoice-ninja__invoiceninja_list_vendors",
"mcp__invoice-ninja__invoiceninja_list_tasks",
"mcp__invoice-ninja__invoiceninja_list_projects",
"mcp__invoice-ninja__invoiceninja_list_recurring_invoices"
],
"ask": [],
"deny": [
"mcp__invoice-ninja__invoiceninja_create_client",
"mcp__invoice-ninja__invoiceninja_update_client",
"mcp__invoice-ninja__invoiceninja_create_invoice",
"mcp__invoice-ninja__invoiceninja_update_invoice",
"mcp__invoice-ninja__invoiceninja_mark_invoice_sent",
"mcp__invoice-ninja__invoiceninja_email_invoice",
"mcp__invoice-ninja__invoiceninja_create_quote",
"mcp__invoice-ninja__invoiceninja_convert_quote_to_invoice",
"mcp__invoice-ninja__invoiceninja_create_expense",
"mcp__invoice-ninja__invoiceninja_create_task",
"mcp__invoice-ninja__invoiceninja_create_project"
]
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as invoice-ninja. Review it before you use it.