MCP
Give your AI tools hands. The InvoiceJet MCP server lets Claude, Cursor, VS Code, Windsurf, Zed, and any Model Context Protocol client extract invoices and query your extraction results. "Extract this PDF and tell me the total" becomes a sentence, not an integration.
Connect
claude mcp add invoicejet \
-e INVOICEJET_API_KEY=ijk_live_... \
-- npx -y @invoicejetai/mcpTools
| Tool | Does |
|---|---|
extract_invoice | Extract a local file (file_path) or public URL (file_url); waits for the result by default. Uses quota. Optional idempotency_key: pass the key from an earlier error whose outcome was unknown to get the original result instead of a second extraction. |
get_invoice | Fetch one invoice by id. |
list_invoices | Query newest-first: status, source, vendor substring, paid/unpaid, overdue, amount range, due-date and created windows. Pages with starting_after. |
list_vendors | Vendors with invoice count, total billed, and last seen, highest spend first. |
mark_invoice_paid | Mark a complete invoice paid (or unpaid). |
set_invoice_tag | Set or clear the entity/company tag. |
request_approval | Email an approve/reject request to a named approver (sends real email). |
get_invoice_file | Time-limited download URL (1 hour) for the original source document. |
retry_extraction | Re-run extraction for a failed invoice; force=true re-runs a complete one. |
account_quota | Key check (name, scope) + monthly quota. |
list_events | invoice.completed / invoice.failed events since a time, with the full invoice. Pages with starting_after. |
export_invoices | Render a CSV/JSON export (lines, xero, invoices, or vendors shape) of matching invoices. |
Things to ask
Once connected, natural requests just work:
Extract ~/Downloads/bayline-invoice.pdf and tell me the total and the due date.
Which vendors have we spent the most with?
What's unpaid and due in the next 14 days? Anything overdue?
Which invoices failed extraction since Monday?
Mark everything from Jetstream Supplies as paid.
Tag all the AWS invoices as "EngCo Cloud".
Find Jetstream invoice INV-2026-0042 and send it to sam@company.com for approval.Notes
The server is a thin, zero-dependency wrapper over the REST API: same key, same quota, same invoice resource. Tools that change data or send email are annotated as writes, so clients that support MCP tool annotations can ask before running them. Everything an agent extracts lands in your InvoiceJet account for review, exports, and webhooks. Without INVOICEJET_API_KEY the server still starts and returns setup instructions from any tool call, so a missing key never breaks your MCP client's startup.
Timeouts & retries
Network errors, timeouts and 408/429/500/502/503/504 are retried twice by default, with jittered backoff and Retry-After honored. Each attempt times out after 20s for read, list and update tools, 60s for export_invoices, and 120s for extract_invoice uploads and waits.
| Env var | Does |
|---|---|
INVOICEJET_TIMEOUT | Per-attempt timeout in seconds, for every tool call (replaces the defaults above). |
INVOICEJET_MAX_RETRIES | Retries per call. Default 2; 0 turns retries off. |
extract_invoice always sends an Idempotency-Key, so retries never extract twice. If the outcome is unknown (a timeout or 5xx), the tool error includes the key; call again with idempotency_key set to it. Tool errors include the request id when the API sends one.