Rechnungslotse: deutsche E-Rechnung
XRechnung/ZUGFeRD erstellen, gegen EN 16931 prüfen, Fehler mit Regel-ID erklären. Ohne Konto.
我該用這個嗎
品質與安全性
發現項目(14)
- HIGH
- MEDIUM在 rechnung_pruefen 中
- LOW在 rechnung_pruefen 中
- LOW在 pflicht_pruefen 中
- LOW在 pflichtangaben_pruefen 中
- LOW在 kleinunternehmer_pruefen 中
- LOW在 rechnung_datei 中
- LOW在 betrieb_lesen 中
- LOW在 kunden_suchen 中
- LOW在 umsatzsteuer_aufstellung 中
根據工具定義與協定合規性的自動化分析。
上下文成本
這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。
安裝
一鍵安裝
將以下內容加入你的 `claude_desktop_config.json` 檔案:
{
"mcpServers": {
"e-rechnung": {
"url": "https://rechnungslotse.de/api/mcp"
}
}
}遠端端點
https://rechnungslotse.de/api/mcpstreamable-http它能做什麼
工具清單
工具(18)
🟢rechnung_pruefen(xml, datei_base64, dateiname)
Prüft eine XRechnung oder ein ZUGFeRD-PDF mit dem vollständigen Normprüfer (EN 16931 + KoSIT-Regeln) und liefert jeden Verstoß mit Regel-ID und Klartext. Die Datei wird nicht gespeichert; sie existiert nur für die Dauer der Prüfung. Zu jeder Regel-ID gibt es eine Erklärseite unter https://rechnungslotse.de/fehler/<regel-id>.
輸入結構描述
{
"type": "object",
"properties": {
"xml": {
"type": "string",
"description": "Der XML-Inhalt der E-Rechnung als Text (XRechnung/UBL oder CII). Entweder dieses Feld ODER datei_base64."
},
"datei_base64": {
"type": "string",
"description": "Die Datei Base64-kodiert – nötig für ZUGFeRD-PDF, geht auch für XML."
},
"dateiname": {
"type": "string",
"description": "Dateiname mit Endung (.xml oder .pdf) – daraus wird der Typ bestimmt. Vorgabe: rechnung.xml"
}
},
"additionalProperties": false
}🟢rechnung_lesen(xml, datei_base64, dateiname)
Liest den Datensatz einer XRechnung oder eines ZUGFeRD-PDF und gibt Absender, Empfänger, Positionen, Beträge, Fälligkeit und Bankverbindung strukturiert zurück – ohne die Datei zu speichern.
輸入結構描述
{
"type": "object",
"properties": {
"xml": {
"type": "string",
"description": "Der XML-Inhalt der E-Rechnung als Text (XRechnung/UBL oder CII). Entweder dieses Feld ODER datei_base64."
},
"datei_base64": {
"type": "string",
"description": "Die Datei Base64-kodiert – nötig für ZUGFeRD-PDF, geht auch für XML."
},
"dateiname": {
"type": "string",
"description": "Dateiname mit Endung (.xml oder .pdf) – daraus wird der Typ bestimmt. Vorgabe: rechnung.xml"
}
},
"additionalProperties": false
}🟢pflicht_pruefen(unternehmer, kunden, umsatz, kleinunternehmer, betraege)
Beantwortet für einen konkreten deutschen Betrieb, ab wann er E-Rechnungen ausstellen muss und was für den Empfang gilt – mit Datum und Paragraf (§ 27 Abs. 38 UStG, § 34a UStDV).
輸入結構描述
{
"type": "object",
"properties": {
"unternehmer": {
"type": "string",
"enum": [
"ja",
"nein"
],
"description": "Ist die Person Unternehmer im Sinne des UStG?"
},
"kunden": {
"type": "string",
"enum": [
"b2b",
"b2c",
"beides"
],
"description": "An wen wird fakturiert?"
},
"umsatz": {
"type": "string",
"enum": [
"bis800k",
"ueber800k"
],
"description": "Gesamtumsatz 2026 über oder bis 800.000 €?"
},
"kleinunternehmer": {
"type": "string",
"enum": [
"ja",
"nein"
],
"description": "Gilt § 19 UStG (Kleinunternehmer)?"
},
"betraege": {
"type": "string",
"enum": [
"alle_unter_250",
"gemischt"
],
"description": "Liegen alle Rechnungen unter 250 € (Kleinbetragsrechnungen)?"
}
},
"required": [
"unternehmer",
"kunden",
"umsatz",
"kleinunternehmer",
"betraege"
],
"additionalProperties": false
}🟢leitweg_pruefen(leitweg_id)
Zerlegt eine Leitweg-ID in Grobadressierung, Feinadressierung und Prüfziffer, rechnet die Prüfziffer nach MOD 97-10 nach und findet Zahlendreher.
輸入結構描述
{
"type": "object",
"properties": {
"leitweg_id": {
"type": "string",
"description": "Die Leitweg-ID, z. B. 991-33333-62"
}
},
"required": [
"leitweg_id"
],
"additionalProperties": false
}🟢fehler_erklaeren(regel)
Erklärt eine Regel-ID aus einer Prüfmeldung (z. B. BR-08, BR-CO-15, PEPPOL-EN16931-R053): was die Regel verlangt, welche Geschäftsfelder betroffen sind, die häufigsten Ursachen, die Schritte zur Behebung, was der Empfänger sieht und was zu tun ist, wenn die Rechnung schon versendet wurde. Ohne Angabe listet es alle erklärten Regeln auf.
輸入結構描述
{
"type": "object",
"properties": {
"regel": {
"type": "string",
"description": "Die Kennung aus der Fehlermeldung, z. B. BR-08. Groß-/Kleinschreibung egal."
}
},
"additionalProperties": false
}🟢pflichtangaben_pruefen(rechnungsnummer, rechnungsdatum, leistungsdatum, aussteller, empfaenger, ...)
Prüft die Angaben einer Rechnung gegen § 14 UStG – auch für eine Rechnung aus Word oder einem PDF ohne Datensatz. Meldet je Pflichtangabe, ob sie vorhanden ist, und berücksichtigt Kleinbetragsrechnungen (§ 33 UStDV), Kleinunternehmer (§ 19) und Reverse Charge (§ 13b).
輸入結構描述
{
"type": "object",
"properties": {
"rechnungsnummer": {
"type": "string"
},
"rechnungsdatum": {
"type": "string",
"description": "JJJJ-MM-TT"
},
"leistungsdatum": {
"type": "string",
"description": "JJJJ-MM-TT – Liefer- oder Leistungszeitpunkt."
},
"aussteller": {
"type": "object",
"description": "Wer die Rechnung stellt.",
"properties": {
"name": {
"type": "string"
},
"strasse": {
"type": "string"
},
"plz": {
"type": "string"
},
"ort": {
"type": "string"
},
"steuernummer": {
"type": "string",
"description": "Steuernummer oder USt-IdNr. des Ausstellers."
}
},
"additionalProperties": false
},
"empfaenger": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"strasse": {
"type": "string"
},
"plz": {
"type": "string"
},
"ort": {
"type": "string"
},
"ust_id": {
"type": "string"
}
},
"additionalProperties": false
},
"leistung": {
"type": "string",
"description": "Bezeichnung der Leistung oder Ware."
},
"netto": {
"type": "number",
"description": "Nettobetrag in Euro, z. B. 1190.00"
},
"ust_prozent": {
"type": "number",
"description": "19, 7 oder 0."
},
"kleinunternehmer": {
"type": "boolean",
"description": "Gilt § 19 UStG?"
},
"reverse_charge": {
"type": "boolean",
"description": "Steuerschuldnerschaft des Leistungsempfängers?"
},
"iban": {
"type": "string"
}
},
"additionalProperties": false
}🟢kleinunternehmer_pruefen(umsatz_vorjahr, umsatz_laufendes_jahr)
Prüft die beiden Umsatzgrenzen der Kleinunternehmerregelung in der ab 2025 geltenden Fassung: Vorjahr höchstens 25.000 €, laufendes Jahr höchstens 100.000 €. Sagt, ob die Regelung dieses und nächstes Jahr noch gilt – und dass sie bei Überschreiten der 100.000 € sofort endet, nicht erst zum Jahreswechsel.
輸入結構描述
{
"type": "object",
"properties": {
"umsatz_vorjahr": {
"type": "number",
"description": "Gesamtumsatz des Vorjahres in Euro."
},
"umsatz_laufendes_jahr": {
"type": "number",
"description": "Bisheriger Umsatz des laufenden Jahres in Euro."
}
},
"required": [
"umsatz_vorjahr",
"umsatz_laufendes_jahr"
],
"additionalProperties": false
}⚪rechnung_erstellen(empfaenger, positionen, bestellnummer)
Erzeugt eine geprüfte E-Rechnung (XRechnung, PDF, ZUGFeRD) im verbundenen Betrieb. Absender, Rechnungsnummer und Zahlungsziel kommen aus dem Betrieb. Gleiche bestellnummer = gleiche Rechnung (Idempotenz): Ein wiederholter Aufruf legt KEINE zweite Rechnung an. Zählt gegen das Monatskontingent des Tarifs.
輸入結構描述
{
"type": "object",
"properties": {
"empfaenger": {
"type": "object",
"description": "Der Rechnungsempfänger.",
"properties": {
"name": {
"type": "string"
},
"strasse": {
"type": "string"
},
"plz": {
"type": "string"
},
"ort": {
"type": "string"
},
"email": {
"type": "string",
"description": "E-Mail des Empfängers. PFLICHT für eine XRechnung (BT-49) – ohne sie weist der Normprüfer ab. Steht sie in der Kundenkartei, kommt sie aus kunden_suchen."
},
"ust_id": {
"type": "string",
"description": "USt-IdNr. des Empfängers, z. B. bei Reverse Charge."
},
"leitweg_id": {
"type": "string",
"description": "Leitweg-ID des öffentlichen Auftraggebers (BT-10), z. B. 991-33333-62. Pflicht bei Rechnungen an Behörden; die Prüfziffer wird nachgerechnet."
}
},
"required": [
"name",
"strasse",
"plz",
"ort",
"email"
],
"additionalProperties": false
},
"positionen": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"properties": {
"bezeichnung": {
"type": "string"
},
"menge": {
"type": "number",
"description": "Dezimal, z. B. 2 oder 1.5"
},
"einheit": {
"type": "string",
"description": "stueck, stunde, tag, pauschale, meter, m2, kg, liter, km – oder direkt ein UN/ECE-Code wie C62/HUR."
},
"einzelpreis": {
"type": "number",
"description": "Netto in Euro, z. B. 95.00"
},
"ust_prozent": {
"type": "number",
"description": "19, 7 oder 0."
},
"steuerkategorie": {
"type": "string",
"enum": [
"S",
"Z",
"E",
"AE",
"K",
"G",
"O"
],
"description": "Nur bei 0 % nötig: E befreit, AE Reverse Charge, K innergemeinschaftlich, G Ausfuhr, Z Nullsatz, O nicht steuerbar."
}
},
"required": [
"bezeichnung",
"menge",
"einzelpreis",
"ust_prozent"
],
"additionalProperties": false
}
},
"bestellnummer": {
"type": "string",
"description": "Eure Vorgangsnummer. Dient als Idempotency-Key und als Käuferreferenz auf der Rechnung."
}
},
"required": [
"empfaenger",
"positionen"
],
"additionalProperties": false
}🟢rechnung_datei(rechnung_id, format)
Holt eine Fassung einer erzeugten Rechnung. WICHTIG: „zugferd" ist die E-Rechnung ALS PDF – ein PDF/A-3 mit eingebettetem Rechnungsdatensatz, das Menschen lesen und Maschinen verarbeiten können. „pdf" ist nur das Sichtdokument OHNE Datensatz und damit keine E-Rechnung. Wer eine „saubere E-Rechnung als PDF" oder ein „PDF/A" will, nimmt zugferd. Nur bei xrechnung kommt der Inhalt mit; PDFs gibt es als Link, weil ein PDF als Base64 im Gespräch niemandem nützt.
輸入結構描述
{
"type": "object",
"properties": {
"rechnung_id": {
"type": "string",
"description": "Die id aus rechnung_erstellen."
},
"format": {
"type": "string",
"enum": [
"zugferd",
"xrechnung",
"pdf"
],
"description": "zugferd = E-Rechnung als PDF/A-3 mit eingebettetem Datensatz (der Regelfall für „PDF-Rechnung\"). xrechnung = nur der XML-Datensatz, für Behörden und zur Prüfung. pdf = Sichtdokument OHNE Datensatz, nur wenn ausdrücklich keine E-Rechnung gewünscht ist."
}
},
"required": [
"rechnung_id",
"format"
],
"additionalProperties": false
}🟢betrieb_lesen
Liest die Stammdaten des Betriebs, zu dem der Zugang gehört: Anschrift, Steuernummer, Bankverbindung.
輸入結構描述
{
"type": "object",
"properties": {},
"additionalProperties": false
}🟢rechnungen_suchen(status, von, bis, suche, limit)
Listet Rechnungen des verbundenen Betriebs – nach Zustand, Zeitraum oder Suchbegriff (Nummer oder Empfängername). Jede Zeile trägt den offenen Betrag und ob sie überfällig ist. Für Fragen wie „welche Rechnungen sind noch offen?" oder „was habe ich der Müller GmbH im Juli berechnet?".
輸入結構描述
{
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"draft",
"open",
"paid",
"overdue",
"cancelled"
],
"description": "Zustand: draft Entwurf, open offen, paid bezahlt, overdue überfällig, cancelled storniert."
},
"von": {
"type": "string",
"description": "Frühestes Rechnungsdatum, JJJJ-MM-TT."
},
"bis": {
"type": "string",
"description": "Spätestes Rechnungsdatum, JJJJ-MM-TT."
},
"suche": {
"type": "string",
"description": "Teil einer Rechnungsnummer oder eines Empfängernamens."
},
"limit": {
"type": "number",
"description": "Höchstzahl der Treffer, 1 bis 100. Vorgabe 25."
}
},
"additionalProperties": false
}🟢kunden_suchen(suche, limit)
Sucht in der Kundenkartei des Kontos und gibt die vollständige Anschrift zurück. VOR jedem rechnung_erstellen zu benutzen, wenn der Empfänger schon einmal beliefert wurde – die Anschrift ist eine Pflichtangabe nach § 14 UStG und darf nicht aus dem Gedächtnis stammen.
輸入結構描述
{
"type": "object",
"properties": {
"suche": {
"type": "string",
"description": "Teil des Namens, der Stadt oder der E-Mail-Adresse."
},
"limit": {
"type": "number",
"description": "Höchstzahl der Treffer, 1 bis 100. Vorgabe 20."
}
},
"additionalProperties": false
}🟢umsatzsteuer_aufstellung(von, bis)
Rechnet für einen Zeitraum die Netto- und Steuerbeträge je Steuersatz aus den Ausgangsrechnungen zusammen, mit ELSTER-Kennziffern. Ob nach Rechnungsdatum (Soll) oder Zahltag (Ist) gerechnet wird, entscheidet der hinterlegte Status des Betriebs. Enthält KEINE Vorsteuer und keine Korrekturen aus Vormonaten – es ist eine Aufstellung, keine fertige Voranmeldung.
輸入結構描述
{
"type": "object",
"properties": {
"von": {
"type": "string",
"description": "Erster Tag des Zeitraums, JJJJ-MM-TT."
},
"bis": {
"type": "string",
"description": "Letzter Tag des Zeitraums, JJJJ-MM-TT."
}
},
"required": [
"von",
"bis"
],
"additionalProperties": false
}⚪zahlung_erfassen(rechnung_id, betrag, datum, vorgang)
Verbucht einen Geldeingang auf eine Rechnung. Ohne Betrag gilt der offene Rest, ohne Datum der heutige Tag. Deckt der Betrag den Rest, wird die Rechnung als bezahlt geführt. Eine Überzahlung wird abgewiesen – dafür gehört eine Gutschrift erstellt.
輸入結構描述
{
"type": "object",
"properties": {
"rechnung_id": {
"type": "string",
"description": "Die id aus rechnungen_suchen oder rechnung_erstellen."
},
"betrag": {
"type": "number",
"description": "Betrag in Euro, z. B. 119.00. Ohne Angabe der offene Rest."
},
"datum": {
"type": "string",
"description": "Tag des Geldeingangs laut Kontoauszug, JJJJ-MM-TT. Ohne Angabe heute."
},
"vorgang": {
"type": "string",
"description": "Eigene Vorgangsnummer zur Wiederholungssicherung: Derselbe Wert verbucht die Zahlung KEIN zweites Mal."
}
},
"required": [
"rechnung_id"
],
"additionalProperties": false
}⚪leistung_erfassen(kunde, kunde_id, datum, bezeichnung, notiz, ...)
Schreibt eine erbrachte Leistung auf einen Kunden – Stunden, Material, Pauschalen, Fahrtkosten. Sie bleibt offen, bis sie abgerechnet wird. Preis und Steuersatz kommen aus dem Artikel, wenn einer genannt ist; mitgegebene Werte haben Vorrang. Für mehrere Posten dieses Werkzeug MEHRFACH aufrufen – es gibt bewusst keinen Stapel, damit jeder Posten einzeln zurückgemeldet wird.
輸入結構描述
{
"type": "object",
"properties": {
"kunde": {
"type": "string",
"description": "Name des Kunden, genau wie in der Kartei. Alternativ kunde_id aus kunden_suchen."
},
"kunde_id": {
"type": "string",
"description": "Kennung aus kunden_suchen – eindeutiger als der Name."
},
"datum": {
"type": "string",
"description": "Tag der LEISTUNG (nicht der Erfassung), JJJJ-MM-TT."
},
"bezeichnung": {
"type": "string",
"description": "Was geleistet wurde. Steht später auf der Rechnung."
},
"notiz": {
"type": "string",
"description": "Optional: erscheint nur im Leistungsnachweis, nicht auf der Position."
},
"menge": {
"type": "number",
"description": "Dezimal, z. B. 1.5 für anderthalb Stunden."
},
"einheit": {
"type": "string",
"description": "stunde, tag, stueck, pauschale, meter, m2, kg, liter, km. Ohne Angabe: Stunde."
},
"einzelpreis": {
"type": "number",
"description": "Netto in Euro. Ohne Angabe der Preis des Artikels."
},
"ust_prozent": {
"type": "number",
"description": "19, 7 oder 0. Ohne Angabe 19 bzw. der Satz des Artikels."
},
"artikel": {
"type": "string",
"description": "Name aus der Artikelliste – liefert Preis, Einheit und Steuersatz."
}
},
"required": [
"datum",
"bezeichnung",
"menge"
],
"additionalProperties": false
}🟢leistungen_offen(gruppiert, kunde_id, von, bis)
Zeigt, was erfasst und noch nicht in Rechnung gestellt ist – einzeln oder als Summe je Kunde. Für „was habe ich diesen Monat noch nicht abgerechnet?" und als Vorschau vor dem Monatsabschluss. Die Summen sind auf den Cent dieselben wie auf der späteren Rechnung.
輸入結構描述
{
"type": "object",
"properties": {
"gruppiert": {
"type": "boolean",
"description": "true = Summe je Kunde (die Monatsabschluss-Sicht), false = Einzelposten."
},
"kunde_id": {
"type": "string",
"description": "Nur die Leistungen dieses Kunden."
},
"von": {
"type": "string",
"description": "Frühestes Leistungsdatum, JJJJ-MM-TT."
},
"bis": {
"type": "string",
"description": "Spätestes Leistungsdatum, JJJJ-MM-TT."
}
},
"additionalProperties": false
}⚪leistungen_abrechnen(kunde_id, leistung_ids, von, bis, verdichten, ...)
Macht aus den offenen Leistungen EINES Kunden eine geprüfte E-Rechnung (XRechnung, PDF, ZUGFeRD). Ohne leistung_ids werden alle offenen Posten des Kunden im Zeitraum genommen. Gleiche Leistungen werden zu einer Rechnungsposition zusammengefasst; die Aufschlüsselung je Tag steht als Anlage „Leistungsnachweis“ im PDF. Eine Leistung kann nie auf zwei Rechnungen landen. Gleiche vorgangsnummer = gleiche Rechnung (Idempotenz). Zählt gegen das Monatskontingent.
輸入結構描述
{
"type": "object",
"properties": {
"kunde_id": {
"type": "string",
"description": "Wessen Leistungen abgerechnet werden."
},
"leistung_ids": {
"type": "array",
"items": {
"type": "string"
},
"description": "Genau diese Posten. Ohne Angabe alle offenen des Kunden im Zeitraum."
},
"von": {
"type": "string",
"description": "Frühestes Leistungsdatum, JJJJ-MM-TT."
},
"bis": {
"type": "string",
"description": "Spätestes Leistungsdatum, JJJJ-MM-TT."
},
"verdichten": {
"type": "boolean",
"description": "VORGABE JA. Die Rechnung zeigt dann eine Position je Leistungsart und die Anlage „Leistungsnachweis“ die Aufschlüsselung je Tag – so macht es jedes CRM. Auf false gesetzt trägt jede Leistung ihre eigene Position mit Datum; dann entfällt die Anlage, weil sie dieselben Zeilen doppelt zeigte."
},
"datum": {
"type": "string",
"description": "Rechnungsdatum, JJJJ-MM-TT. Ohne Angabe heute."
},
"vorgangsnummer": {
"type": "string",
"description": "Eure Vorgangsnummer als Wiederholungsschutz."
}
},
"required": [
"kunde_id"
],
"additionalProperties": false
}🟢offene_posten(limit)
Nennt die Rechnungen, deren Zahlungsziel abgelaufen ist, mit Tagen seit Fälligkeit, offenem Betrag und der Mahnstufe, die nach den Einstellungen des Betriebs fällig wäre. Für „wer schuldet mir noch Geld?" und die Vorbereitung eines Mahnlaufs.
輸入結構描述
{
"type": "object",
"properties": {
"limit": {
"type": "number",
"description": "Höchstzahl der Treffer, 1 bis 100. Vorgabe 25."
}
},
"additionalProperties": false
}社群
證據