ZUGFeRD Validator

Validiert E-Rechnungen (ZUGFeRD/Factur-X, XRechnung) gegen EN 16931 mit Korrekturvorschlägen.

使うべきか

品質と安全性

A
説明の品質
76%
スキーマの完全性
100%
命名の品質
92%
ポイズニングのリスク
100%
権限の一致
100%
プロトコルへの準拠
100%

検出事項(4)

  • LOWTool 'validate_invoice' description lacks action verbvalidate_invoice 内
  • LOWTool 'extract_xml' description lacks action verbextract_xml 内
  • LOWTool 'check_consistency' description lacks action verbcheck_consistency 内
  • LOWTool 'create_invoice' description lacks action verbcreate_invoice 内

ツール定義とプロトコルへの準拠に関する自動分析に基づいています。

コンテキストコスト

~2,357トークン数(ツール定義)
~4.3 KB一般的なレスポンスサイズ
注意への影響は中程度(128k コンテキストの 1.84%)

これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。

インストール

ワンクリックインストール

これを `claude_desktop_config.json` ファイルに追加してください:

{
  "mcpServers": {
    "validator": {
      "command": "npx",
      "args": [
        "zugferd-mcp-client"
      ]
    }
  }
}

実行可能なパッケージ

npmzugferd-mcp-client1.1.1stdio

リモートエンドポイント

https://api.zugferd-validator.de/mcpstreamable-http

できること

ツール一覧

ツール(5)

🟢 読み取り専用🟡 書き込み🔴 削除⚪ 不明
⚪validate_invoice(file_content, file_type, profile)

Validiert eine E-Rechnung (ZUGFeRD/Factur-X PDF oder XRechnung XML) gegen EN 16931 und gibt strukturierte Ergebnisse mit Korrekturvorschlägen zurück.

入力スキーマ

{
  "type": "object",
  "properties": {
    "file_content": {
      "type": "string",
      "description": "Base64-kodierter Inhalt der PDF- oder XML-Datei"
    },
    "file_type": {
      "type": "string",
      "enum": [
        "pdf",
        "xml"
      ],
      "description": "'pdf' für ZUGFeRD/Factur-X, 'xml' für XRechnung"
    },
    "profile": {
      "type": "string",
      "enum": [
        "minimum",
        "basic_wl",
        "basic",
        "en16931",
        "extended",
        "xrechnung"
      ],
      "description": "Erwartetes Profil (optional, wird automatisch erkannt)"
    }
  },
  "required": [
    "file_content",
    "file_type"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢extract_xml(pdf_content)

Extrahiert die eingebettete XML-Datei aus einem ZUGFeRD/Factur-X PDF.

入力スキーマ

{
  "type": "object",
  "properties": {
    "pdf_content": {
      "type": "string",
      "description": "Base64-kodierter Inhalt der ZUGFeRD-PDF-Datei"
    }
  },
  "required": [
    "pdf_content"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢check_consistency(pdf_content)

Prüft ob die sichtbaren PDF-Daten mit den eingebetteten XML-Daten übereinstimmen.

入力スキーマ

{
  "type": "object",
  "properties": {
    "pdf_content": {
      "type": "string",
      "description": "Base64-kodierter Inhalt der ZUGFeRD-PDF-Datei"
    }
  },
  "required": [
    "pdf_content"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡create_invoice(format, document_type, type_code, preceding_invoice, number, ...)

Erstellt aus strukturierten Daten eine valide E-Rechnung — entweder als ZUGFeRD-PDF (PDF/A-3 mit eingebettetem XML) oder als reines XRechnung-XML (mit Leitweg-ID für B2G). Unterstützt mehrere Positionen, alle USt-Kategorien, Rabatte/Zuschläge und Zahlungsangaben. Stateless — es wird nichts gespeichert.

入力スキーマ

{
  "type": "object",
  "properties": {
    "format": {
      "type": "string",
      "enum": [
        "zugferd",
        "xrechnung"
      ],
      "description": "'zugferd' = PDF/A-3 mit eingebettetem XML, 'xrechnung' = reines XML"
    },
    "document_type": {
      "type": "string",
      "enum": [
        "invoice",
        "credit_note",
        "corrected",
        "self_billed",
        "prepayment",
        "partial",
        "debit_note"
      ],
      "description": "Dokumenttyp (Standard invoice). credit_note=Gutschrift/Storno, corrected=Korrektur, self_billed=Gutschriftverfahren, prepayment=Anzahlung, partial=Teilrechnung, debit_note=Belastungsanzeige. Mappt auf BT-3."
    },
    "type_code": {
      "type": "string",
      "description": "Roher UNTDID-1001-Code (überschreibt document_type; für seltene Typen wie 875-877 Bauleistung)"
    },
    "preceding_invoice": {
      "type": "object",
      "properties": {
        "number": {
          "type": "string"
        },
        "date": {
          "type": "string",
          "description": "YYYY-MM-DD"
        }
      },
      "required": [
        "number"
      ],
      "additionalProperties": false,
      "description": "Bezug auf die Ursprungsrechnung (BT-25/26) — bei Storno, Korrektur oder Gutschrift angeben"
    },
    "number": {
      "type": "string",
      "minLength": 1,
      "description": "Belegnummer"
    },
    "date": {
      "type": "string",
      "description": "Belegdatum (YYYY-MM-DD)"
    },
    "currency": {
      "type": "string",
      "description": "Währung (Standard EUR)"
    },
    "seller": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "minLength": 1,
          "description": "Firmenname / Name"
        },
        "street": {
          "type": "string",
          "description": "Straße und Hausnummer"
        },
        "zip": {
          "type": "string",
          "description": "Postleitzahl"
        },
        "city": {
          "type": "string",
          "description": "Ort"
        },
        "country": {
          "type": "string",
          "minLength": 2,
          "maxLength": 2,
          "description": "ISO-3166 Alpha-2 Ländercode, Standard DE"
        },
        "vat_id": {
          "type": "string",
          "description": "USt-IdNr. (z.B. DE123456789)"
        },
        "email": {
          "type": "string",
          "description": "E-Mail / elektronische Adresse (für XRechnung Pflicht)"
        },
        "phone": {
          "type": "string",
          "description": "Telefon (Kontakt)"
        },
        "contact_name": {
          "type": "string",
          "description": "Ansprechpartner"
        }
      },
      "required": [
        "name"
      ],
      "additionalProperties": false,
      "description": "Verkäufer / Rechnungssteller. Weglassen, wenn im Konto feste Absenderdaten hinterlegt sind — sie werden dann eingesetzt."
    },
    "buyer": {
      "type": "object",
      "properties": {
        "name": {
          "$ref": "#/properties/seller/properties/name"
        },
        "street": {
          "$ref": "#/properties/seller/properties/street"
        },
        "zip": {
          "$ref": "#/properties/seller/properties/zip"
        },
        "city": {
          "$ref": "#/properties/seller/properties/city"
        },
        "country": {
          "$ref": "#/properties/seller/properties/country"
        },
        "vat_id": {
          "$ref": "#/properties/seller/properties/vat_id"
        },
        "email": {
          "$ref": "#/properties/seller/properties/email"
        },
        "phone": {
          "$ref": "#/properties/seller/properties/phone"
        },
        "contact_name": {
          "$ref": "#/properties/seller/properties/contact_name"
        }
      },
      "required": [
        "name"
      ],
      "additionalProperties": false,
      "description": "Käufer / Rechnungsempfänger"
    },
    "lines": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "description": "Bezeichnung der Position"
          },
          "description": {
            "type": "string",
            "description": "Optionale Detailbeschreibung"
          },
          "quantity": {
            "type": "number",
            "description": "Menge"
          },
          "unit": {
            "type": "string",
            "description": "Einheit (UN/ECE Rec 20, Standard C62 = Stück)"
          },
          "unit_net_price_cents": {
            "type": "integer",
            "description": "Netto-Einzelpreis in Cent"
          },
          "vat_category": {
            "type": "string",
            "enum": [
              "S",
              "Z",
              "E",
              "AE",
              "K",
              "G",
              "O"
            ],
            "description": "USt-Kategorie (Standard S). Z=0%, E=befreit, AE=Reverse-Charge"
          },
          "vat_rate": {
            "type": "number",
            "description": "USt-Satz in Prozent (0 bei Z/E/AE)"
          }
        },
        "required": [
          "name",
          "quantity",
          "unit_net_price_cents",
          "vat_rate"
        ],
        "additionalProperties": false
      },
      "minItems": 1,
      "description": "Rechnungspositionen (mindestens eine)"
    },
    "allowances_charges": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "charge": {
            "type": "boolean",
            "description": "true = Zuschlag, false = Rabatt (auf Dokumentebene)"
          },
          "amount_cents": {
            "type": "integer",
            "description": "Betrag in Cent (positiv)"
          },
          "reason": {
            "type": "string",
            "description": "Begründung"
          },
          "vat_category": {
            "$ref": "#/properties/lines/items/properties/vat_category",
            "description": "Zugehörige USt-Kategorie (Standard S)"
          },
          "vat_rate": {
            "type": "number",
            "description": "Zugehöriger USt-Satz in Prozent"
          }
        },
        "required": [
          "charge",
          "amount_cents",
          "vat_rate"
        ],
        "additionalProperties": false
      },
      "description": "Rabatte/Zuschläge auf Dokumentebene"
    },
    "note": {
      "type": "string",
      "description": "Freitext-Hinweis"
    },
    "buyer_reference": {
      "type": "string",
      "description": "Leitweg-ID / Käuferreferenz (BT-10, bei XRechnung Pflicht)"
    },
    "payment_terms": {
      "type": "string",
      "description": "Zahlungsbedingungen (Freitext)"
    },
    "due_date": {
      "type": "string",
      "description": "Fälligkeitsdatum (YYYY-MM-DD)"
    },
    "delivery_date": {
      "type": "string",
      "description": "Leistungs-/Lieferdatum (BT-72, YYYY-MM-DD). In Deutschland Pflichtangabe; ohne Angabe gilt das Belegdatum."
    },
    "billing_period": {
      "type": "object",
      "properties": {
        "start": {
          "type": "string"
        },
        "end": {
          "type": "string"
        }
      },
      "required": [
        "start",
        "end"
      ],
      "additionalProperties": false,
      "description": "Leistungszeitraum (BG-14, BT-73/74) bei laufenden Leistungen, jeweils YYYY-MM-DD. Ersetzt delivery_date."
    },
    "payment_means": {
      "type": "object",
      "properties": {
        "type_code": {
          "type": "string",
          "description": "BT-81 UNTDID-4461-Code (z.B. 58 = SEPA-Überweisung)"
        },
        "iban": {
          "type": "string",
          "description": "IBAN des Zahlungsempfängers"
        },
        "bic": {
          "type": "string",
          "description": "BIC"
        },
        "account_name": {
          "type": "string",
          "description": "Kontoinhaber"
        }
      },
      "additionalProperties": false,
      "description": "Zahlungsangaben (IBAN etc.)"
    },
    "seller_logo": {
      "type": "string",
      "description": "Logo als Base64 (PNG/JPG) — nur im Pro/Ultra-Tarif"
    },
    "self_check": {
      "type": "boolean",
      "description": "Wenn true, wird die erzeugte Rechnung sofort gegen EN 16931 geprüft (langsamer). Standard: false."
    }
  },
  "required": [
    "format",
    "number",
    "date",
    "buyer",
    "lines"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
⚪validation_report(file_content, file_type, attach_source, lang, file_name)

Erzeugt aus einer E-Rechnung einen Validierungsbericht als PDF (PDF/A-3b) zum Ablegen und Weitergeben. Der Bericht nennt Ergebnis, alle Meldungen mit Regel-ID und Feld, den Prüfzeitpunkt, Format und Profil, die SHA-256-Prüfsumme der geprüften Datei sowie die Versionen der Prüfwerkzeuge. Auf Wunsch wird die geprüfte Rechnung sichtbar angehängt. Gibt das PDF base64-kodiert zurück. Ab dem Tarif Automatisieren.

入力スキーマ

{
  "type": "object",
  "properties": {
    "file_content": {
      "type": "string",
      "description": "Base64-kodierter Inhalt der PDF- oder XML-Datei"
    },
    "file_type": {
      "type": "string",
      "enum": [
        "pdf",
        "xml"
      ],
      "description": "Dateityp: 'pdf' für ZUGFeRD/Factur-X, 'xml' für XRechnung/CII"
    },
    "attach_source": {
      "type": "boolean",
      "description": "Geprüfte Rechnung sichtbar anhängen (PDF-Seiten bzw. abgedruckter XML-Inhalt). Standard false."
    },
    "lang": {
      "type": "string",
      "enum": [
        "de",
        "en",
        "fr"
      ],
      "description": "Sprache des Berichts. Standard 'de'."
    },
    "file_name": {
      "type": "string",
      "description": "Dateiname, der im Bericht steht."
    }
  },
  "required": [
    "file_content",
    "file_type"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

コミュニティ

このサーバーを評価する

エビデンス

最近の観測

検証済みバージョンは記録されていませんツール 5 件
検証済みバージョンは記録されていませんツール 5 件