{"id":565469,"recorded_at":"2026-10-27T21:56:16.737973Z","observed_at":"2026-10-27T21:56:16.737862Z","subject_kind":"endpoint","subject":"42de7ab7-d5f2-4f45-b1b6-79ec0ca87226","kind":"mcp.tools","method":"probe.mcp/1","body":{"count":6,"tools":[{"description":"Convert an e-invoice to UBL or CII. The result is checked before it is returned.\n\nInput: `invoice_base64` is the base64 of an XML invoice or a ZUGFeRD /\nFactur-X PDF, at most 4 MB decoded; or pass the file as a download link in\n`file`. `target_syntax` is \"ubl\" or \"cii\". `target_flavor` is optional,\n\"en16931\" or \"xrechnung\"; without it the flavor of the source is kept.\n\nReturns `xml`, `syntax`, `flavor` and `self_validation` (`valid`,\n`finding_count`). invowerk checks the converted XML before answering and never\nreturns an invalid document. Input that cannot be read or converted fails with\nan error message.\n\nCredits: 3 per call.","inputSchema":{"additionalProperties":false,"properties":{"file":{"default":null,"description":"The file as a download link, instead of `invoice_base64`. In ChatGPT, pass the user's uploaded file here. Other clients can set `download_url` to a public https URL.","properties":{"download_url":{"description":"A public https URL of the file.","type":"string"},"file_id":{"description":"An identifier for the file. ChatGPT sets it; other clients may pass any label, such as the file name.","type":"string"},"file_name":{"type":"string"},"mime_type":{"type":"string"}},"required":["download_url","file_id"],"type":"object"},"invoice_base64":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"The invoice file, base64-encoded. At most 4 MB decoded."},"target_flavor":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Optional: \"en16931\" or \"xrechnung\". Without it the flavor of the source is kept."},"target_syntax":{"description":"Syntax to convert to: \"ubl\" or \"cii\".","type":"string"}},"required":["target_syntax"],"type":"object"},"name":"convert_invoice"},{"description":"Explain rule codes in plain language. Works without an API key.\n\nCovers the codes of `validate_invoice` findings and hints: EN 16931,\nXRechnung, ZUGFeRD and invowerk's own hint codes (IW-*).\n\nInput: `codes` is a list of one or more codes, e.g. [\"BR-CO-18\", \"BR-DE-21\"].\nDuplicates are removed. `lang` is \"de\" (default) or \"en\".\n\nReturns `lang` and `explanations`. Each explanation has `title`, `meaning`,\n`causes`, `fixes`, `severity`, `standard`, `bt_refs`, `xpath_hints` and\n`explain_url` (the German page for the code). If any code is unknown, the call\nfails and names the unknown codes.\n\nCredits: free. This tool is not metered.","inputSchema":{"additionalProperties":false,"properties":{"codes":{"description":"One or more rule codes from validate_invoice, e.g. [\"BR-CO-18\", \"BR-DE-21\"].","items":{"type":"string"},"type":"array"},"lang":{"default":"de","description":"Language of the explanations: \"de\" (default) or \"en\".","enum":["de","en"],"type":"string"}},"required":["codes"],"type":"object"},"name":"explain_errors"},{"description":"Create a valid EN 16931 e-invoice (UBL or CII XML) from JSON.\n\nInput: `invoice` is a JSON object keyed on EN 16931 Business Terms, the same\nschema as `POST /v1/generate`, at most 4 MB. Main fields: `syntax` (\"ubl\"\ndefault, or \"cii\"), `flavor` (\"en16931\" default, or \"xrechnung\", which\nrequires `buyer_reference`, the Leitweg-ID BT-10, and `payment_iban`),\n`invoice_number`,\n`issue_date` (YYYY-MM-DD), `currency`, `seller`, `buyer`, `lines`,\n`tax_breakdown`, `totals`. invowerk writes your amounts as given. It does not\ncompute or correct them. Input that breaks an EN 16931 or XRechnung rule\nreturns an error naming each rule, e.g. BT-112 = BT-109 + BT-110 (BR-CO-15).\nDates are YYYY-MM-DD, amounts go up to 999,999,999.99.\n\nReturns `xml`, `syntax`, `flavor` and `self_validation`. invowerk checks the\nXML before answering and never returns an invalid document. Invalid input, or\nXML that fails the check, returns an error, as does a busy (`engine_busy`) or\noverrunning (`engine_timeout`) generate.\n\nCredits: 5 per call.","inputSchema":{"additionalProperties":false,"properties":{"invoice":{"additionalProperties":true,"description":"The invoice as a JSON object keyed on EN 16931 Business Terms, the schema of POST /v1/generate and of parse_invoice's `model`: syntax, flavor, invoice_number, issue_date, currency, seller, buyer, lines, tax_breakdown, totals.","type":"object"}},"required":["invoice"],"type":"object"},"name":"generate_invoice"},{"description":"Read an existing e-invoice into JSON keyed on EN 16931 Business Terms.\n\nThe JSON is the input format of `generate_invoice`, so you can edit it and\ncreate the invoice again.\n\nInput: `invoice_base64` is the base64 of an XML invoice (UBL or CII) or a\nZUGFeRD / Factur-X PDF, at most 4 MB decoded; or pass the file as a download\nlink in `file`. A PDF may have at most 500 pages and 16 attachments.\n\nReturns `model` (the invoice as JSON), `detection` (`syntax`, `flavor`,\n`customization_id`) and `source` (\"xml\" or \"pdf-embedded\"). A file that cannot\nbe read fails with an error that starts with an error code, e.g. a PDF without\nembedded XML, a UBL credit note, malformed XML, or a busy (`engine_busy`) or\noverrunning (`engine_timeout`) read.\n\nCredits: 2 per call.","inputSchema":{"additionalProperties":false,"properties":{"file":{"default":null,"description":"The file as a download link, instead of `invoice_base64`. In ChatGPT, pass the user's uploaded file here. Other clients can set `download_url` to a public https URL.","properties":{"download_url":{"description":"A public https URL of the file.","type":"string"},"file_id":{"description":"An identifier for the file. ChatGPT sets it; other clients may pass any label, such as the file name.","type":"string"},"file_name":{"type":"string"},"mime_type":{"type":"string"}},"required":["download_url","file_id"],"type":"object"},"invoice_base64":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"The invoice file, base64-encoded. At most 4 MB decoded."}},"type":"object"},"name":"parse_invoice"},{"description":"Render an XML e-invoice (UBL or CII, e.g. XRechnung) as a readable HTML page.\n\ninvowerk uses the KoSIT XRechnung visualization. Use it to show a person what\nan e-invoice contains.\n\nInput: `invoice_base64` is the base64 of the XML, at most 4 MB decoded, or pass\nthe file as a download link in `file`. PDFs are not accepted. `lang` sets the\nlabel language, \"de\" (default) or \"en\".\n\nReturns `html` (a complete HTML document), `lang`, `flavor` (e.g.\n\"xrechnung\") and `syntax` (e.g. \"ubl_invoice\"). A file that is not an XML\ninvoice, malformed XML or XML with a DOCTYPE fails with an error message,\nand so does a busy (`engine_busy`) or overrunning (`engine_timeout`) render.\n\nCredits: 1 per call.","inputSchema":{"additionalProperties":false,"properties":{"file":{"default":null,"description":"The file as a download link, instead of `invoice_base64`. In ChatGPT, pass the user's uploaded file here. Other clients can set `download_url` to a public https URL.","properties":{"download_url":{"description":"A public https URL of the file.","type":"string"},"file_id":{"description":"An identifier for the file. ChatGPT sets it; other clients may pass any label, such as the file name.","type":"string"},"file_name":{"type":"string"},"mime_type":{"type":"string"}},"required":["download_url","file_id"],"type":"object"},"invoice_base64":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"The invoice file, base64-encoded. At most 4 MB decoded."},"lang":{"default":"de","description":"Language of the labels: \"de\" (default) or \"en\".","enum":["de","en"],"type":"string"}},"type":"object"},"name":"render_invoice"},{"description":"Check an e-invoice against EN 16931 and German rules.\n\nInput: `invoice_base64` is the base64 of an XML invoice (UBL or CII) or a\nZUGFeRD / Factur-X PDF, at most 4 MB decoded; or pass the file as a download\nlink in `file`. `explain=true` adds an explanation to findings whose rule\nhas one, in `lang` (\"de\" or \"en\").\n\n`valid` is the result. For XRechnung the KoSIT validator decides. If it is\nunreachable, invowerk's own check with the same rules decides,\n`verdict_source` is \"local\" and `official_degraded` is true.\n`disagreement` is true when both ran and differ. `findings` lists each\nproblem with `rule_id`, `severity` and `message`; pass the codes to\n`explain_errors` (free). `pdfa_verdict` is the PDF/A check of a PDF.\n`hints` never change `valid`. Unreadable input returns a finding, not an\nerror. It fails with an error when the check is busy (`engine_busy`), ran\nlonger than 20 s (`engine_timeout`) or the XML has more than 100,000\nelements (`document_too_complex`).\n\nCredits: 1 per call.","inputSchema":{"additionalProperties":false,"properties":{"explain":{"default":false,"description":"true adds an explanation to each finding whose rule has one.","type":"boolean"},"file":{"default":null,"description":"The file as a download link, instead of `invoice_base64`. In ChatGPT, pass the user's uploaded file here. Other clients can set `download_url` to a public https URL.","properties":{"download_url":{"description":"A public https URL of the file.","type":"string"},"file_id":{"description":"An identifier for the file. ChatGPT sets it; other clients may pass any label, such as the file name.","type":"string"},"file_name":{"type":"string"},"mime_type":{"type":"string"}},"required":["download_url","file_id"],"type":"object"},"invoice_base64":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"The invoice file, base64-encoded. At most 4 MB decoded."},"lang":{"default":"de","description":"Language of the explanations: \"de\" (default) or \"en\".","enum":["de","en"],"type":"string"}},"type":"object"},"name":"validate_invoice"}]},"body_sha256":"2b20dd25d0e8c2da503da7168a60ac17b906b7802b6a3a8dc29ff2a92fab2002","prev_id":null,"leaf":"0x85e0472eb576defaee9423137a2faff76c49532227e6744e1253cfd72e47cd0c","leaf_text":"{\"body\":\"2b20dd25d0e8c2da503da7168a60ac17b906b7802b6a3a8dc29ff2a92fab2002\",\"id\":565469,\"kind\":\"mcp.tools\",\"method\":\"probe.mcp/1\",\"observed_us\":1793138176737862,\"prev\":null,\"subject\":\"42de7ab7-d5f2-4f45-b1b6-79ec0ca87226\",\"subject_kind\":\"endpoint\"}","day":{"day":"2026-10-27","leaves":273461,"root":"0xdd77e5e99da32c3f154180d63e3c3e6fe11e896a2c6896412ef6b5c4bcf7e795","chained":"0x23bb4dfd09f55c15ac3962f53578e02c6114d5bfd9bb451cf8794fb6e2817ef4","anchor_chain":"eip155:5042002","anchor_tx":"0xb2ebd83aafeb765a0ce66e76aefb133ed06606c98038fd56191e2bcd1dcb77b4","anchor_block":69414147},"proof":["0x85e0903e4e419771d32f8651926ae1862b833e1172159a9af6c49ed48095b4f8","0x488efb391bd93dbb90ad83a5b0a9cab90a9cf44c157c4efe9e4f3288bb8bd400","0xdc0c2273e88c41fcd0c3465847323da46953889db77412cd09f089a0d51340b9","0x25b7829ad2c97b4da0cd7a243275fd0ceef5dd720756ce1376443446e491e227","0x8efcc59710cf058e2e12237890c49d298c0d8d5209ff9e77dd11781bbf890127","0x9b06b89873c054111398ddb7faf40d9d9726b1022fb438d3ade1db9f9fa0e8b2","0x0015dca7e546fdfaa2768aa4052ecf3413b565ac4db524ef70b3c00ca11f06d5","0x05ca6eef8ea4b9b58bb95cc6b803665de2dfad0bc446628cc48959f2e18eb5f9","0x5028957b94cc25e4240b37de1a85e70b3fdac565f1aa00f14f3b4477399dfb78","0x96a0da13299187f33c6402d51c70a67e16424b1c2efecb62b5deff3accdc84f9","0x94b5117661526893571c5099bb213b21f54068dc9f381d688b9be7c593a99d91","0xe5ce8ac1ba4d6152605e0a032058cac5906d85f82e3fda1ad44852337b713b17","0x07d414626f116f3edc6ddb34183ed02538c3a805fec6db00f9d764f8fd595d04","0x4964f0806efde5ed25f60da2b45d78cd2e0f07d67e64aad2822f6016ad973c47","0x3c500ec3d3edf0c74b87a6ca8fcd77656bfbe03db3d478bd0c184d0c88839c6b","0xfecf3d4646dd4984a13dd715499e842c3fde63692336d97394c2bfd8e877ca5d","0xf30fddbf4811226c58e8f0daf36fddd79fc5f1356b592bb1d99a8061ddbabe66","0x2bf8151e5f157dd183b9de6fa00469551932a7a6e3f33a694895000ac9061197","0x9fc354c0ea3efc3f1b6548bb77ea902a50f2c9647647ea61592efce2bd795699"]}