MCP server
Connect your AI assistant to EenFactuurMaken.nl with the MCP server. Create, check and send Dutch invoices in a chat with ChatGPT, Claude, Cursor, Gemini CLI or Copilot.
The Model Context Protocol (MCP) is an open standard that lets AI assistants work safely with other software. With EenFactuurMaken.nl's MCP server your assistant creates invoices, looks up customers, makes credit notes and sends reminders, right in a chat. All the Dutch rules are built in. The MCP server is included in every plan.
Server URL
https://eenfactuurmaken.nl/mcpTransport: Streamable HTTP (stateless, POST only). There's nothing to install. If you open the URL in your browser you get an error (405): that's expected, only MCP apps can talk to it.
Signing in: OAuth or API key
OAuth (recommended for ChatGPT and Claude)
You only add the URL. Your app opens a EenFactuurMaken.nl window where you sign in and give permission. No key to copy.
- The app only gets access to the MCP server (scopes
invoicesandoffline_access), not to the REST API. - An access token is valid for 1 hour. The app renews it itself; that works for 60 days without signing in again.
- You get an email when an app is connected.
- You see connected apps under Settings → API & AI → Connected apps, and you disconnect them there.
API key (for Claude Code, Cursor, VS Code and Gemini CLI)
Create a key under Settings → API & AI and send it as Authorization: Bearer efm_…. Handy for tools on your own computer. See API keys and apps.
Setup per app
| App | Sign-in | Guide |
|---|---|---|
| ChatGPT | OAuth | ChatGPT |
| Claude.ai and Claude Desktop | OAuth (or an API key in Desktop) | Claude |
| Claude Code | OAuth or API key | Claude |
| Cursor | API key | Cursor |
| Gemini CLI | OAuth or API key | Gemini CLI |
| GitHub Copilot in VS Code | API key | VS Code |
Using another app that supports MCP? Choose "Streamable HTTP" or "HTTP" as the transport and enter the server URL, with OAuth or the Authorization header.
What can your assistant do?
24 tools, including: creating, updating, checking, issuing and emailing invoices; credit notes; customers and products; reminders; payments; download links for PDF and UBL; and your VAT figures per quarter. Plus ready-made prompts. The complete overview with examples is in All tools.
Your assistant can simply give amounts in euros ("85" or "85.50"); the server converts them to cents.
Examples
Create an invoice for Bakkerij De Gouden Korst: 12 hours of web design at €85 and a year of hosting for €120.
Your assistant creates a draft, checks it and shows the total (€1,379.40 incl. 21% VAT). It asks whether it may issue and email it.
I did subcontracting work for Bouwbedrijf Pietersen, €2,500. VAT reverse charged.
It creates an invoice with reverse charge, asks for the customer's VAT number if it's missing and puts "Btw verlegd" on the invoice.
Which invoices are overdue? Send a reminder for everything more than 14 days late.
It finds the outstanding invoices, shows them and sends the reminders after you approve.
Invoice 2026-0012 was €200 too high. Credit that.
It creates a partial credit note of €200 that refers to 2026-0012.
You'll find more prompts in the prompt library.
Safety
- New invoices are always a draft first. Only
issue_invoicegives them a number and locks them. - Tools that send or finalise something are marked as such. Most AI apps ask for your approval first. Keep that turned on.
- Your assistant only sees your data, with your permissions and your plan's limits. It can't change payment details (IBAN and the like).
- Download links work for 15 minutes (up to 60) and only for that one invoice.
- Revoke an API key when you no longer use it, and disconnect apps you no longer use.
Troubleshooting
| Message | Solution |
|---|---|
| 401 | The key or token is missing, revoked or expired. Check the header, or sign in again through your app. |
| 402 | This feature is part of Pro, or you've used your 5 free invoices this month. |
403 insufficient_scope | The OAuth token lacks the invoices scope. Connect the app again. |
| 405 in your browser | Expected: the server only accepts POST requests from an MCP app. |
| 429 | A few too many requests. Wait a minute. |
| The app shows no tools | Restart the app after changing the configuration, and check that the server is enabled in the app's settings. |
More in Troubleshooting.
Last updated on 13 October 2026
Stuck?
Email us at support@eenfactuurmaken.nl. Tell us what you tried and what happened, and we will help you out.