DutyKit

io.github.renschrder-stackPublished by GitHub account renschrder-stackv0.1.1Updated Nov 8, 2026

EU business duties for AI agents: legal obligations with sources and pre-checks (DE, LU, EU)

VerifiedStreamable HTTPWeb executableSecurity & MonitoringBusiness & Commerce

Overview

AI-generated overview

Remote MCP server that gives an assistant German, Luxembourg and EU business obligations with legal sources, plus pre-checks for invoices, marketing and AI…

What you can do
  • Look up business obligations for DE or LU plus EU-wide, filtered by activity such as website, online trade, invoicing, advertising, AI contact or company formation
  • Pre-check an invoice for missing mandatory fields under German VAT law
  • Check whether a marketing email or phone call to consumers or businesses is allowed
  • Draft AI disclosure wording under AI Act Art. 50(1) in German, French, English or Luxembourgish
  • Validate an EU VAT ID live via the European Commission's VIES service
  • Return a proof record (timestamp, tool, responsible person, hash) with each check
When to use it
Useful when an assistant drafts or sends business content for a German or Luxembourg company and should first confirm which obligations apply, whether an invoice is complete, whether marketing contact is permitted, or how to word an AI disclosure.
Requirements
Remote Streamable HTTP endpoint; no account, API key or environment variables are declared. Public beta is free with a limit of 200 tool calls per day per IP. Network access is needed for the VAT check, which queries the EU VIES service.
Before you install
Results are not legal advice and cover only DE, LU and EU, with some catalogue entries not yet verified against the legal text. The VAT check sends the VAT ID to the European Commission's VIES service. Checks are advisory; the human remains liable for what is published or sent.

Installation

In SourceWeft

  1. Open DutyKit in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.renschrder-stack%2Fdutykit/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "dutykit": {
      "type": "http",
      "url": "https://dutykit.dev/mcp"
    }
  }
}

README

DutyKit

[MCP Registry] [License: MIT] [Catalogue: CC BY 4.0]

EU business duties for AI agents. A remote MCP server that tells an agent which business rules apply in Germany, Luxembourg and the EU, with the legal source for every line, and lets it pre-check an invoice, a marketing message or a call before it acts.

Endpoint: https://dutykit.dev/mcp (Streamable HTTP, public beta, free, no account, 200 tool calls per day per IP, no inputs stored) Docs: https://dutykit.dev · https://dutykit.dev/llms.txt · Guides

Connect

Claude Code:

bash
claude mcp add --transport http dutykit https://dutykit.dev/mcp

Any MCP client (JSON config):

json
{ "mcpServers": { "dutykit": { "type": "http", "url": "https://dutykit.dev/mcp" } } }

Tools

ToolWhat it does
pflichten(land, taetigkeit)Obligations for DE or LU plus EU-wide, filtered by activity: website, online_handel, rechnung, werbung, ki_kontakt, gruendung
rechnung_vorpruefen(rechnung, land="DE")Missing mandatory invoice fields under § 14 (4) UStG
werbung_vorpruefen(kanal, empfaenger, einwilligung_belegt, bestandskunde)May the agent send this marketing email or make this call? (§ 7 UWG)
ki_hinweis(firma, sprache)AI disclosure wording under AI Act Art. 50(1) in de, fr, en, lb
vat_pruefen(ust_id)Live EU VAT ID check via the European Commission's VIES service

Every check also returns a nachweis (timestamp, tool, responsible person, SHA-256 of the result) for the human who is liable.

Example prompts

  • "Before you publish the shop page: what does a website for a business in Luxembourg need?"
  • "Check this invoice for missing mandatory fields before you send it."
  • "May you send this newsletter to consumers who never opted in?"
  • "Start every call with the AI disclosure sentence in French for Muster S.à r.l."

Example result (pflichten, shortened)

json
{  "id": "de-impressum",  "pflicht": "Impressum mit Name, ladungsfähiger Anschrift, schneller elektronischer Kontaktmöglichkeit, ggf. Register und USt-IdNr.",  "grundlage": "§ 5 DDG",  "quelle": "https://www.gesetze-im-internet.de/ddg/__5.html",  "pruefstand": "belegt",  "geprueft": "2026-11-07"}

Catalogue

pflichten.json lists for every entry the legal basis, the source URL, the check date and whether it was checked against the legal text (belegt) or not yet (zu_pruefen). Coverage today: DE, LU, EU. Next: FR, BE. Corrections and additions with a primary source are welcome as issues or pull requests.

Not legal advice. DutyKit returns obligations, formats and checks against the cited texts, not advice on individual cases. Made with AI assistance.

Run locally

bash
uv run --with "mcp>=2" --with uvicorn uvicorn app:app --port 8080

Self-hosting with Docker and Caddy: see deploy/.

License

Code: MIT (see LICENSE). Obligation catalogue pflichten.json: CC BY 4.0, please credit "DutyKit (dutykit.dev)".

Source: README.md at commit 6baf92e

Tools

5

pflichten

Pflichten für ein Land (DE, LU) inkl. EU-weiter Pflichten. taetigkeit z. B. website, online_handel, rechnung, werbung, ki_kontakt, gruendung – leer = alle.

Parameterslandrequiredtaetigkeit

ki_hinweis

Formulierungsvorschlag für den KI-Hinweis nach AI Act Art. 50 Abs. 1 (de, fr, en, lb).

Parametersfirmarequiredsprache

vat_pruefen

Prüft eine EU-USt-IdNr. (z. B. LU26375245) live über die VIES-Schnittstelle der EU-Kommission.

Parametersust_idrequiredverantwortlich

rechnung_vorpruefen

Vorprüfung einer Rechnung auf Pflichtangaben (derzeit DE, § 14 Abs. 4 UStG). Erwartet Felder wie aussteller_name, rechnungsnummer, netto, steuersatz ODER steuerbefreiung_hinweis.

Parameterslandrechnungrequiredverantwortlich

werbung_vorpruefen

Darf ein Agent diese Werbung senden? kanal: email | telefon; empfaenger: verbraucher | unternehmen (DE, § 7 UWG).

Parameterskanalrequiredempfaengerrequiredbestandskundeverantwortlicheinwilligung_belegtrequired

Version history

1
  1. v0.1.1LatestNov 8, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts