xmlvalid

Validate XML and e-invoices (XSD, DTD, RelaxNG, EN 16931, Peppol, XRechnung), explain errors

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
96%
Naming quality
92%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~956Tokens (tool definitions)
~967 BTypical response size
Moderate attention impact (0.75% of 128k context)

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-http

What it can do

Tool inventory

Tools (5)

🟒 Read-only🟑 WriteπŸ”΄ Deleteβšͺ Unknown
🟒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

Rate this Server

Evidence

Recent observations

verifiedversion not recorded5 tools