← Back to search

io.github.enzoemir1/invoiceflow-mcp

enzoemir1 Scanned 24d ago

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

B
86.7 / 100

Versions

1.0.0latest
first seen Jun 5, 2026
1.4.0
first seen May 19, 2026
PermissionsTool SafetyAuthAnnotationsCode QualityStabilitySpecVuln HistoryAuthorTransparencyCommunity

Tools 10

invoice_demo_seed
annotations: verified low

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.

readOnlyHint false openWorldHint false idempotentHint false destructiveHint false
client_manage
annotations: verified low

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.

readOnlyHint false openWorldHint false idempotentHint true destructiveHint false
invoice_create
annotations: verified low

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.

readOnlyHint false openWorldHint false idempotentHint true destructiveHint false
invoice_list
annotations: verified low

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.

readOnlyHint true openWorldHint false idempotentHint true destructiveHint false
invoice_send
annotations: verified low

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.

readOnlyHint false openWorldHint true idempotentHint false destructiveHint false
invoice_mark_paid
annotations: verified low

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.

readOnlyHint false openWorldHint false idempotentHint false destructiveHint false
invoice_remind
annotations: verified low

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.

readOnlyHint false openWorldHint false idempotentHint false destructiveHint false
invoice_risk
annotations: verified low

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.

readOnlyHint true openWorldHint false idempotentHint true destructiveHint false
cashflow_report
annotations: verified low

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.

readOnlyHint true openWorldHint false idempotentHint true destructiveHint false
payment_reconcile
annotations: verified low

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.

readOnlyHint false openWorldHint false idempotentHint false destructiveHint false

Permissions 2

network medium
Server uses network capabilities via: fetch()
env_vars low
Server uses env_vars capabilities via: process.env

Scan Findings 32

info
Tool 'invoice_demo_seed' annotations are consistent annotation_checker · 80%
info
Tool 'client_manage' annotations are consistent annotation_checker · 80%
info
Tool 'invoice_create' annotations are consistent annotation_checker · 80%
info
Tool 'invoice_list' annotations are consistent annotation_checker · 80%
info
Tool 'invoice_send' annotations are consistent annotation_checker · 80%
info
Tool 'invoice_mark_paid' annotations are consistent annotation_checker · 80%
info
Tool 'invoice_remind' annotations are consistent annotation_checker · 80%
info
Tool 'invoice_risk' annotations are consistent annotation_checker · 80%
info
Tool 'cashflow_report' annotations are consistent annotation_checker · 80%
info
Tool 'payment_reconcile' annotations are consistent annotation_checker · 80%
high
Hardcoded OAuth client ID in enzoemir1-invoiceflow-mcp-fc134b5/tests/tools/create.test.ts auth_checker · 85%
info
Sandbox failed to start for behavioral verification behavioral_verifier · 100%
medium
Vulnerable dependency: uuid@13.0.0 (GHSA-w5hq-g745-h8pq) dependency_analyzer · 95%
info
package.json metadata manifest_parser · 100%
info
Tool: invoice_demo_seed manifest_parser · 85%
info
Tool: client_manage manifest_parser · 85%
info
Tool: invoice_create manifest_parser · 85%
info
Tool: invoice_list manifest_parser · 85%
info
Tool: invoice_send manifest_parser · 85%
info
Tool: invoice_mark_paid manifest_parser · 85%
info
Tool: invoice_remind manifest_parser · 85%
info
Tool: invoice_risk manifest_parser · 85%
info
Tool: cashflow_report manifest_parser · 85%
info
Tool: payment_reconcile manifest_parser · 85%
info
Transport: stdio manifest_parser · 90%
info
Required env vars (6) manifest_parser · 80%
medium
Hardcoded OAuth client ID in enzoemir1-invoiceflow-mcp-fc134b5/tests/tools/create.test.ts oauth_scope_analyzer · 80%
info
Sandbox failed to start for output poisoning scan output_poisoning · 100%
medium
Permission: network access detected permission_analyzer · 70%
low
Permission: env_vars access detected permission_analyzer · 90%
info
SBOM generated: 206 components sbom_generator · 100%
medium
No build provenance detected (SLSA L0) slsa_assessor · 90%