Compliant invoicing for freelancers: create, issue and track invoices from your AI agent.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent — or use 1-click editor setup below.
One-click editor setup isn’t available for this listing yet — we don’t have a confirmed install command, and we’d rather show nothing than point your editor at the wrong package or host. Follow the project’s own setup instructions, linked above.
Kema Invoice is compliant e-invoicing software that AI agents can operate through the Model Context Protocol. Connect the remote MCP server to Claude, Cursor or any MCP client, authorize once with OAuth 2.1, and your agent can create, issue, send and track invoices, quotes and retainers in plain language. Invoices are generated as Factur-X (EN 16931) and transmitted through an accredited platform. Nothing to install: the server runs at https://mcp.kema-studio.com/api/mcp.
Website · Documentation · Connect your agent · MCP Registry entry · Version française
The connector is a remote MCP server (Streamable HTTP + OAuth 2.1). There is no package to install and the server code is not published here. This repository holds what an integrator or a directory needs:
| File | Purpose |
|---|---|
tools.json | The 41 tools with title, description, group and access hints. Generated from the server code, never edited by hand. |
server.json | The declaration published to the official MCP Registry (com.kema-studio/invoice). |
examples/ | Ready-to-paste client configurations and a prompt playbook. |
scripts/verify-connection.ts | A small open-source script that runs the OAuth flow and lists the tools, to check a connection end to end. |
CHANGELOG.md | Connector versions. |
| Client | How |
|---|---|
| claude.ai / Claude Desktop | Settings › Connectors › Add custom connector, paste https://mcp.kema-studio.com/api/mcp, authorize once. |
| Claude Code | claude mcp add kema-invoice --transport http --url https://mcp.kema-studio.com/api/mcp |
| Cursor | Add examples/cursor-mcp.json to .cursor/mcp.json. |
| Any MCP client | Streamable HTTP transport, URL above, OAuth 2.1 with PKCE and dynamic client registration (RFC 7591). Authorization server metadata is discovered from /.well-known/oauth-protected-resource. |
The first call opens a consent page on auth.kema-studio.com. You sign in with your Kema Invoice account, approve, and the client stores the token. Access can be revoked at any time from the app or from the client.
No account yet? Create one: 14-day trial with 10 invoices included, one user, no credit card. Then a single plan at €10 per user per month excl. VAT, every feature included, cancel at any time.
| Tool | What it does | Access |
|---|---|---|
create_invoice | Create an invoice for a company, with line items. In this product, creating an invoice means issuing it: after this call, show the user a short summary (client, lines, totals) and, on their approval, call issue_invoice with confirm:true. Keep it as a draft only if the user explicitly wants to review or edit it in the app first. VAT is computed automatically by strict server-side fiscal rules (scenario + defaults) - never ask the user for a VAT rate. The fiscal scenario and client snapshot are frozen at creation; the snapshot carries the company's legal name (legal_name), which is what the invoice prints, even when it differs from the display name. | write |
issue_invoice | Issue a Draft invoice: the legal act of creating it (the product calls this 'Créer la facture'). The invoice becomes a definitive legal document (status Sent, displayed as 'Créée'): IRREVERSIBLE under French law, undone only with a credit note. ALWAYS show the user the invoice summary and get their explicit approval before calling with confirm:true; without confirm, returns a preview. Fiscal certification happens inside this call and is internal plumbing: once it returns, tell the user the invoice is created and nothing more. NEVER mention certification, fiscal status, immutability or processing to the user unless this tool returns an error. | write, destructive |
list_invoices | List the authenticated tenant's invoices, most recent first. Supports filtering by status, document type, and a free-text search on invoice number or client name, plus pagination. | read |
get_invoice | Fetch a single invoice by id, including its line items, client, and totals. Returns null-shaped error if the invoice is not visible to the caller. | read |
get_invoice_pdf | Return a temporary (1 hour) signed download URL for an invoice's PDF. Works for any document visible to the caller: imported invoices return their uploaded file; invoices issued in Kema Invoice (by the app or an agent) are rendered server-side with the workspace branding and, once certified, embed the Factur-X XML. Drafts render too (flagged is_draft: true) but are not legal documents yet. | read |
update_invoice | Update fields of a Draft invoice (dates, payment terms, notes, or reassign the company). Only Draft invoices can be modified - a Sent/certified invoice is immutable. | write |
delete_invoice | Soft-delete a Draft invoice. Irreversible from the user's view. Call with confirm:true to actually delete; without it, returns a preview of what would be deleted. | write, destructive |
cancel_invoice | Cancel a DRAFT invoice (status → Cancelled). Irreversible. Issued documents (Sent, Overdue, Paid) are fiscal records and cannot be cancelled outright: use create_credit_note, which issues a certified credit note (avoir) and cancels the original. Call with confirm:true to act; otherwise returns a preview. | write, destructive |
mark_invoice_paid | Mark a Sent or Overdue invoice as Paid. Optionally set the payment date (defaults to now). | write |
add_invoice_item | Add a line item to a Draft invoice. Totals are recalculated automatically. | write |
update_invoice_item | Update a line item on a Draft invoice. Totals are recalculated automatically. Item ids come from get_invoice or add_invoice_item. | write |
delete_invoice_item | Remove a line item from a Draft invoice. Totals are recalculated automatically. Item ids come from get_invoice or add_invoice_item. Call with confirm:true to delete; without it, returns a preview of the item. | write, destructive |
reorder_invoice_items | Set the display order of an invoice's line items. Pass the full desired order: every item id with its 0-based display_order. Item ids come from get_invoice or add_invoice_item. | write |
update_invoice_matter | Attach or detach the matter (dossier) on an invoice. Purely organizational - allowed even after the invoice is Sent, but not on a Cancelled invoice. Pass matter_id null to detach. | write |
check_certification_status | Maintenance tool: refresh an issued document's fiscal certification state from the certification provider and reconcile it into the database. Certification is internal plumbing that completes on its own after issue_invoice: NEVER call this proactively, and never bring certification up with the user. Use it only when the user explicitly asks about certification, or after issue_invoice returned a certification error. | write |
create_credit_note | Cancel a Sent or Paid invoice by issuing a credit note (avoir). The credit note is a legal fiscal document (fiscally certified when the original was certified) and is IMMUTABLE once created. IRREVERSIBLE. ALWAYS get the user's explicit approval before calling with confirm:true. Without confirm, returns a preview. | write, destructive |
| Tool | What it does | Access |
|---|---|---|
rectify_invoice | Create a rectifying invoice (facture rectificative) for a Sent or Paid invoice: a NEW Draft invoice pre-filled from the original (same client, copied line items unless overridden) and legally linked to it. The original is marked Rectified only when the rectificative is issued. Call with confirm:true to create; without it, returns a preview. | write |
get_rectification_links | For one invoice, return the rectification chain: the original it replaces (if it is a rectificative) and/or the rectificative that replaced it (if it was rectified). Both null when the invoice is not part of a chain. | read |
import_external_invoice | Import a historical/external invoice with its OWN invoice number (kept verbatim), totals, and status - no line items. Use for migrating past invoices issued outside Kema Invoice; NOT for creating new invoices (use create_invoice). | write |
| Tool | What it does | Access |
|---|---|---|
create_quote | Create a Draft quote (devis) for a company. Quotes are not fiscal documents - no certification. Dates default server-side (issue today, due/valid +30 days). Requires a matter id (dossier) the quote belongs to. | write |
send_quote | Transition a Draft quote to Sent (the client-facing state). No certification is involved - quotes are commercial documents. French B2B validation (SIREN/VAT) applies when the tenant is French. | write, destructive |
accept_quote | Mark a Sent quote as Accepted by the client. Follow up with convert_quote_to_invoice to bill it. | write, destructive |
reject_quote | Mark a Sent quote as Rejected by the client. This ends the quote's lifecycle. Call with confirm:true to apply; without it, returns a preview. | write, destructive |
convert_quote_to_invoice | Create a new Draft invoice from an Accepted quote (line items copied, source_quote_id set for traceability). The invoice then follows the normal lifecycle (issue_invoice to make it legally binding). Call with confirm:true to apply; without it, returns a preview. | write |
No reviews yet — be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/kema-invoice-2)<a href="https://allmcps.com/mcp/kema-invoice-2"><img src="https://allmcps.com/api/badge/kema-invoice-2?style=directory" alt="Kema Invoice on AllMCPs" /></a>