{"serverId":"mcp-registry/de.zugferd-validator/validator","tools":[{"name":"check_consistency","fixed":{"name":"check_consistency","description":"Prüft ob die sichtbaren PDF-Daten mit den eingebetteten XML-Daten übereinstimmen.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["pdf_content"],"properties":{"pdf_content":{"type":"string","description":"Base64-kodierter Inhalt der ZUGFeRD-PDF-Datei"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":105,"tokensAfter":105},{"name":"create_invoice","fixed":{"name":"create_invoice","description":"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.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["format","number","date","buyer","lines"],"properties":{"date":{"type":"string","description":"Belegdatum (YYYY-MM-DD)"},"note":{"type":"string","description":"Freitext-Hinweis"},"buyer":{"type":"object","required":["name"],"properties":{"zip":{"$ref":"#/properties/seller/properties/zip"},"city":{"$ref":"#/properties/seller/properties/city"},"name":{"$ref":"#/properties/seller/properties/name"},"email":{"$ref":"#/properties/seller/properties/email"},"phone":{"$ref":"#/properties/seller/properties/phone"},"street":{"$ref":"#/properties/seller/properties/street"},"vat_id":{"$ref":"#/properties/seller/properties/vat_id"},"country":{"$ref":"#/properties/seller/properties/country"},"contact_name":{"$ref":"#/properties/seller/properties/contact_name"}},"description":"Käufer / Rechnungsempfänger","additionalProperties":false},"lines":{"type":"array","items":{"type":"object","required":["name","quantity","unit_net_price_cents","vat_rate"],"properties":{"name":{"type":"string","minLength":1,"description":"Bezeichnung der Position"},"unit":{"type":"string","description":"Einheit (UN/ECE Rec 20, Standard C62 = Stück)"},"quantity":{"type":"number","description":"Menge"},"vat_rate":{"type":"number","description":"USt-Satz in Prozent (0 bei Z/E/AE)"},"description":{"type":"string","description":"Optionale Detailbeschreibung"},"vat_category":{"enum":["S","Z","E","AE","K","G","O"],"type":"string","description":"USt-Kategorie (Standard S). Z=0%, E=befreit, AE=Reverse-Charge"},"unit_net_price_cents":{"type":"integer","description":"Netto-Einzelpreis in Cent"}},"additionalProperties":false},"minItems":1,"description":"Rechnungspositionen (mindestens eine)"},"format":{"enum":["zugferd","xrechnung"],"type":"string","description":"'zugferd' = PDF/A-3 mit eingebettetem XML, 'xrechnung' = reines XML"},"number":{"type":"string","minLength":1,"description":"Belegnummer"},"seller":{"type":"object","required":["name"],"properties":{"zip":{"type":"string","description":"Postleitzahl"},"city":{"type":"string","description":"Ort"},"name":{"type":"string","minLength":1,"description":"Firmenname / Name"},"email":{"type":"string","description":"E-Mail / elektronische Adresse (für XRechnung Pflicht)"},"phone":{"type":"string","description":"Telefon (Kontakt)"},"street":{"type":"string","description":"Straße und Hausnummer"},"vat_id":{"type":"string","description":"USt-IdNr. (z.B. DE123456789)"},"country":{"type":"string","maxLength":2,"minLength":2,"description":"ISO-3166 Alpha-2 Ländercode, Standard DE"},"contact_name":{"type":"string","description":"Ansprechpartner"}},"description":"Verkäufer / Rechnungssteller. Weglassen, wenn im Konto feste Absenderdaten hinterlegt sind — sie werden dann eingesetzt.","additionalProperties":false},"currency":{"type":"string","description":"Währung (Standard EUR)"},"due_date":{"type":"string","description":"Fälligkeitsdatum (YYYY-MM-DD)"},"type_code":{"type":"string","description":"Roher UNTDID-1001-Code (überschreibt document_type; für seltene Typen wie 875-877 Bauleistung)"},"self_check":{"type":"boolean","description":"Wenn true, wird die erzeugte Rechnung sofort gegen EN 16931 geprüft (langsamer). Standard: false."},"seller_logo":{"type":"string","description":"Logo als Base64 (PNG/JPG) — nur im Pro/Ultra-Tarif"},"delivery_date":{"type":"string","description":"Leistungs-/Lieferdatum (BT-72, YYYY-MM-DD). In Deutschland Pflichtangabe; ohne Angabe gilt das Belegdatum."},"document_type":{"enum":["invoice","credit_note","corrected","self_billed","prepayment","partial","debit_note"],"type":"string","description":"Dokumenttyp (Standard invoice). credit_note=Gutschrift/Storno, corrected=Korrektur, self_billed=Gutschriftverfahren, prepayment=Anzahlung, partial=Teilrechnung, debit_note=Belastungsanzeige. Mappt auf BT-3."},"payment_means":{"type":"object","properties":{"bic":{"type":"string","description":"BIC"},"iban":{"type":"string","description":"IBAN des Zahlungsempfängers"},"type_code":{"type":"string","description":"BT-81 UNTDID-4461-Code (z.B. 58 = SEPA-Überweisung)"},"account_name":{"type":"string","description":"Kontoinhaber"}},"description":"Zahlungsangaben (IBAN etc.)","additionalProperties":false},"payment_terms":{"type":"string","description":"Zahlungsbedingungen (Freitext)"},"billing_period":{"type":"object","required":["start","end"],"properties":{"end":{"type":"string"},"start":{"type":"string"}},"description":"Leistungszeitraum (BG-14, BT-73/74) bei laufenden Leistungen, jeweils YYYY-MM-DD. Ersetzt delivery_date.","additionalProperties":false},"buyer_reference":{"type":"string","description":"Leitweg-ID / Käuferreferenz (BT-10, bei XRechnung Pflicht)"},"preceding_invoice":{"type":"object","required":["number"],"properties":{"date":{"type":"string","description":"YYYY-MM-DD"},"number":{"type":"string"}},"description":"Bezug auf die Ursprungsrechnung (BT-25/26) — bei Storno, Korrektur oder Gutschrift angeben","additionalProperties":false},"allowances_charges":{"type":"array","items":{"type":"object","required":["charge","amount_cents","vat_rate"],"properties":{"charge":{"type":"boolean","description":"true = Zuschlag, false = Rabatt (auf Dokumentebene)"},"reason":{"type":"string","description":"Begründung"},"vat_rate":{"type":"number","description":"Zugehöriger USt-Satz in Prozent"},"amount_cents":{"type":"integer","description":"Betrag in Cent (positiv)"},"vat_category":{"$ref":"#/properties/lines/items/properties/vat_category","description":"Zugehörige USt-Kategorie (Standard S)"}},"additionalProperties":false},"description":"Rabatte/Zuschläge auf Dokumentebene"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":1681,"tokensAfter":1681},{"name":"validate_invoice","fixed":{"name":"validate_invoice","description":"Validiert eine E-Rechnung (ZUGFeRD/Factur-X PDF oder XRechnung XML) gegen EN 16931 und gibt strukturierte Ergebnisse mit Korrekturvorschlägen zurück.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["file_content","file_type"],"properties":{"profile":{"enum":["minimum","basic_wl","basic","en16931","extended","xrechnung"],"type":"string","description":"Erwartetes Profil (optional, wird automatisch erkannt)"},"file_type":{"enum":["pdf","xml"],"type":"string","description":"'pdf' für ZUGFeRD/Factur-X, 'xml' für XRechnung"},"file_content":{"type":"string","description":"Base64-kodierter Inhalt der PDF- oder XML-Datei"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":207,"tokensAfter":207}],"toolsChanged":3,"tokensSaved":0,"todo":[],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}