Validate XML and e-invoices (XSD, DTD, RelaxNG, EN 16931, Peppol, XRechnung), explain errors
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
An xmlvalid API key (Dashboard → API keys, free tier), for validate_xml and get_validation; the lookup tools need none
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Explain an XML parsing or schema validation error message: what it means, why it happens and how to fix it, with an example. Understands libxml2 (xmllint, PHP, Python lxml, xmlvalid), Java (Xerces cvc-* codes, SAXParseException) and .NET (System.Xml) wording; paste the message as reported, stack trace prefix included. No API key needed.
The error message, as the parser or validator reported it.
Explain an XML parsing or schema validation error message: what it means, why it happens and how to fix it, with an example. Understands libxml2 (xmllint, PHP, Python lxml, xmlvalid), Java (Xerces cvc-* codes, SAXParseException) and .NET (System.Xml) wording; paste the message as reported, stack trace prefix included. No API key needed.
| Argument | Type | Description |
|---|---|---|
| message* | string | The error message, as the parser or validator reported it. |
{
"type": "object",
"required": [
"message"
],
"properties": {
"message": {
"type": "string",
"description": "The error message, as the parser or validator reported it."
}
}
}Explain an e-invoicing business rule by its id, such as BR-CO-15, BR-DE-1, PEPPOL-EN16931-R001 or a national CIUS rule: its message, level, the rule sets it belongs to, why invoices fail it and how to fix them. No API key needed.
| Argument | Type | Description |
|---|---|---|
| id* | string | The rule id as the validator reports it, such as BR-CO-15. |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "The rule id as the validator reports it, such as BR-CO-15."
}
}
}The status and result of a validation started with validate_xml that was still running when it returned (status "queued" or "running"). Results are kept for 24 hours.
| Argument | Type | Description |
|---|---|---|
| id* | string | The id validate_xml returned. |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "The id validate_xml returned."
}
}
}Search xmlvalid's catalog of official XML schemas (UBL, CII, Peppol, XRechnung, Factur-X, ISO 20022, HL7, sitemaps…) by name, namespace, root element or area. Returns each schema's slug to pass to validate_xml, its version and the business rules it checks. No API key needed.
| Argument | Type | Description |
|---|---|---|
| query | string | Words to look for, such as "peppol invoice", "xrechnung cii" or "pain.001". Leave out to list the first schemas. |
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Words to look for, such as \"peppol invoice\", \"xrechnung cii\" or \"pain.001\". Leave out to list the first schemas."
}
}
}Validate an XML document with xmlvalid: well-formedness, an XSD, DTD or RelaxNG schema, and for e-invoices the Schematron business rules of EN 16931, Peppol BIS, XRechnung, Factur-X and national formats. Pass the document as `xml` (its text) or `url` (a public http(s) address), and a `schema`: a catalog slug from search_schemas, a saved schema ("@orders-v3"), or "auto" to use the e-invoice profile the document names. Without a schema only well-formedness is checked. Returns valid, errors and warnings with line, column, message, rule and a help_url explaining each. Counts as one API validation of the key's monthly quota.
| Argument | Type | Description |
|---|---|---|
| url | string | A public http(s) URL of the document, fetched by xmlvalid. |
| xml | string | The XML document itself. Use url instead for a document on the web. |
| name | string | A file name to show in the result, such as invoice-42.xml. |
| wait | integer | Seconds to wait for the result before returning a pending status to poll with get_validation. |
| schema | string | A catalog slug (see search_schemas), "@<name>" for a saved schema, or "auto" for the e-invoice profile the document names. Leave out to check well-formedness only. |
| rules_version | string | Pin Schematron rule sets to releases, as rule-set@version, comma-separated ([email protected]): the call fails with rules_version_mismatch when one has moved on. The result's rule_sets lists the releases that ran. |
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "A public http(s) URL of the document, fetched by xmlvalid."
},
"xml": {
"type": "string",
"description": "The XML document itself. Use url instead for a document on the web."
},
"name": {
"type": "string",
"description": "A file name to show in the result, such as invoice-42.xml."
},
"wait": {
"type": "integer",
"default": 30,
"maximum": 60,
"minimum": 0,
"description": "Seconds to wait for the result before returning a pending status to poll with get_validation."
},
"schema": {
"type": "string",
"description": "A catalog slug (see search_schemas), \"@<name>\" for a saved schema, or \"auto\" for the e-invoice profile the document names. Leave out to check well-formedness only."
},
"rules_version": {
"type": "string",
"description": "Pin Schematron rule sets to releases, as rule-set@version, comma-separated ([email protected]): the call fails with rules_version_mismatch when one has moved on. The result's rule_sets lists the releases that ran."
}
}
}