xmlvalid
Validate XML and e-invoices (XSD, DTD, RelaxNG, EN 16931, Peppol, XRechnung), explain errors
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"xmlvalid": {
"url": "https://xmlvalid.com/mcp"
}
}
}Remote endpoints
https://xmlvalid.com/mcpstreamable-httpWhat it can do
Tool inventory
Tools (5)
π’validate_xml(xml, url, schema, name, rules_version, ...)
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.
Input Schema
{
"type": "object",
"properties": {
"xml": {
"description": "The XML document itself. Use url instead for a document on the web.",
"type": "string"
},
"url": {
"description": "A public http(s) URL of the document, fetched by xmlvalid.",
"type": "string"
},
"schema": {
"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.",
"type": "string"
},
"name": {
"description": "A file name to show in the result, such as invoice-42.xml.",
"type": "string"
},
"rules_version": {
"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.",
"type": "string"
},
"wait": {
"description": "Seconds to wait for the result before returning a pending status to poll with get_validation.",
"default": 30,
"minimum": 0,
"maximum": 60,
"type": "integer"
}
}
}π’get_validation(id)
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.
Input Schema
{
"type": "object",
"properties": {
"id": {
"description": "The id validate_xml returned.",
"type": "string"
}
},
"required": [
"id"
]
}π’search_schemas(query)
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.
Input Schema
{
"type": "object",
"properties": {
"query": {
"description": "Words to look for, such as \"peppol invoice\", \"xrechnung cii\" or \"pain.001\". Leave out to list the first schemas.",
"type": "string"
}
}
}π’explain_error(message)
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.
Input Schema
{
"type": "object",
"properties": {
"message": {
"description": "The error message, as the parser or validator reported it.",
"type": "string"
}
},
"required": [
"message"
]
}π’explain_rule(id)
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.
Input Schema
{
"type": "object",
"properties": {
"id": {
"description": "The rule id as the validator reports it, such as BR-CO-15.",
"type": "string"
}
},
"required": [
"id"
]
}Community
Evidence