# io.github.enzoemir1/invoiceflow-mcp (npm · invoiceflow-mcp-server)

AI-powered invoice automation. Create invoices, track payments, and manage cash flow.

- Trust score: 69/100 (medium)
- Change this week: +20
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- npm · `invoiceflow-mcp-server`: 69/100 (this document), [markdown](https://verifymcp.io/servers/enzoemir1-invoiceflow-mcp/invoiceflow-mcp-server.md), [page](https://verifymcp.io/servers/enzoemir1-invoiceflow-mcp/invoiceflow-mcp-server)

## Channel facts

- Registry: `npm`
- Package: `invoiceflow-mcp-server`
- Version: `1.4.0`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Supply Chain Security**: 87/100
  - No malware found by supply-chain analysis.
  - Only part of the dependency tree could be resolved (100 of 104), so this covers what we could see, not the whole tree.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (100 of 104), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 45/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 99 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 87/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 1623 tokens (~115/item across 14 items; 10 tools + 4 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 77/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 32% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add enzoemir1-invoiceflow-mcp -- npx -y invoiceflow-mcp-server
```

### Codex

```bash
codex mcp add enzoemir1-invoiceflow-mcp -- npx -y invoiceflow-mcp-server
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "enzoemir1-invoiceflow-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "invoiceflow-mcp-server"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add enzoemir1-invoiceflow-mcp --command npx --arg -y --arg invoiceflow-mcp-server
```

### Hermes

```yaml
mcp_servers:
  enzoemir1-invoiceflow-mcp:
    command: "npx"
    args: ["-y", "invoiceflow-mcp-server"]
```

### Other

```json
{
  "mcpServers": {
    "enzoemir1-invoiceflow-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "invoiceflow-mcp-server"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 69, +4)

- [functional improvement] Stability: unverified → 0.27

### 2026-08-02 (score 65, +41)

- [security regression] Provenance: unverified → fail
- [security improvement] Install scripts: unverified → pass
- [security improvement] Known CVEs: unverified → partial
- [security improvement] Malware scan: unverified → pass
- [security] Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window).
- [functional regression] Security disclosure: fail → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional regression] Schema quality: 100 → unverified
- [functional improvement] MCP protocol: unverified → pass
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] Dependency health: unverified → partial
- [functional improvement] License: unverified → pass
- [functional improvement] Schema quality: unverified → excellent
- [functional] Licence: MIT

### 2026-08-01 (score 24, +18)

- [functional regression] Dependency health: partial → unverified
- [functional improvement] Schema quality: unverified → 100
- [functional improvement] Tool coverage: unverified → 100

### 2026-07-31 (score 6, −18)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 24, −25)

- [functional regression] Tool coverage: 100 → unverified
- [functional regression] Schema quality: 100 → unverified

### 2026-07-27 (score 49)

First indexed and scored.

## MCP tools (10)

### `invoice_demo_seed` (~160 tokens)

Seed Demo Data

Populate the store with a realistic demo dataset: 8 clients across 5 archetypes (on-time, late-payer, high-value, new, chronic-late) and 25-45 invoices spanning the last 6 months (paid, sent, and overdue). Every invoice has line items, tax, payment history, and reminder metadata. Use this to evaluate InvoiceFlow via MCP Inspector without real Stripe, SendGrid, or PayPal credentials — invoice_list, cashflow_report, invoice_risk, and payment_reconcile all return meaningful results against the returned ids. Safe to call multiple times; each call appends a fresh batch with unique UUIDs. Returns counts plus sample_invoice_ids you can feed straight into invoice_risk or invoice_mark_paid.

### `client_manage` (~175 tokens)

Manage Client

Create or upsert a client record used by invoice_create. Accepts name, email, company, address, city, country, tax_id, phone, default_currency ("USD"|"EUR"|"GBP"|...) and notes. Returns the stored client object including the generated id (UUID), an empty payment_history (populated as invoices are paid), and timestamps. Safe to call repeatedly: if a client with the same email already exists, the existing record is returned unchanged.

Input parameters:

- `address` (string)
- `city` (string)
- `company` (string)
- `country` (string)
- `default_currency` (string)
- `email` (string, required)
- `name` (string, required)
- `notes` (string)
- `phone` (string)
- `tax_id` (string)

### `invoice_create` (~199 tokens)

Create Invoice

Create a new invoice for an existing client. Required: client_id (UUID) and line_items (non-empty array of {description, quantity, unit_price, tax_rate?, discount_percent?} — tax and discount are per-line). Optional: currency (defaults to the client's default_currency then USD), issue_date (YYYY-MM-DD or full ISO, defaults to today), due_date (same format, defaults to issue_date + 30 days), notes, and terms. Auto-calculates subtotal, discount_total, tax_total, and total; generates a sequential invoice_number in format INV-YYYY-NNNN; sets status="draft". Returns the full invoice object ready for invoice_send.

Input parameters:

- `client_id` (string, required)
- `currency` (string)
- `due_date` (string)
- `issue_date` (string)
- `line_items` (array, required)
- `notes` (string)
- `terms` (string)

### `invoice_list` (~181 tokens)

List Invoices

Search and filter invoices. Optional filters: status ("draft"|"sent"|"viewed"|"paid"|"overdue"|"cancelled"|"refunded"), client_id, min_amount, max_amount, date_from/date_to (ISO dates), overdue_only (boolean). Pagination via limit (default 50, max 200) and offset. Returns {total, invoices[]} where each invoice includes full line_items and payment state. Use this to build dashboards or drive invoice_remind/invoice_risk workflows.

Input parameters:

- `client_id` (string)
- `from_date` (string)
- `limit` (integer)
- `max_amount` (number)
- `min_amount` (number)
- `offset` (integer)
- `overdue_only` (boolean)
- `status` (string)
- `to_date` (string)

### `invoice_send` (~124 tokens)

Send Invoice

Generate the invoice PDF and deliver it to the client. Always generates the PDF and marks the invoice status="sent". Email delivery via SendGrid is attempted automatically when the SENDGRID_API_KEY environment variable is set; without it the PDF is still generated and the status still advances so the caller can handle delivery out-of-band. Returns a confirmation message with the PDF size.

Input parameters:

- `invoice_id` (string, required): UUID of an existing invoice (from invoice_create or invoice_list)
- `message` (string): Custom body text for the email (default is a summary of amount and due date)

### `invoice_mark_paid` (~157 tokens)

Mark Invoice Paid

Record a full or partial payment against an invoice. Updates amount_paid and amount_due; sets status="paid" only when the outstanding balance reaches zero. As a side effect, a fully-paid invoice updates the client payment_history (total_revenue, paid_invoices, avg_days_to_payment, late_payment_count) which invoice_risk then uses for future predictions. Returns a confirmation with the paid amount and remaining balance.

Input parameters:

- `amount` (number): Amount paid in invoice currency; omit to settle the full remaining balance
- `invoice_id` (string, required): UUID of the invoice to update
- `payment_method` (string): How the payment was received (stripe|paypal|bank_transfer|credit_card|cash|check|crypto|other)

### `invoice_remind` (~124 tokens)

Record Payment Reminder

Record that a payment reminder has been issued for an unpaid invoice. Increments reminder_count, sets last_reminder_at, and advances draft → sent. Returns the generated reminder message (custom or default) so the caller can relay it through their preferred channel — this tool itself does not send email; use invoice_send for actual delivery. Safely refuses to remind on already-paid invoices.

Input parameters:

- `invoice_id` (string, required): UUID of the invoice to remind
- `message` (string): Custom reminder body; default is a friendly message referencing invoice number, amount, and due date

### `invoice_risk` (~135 tokens)

Assess Payment Risk

Predict late-payment risk for a specific invoice on a 0-100 scale. The model combines invoice amount (relative to client average), client payment history (avg_days_to_payment, late_payment_count), days remaining until due date, and prior reminder_count. Returns {risk_score (0-100), risk_level ("low"|"medium"|"high"|"critical"), factors (array of {factor, impact, detail}), recommended_action (string), next_reminder_date (ISO string or null)}. Use for prioritizing collection effort on high-value invoices.

Input parameters:

- `invoice_id` (string, required): UUID of the invoice to assess

### `cashflow_report` (~101 tokens)

Cash Flow Report

Generate a portfolio-wide cash flow summary across all invoices. Returns {period, total_invoiced, total_collected, total_outstanding, total_overdue, collection_rate (percent), avg_days_to_payment (or null if no paid history), projected_income_30d (forecast based on due dates and historical pay rate), breakdown_by_status, breakdown_by_client}. Takes no input — always reports on the current full dataset. Ideal for dashboards and monthly close.

### `payment_reconcile` (~199 tokens)

Reconcile Payment

Match an incoming external payment (e.g. Stripe webhook, PayPal IPN, bank transfer) to an open invoice. Matching rule: the payer_email must equal the invoice client_email (case-insensitive) AND the payment_amount must equal the invoice amount_due within one cent. On match the invoice is marked paid, amount_paid/amount_due are updated, and client payment_history is recomputed exactly like invoice_mark_paid. Returns a reconciliation message on match or a "no match" message otherwise (no error). If multiple invoices match, the first one is reconciled.

Input parameters:

- `payer_email` (string, required): Email of the payer (matched against invoice client_email, case-insensitive)
- `payment_amount` (number, required): Amount received from the payer, in the invoice currency
- `payment_method` (string): Payment channel (stripe|paypal|bank_transfer|etc.)
- `reference` (string): External payment reference or transaction ID for your records

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/enzoemir1-invoiceflow-mcp/invoiceflow-mcp-server#diagnostics

## Score history

- 2026-08-03: 69
- 2026-08-02: 65
- 2026-08-01: 24
- 2026-07-31: 6
- 2026-07-30: 24
- 2026-07-28: 49
- 2026-07-27: 49

## Links

- npm package: https://www.npmjs.com/package/invoiceflow-mcp-server
- Socket report: https://socket.dev/npm/package/invoiceflow-mcp-server
- Repository: https://github.com/enzoemir1/invoiceflow-mcp
- Changelog RSS feed: https://verifymcp.io/servers/enzoemir1-invoiceflow-mcp/invoiceflow-mcp-server/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/enzoemir1-invoiceflow-mcp/invoiceflow-mcp-server/changelog.json
- HTML version of this page: https://verifymcp.io/servers/enzoemir1-invoiceflow-mcp/invoiceflow-mcp-server
