Validates EU VAT numbers: local format/checksum for 27 states + XI, then VIES (cached 24 h).
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Aether API key. Free key: POST https://aether-layer.com/api/v0/keys with body {} (no email). 20 validate_vat calls per day, reset at midnight Europe/Rome.
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.
Deterministically grade an MCP tool catalog or a third-party x402 endpoint. Provide exactly one of: mcp_url (public https MCP server; initialize + tools/list), x402_url (public https resource; the gateway requests it WITHOUT an X-PAYMENT header and reads the 402), or tools (a JSON tool manifest). Never pays or signs a payment. No LLM is used. Requires an API key in Authorization: Bearer or X-Api-Key.
Tool manifest, as returned by tools/list.
Public https URL of a remote MCP server (Streamable HTTP).
Public https URL of a third-party x402 resource. The gateway never sends X-PAYMENT.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http eu-vat-validate 'https://aether-layer.com/api/mcp?src=mcpreg' \ --header 'X-Api-Key: YOUR_X_API_KEY'
Headers
X-Api-Key (required): Aether API key. Free key: POST https://aether-layer.com/api/v0/keys with body {} (no email). 20 validate_vat calls per day, reset at midnight Europe/Rome.Deterministically grade an MCP tool catalog or a third-party x402 endpoint. Provide exactly one of: mcp_url (public https MCP server; initialize + tools/list), x402_url (public https resource; the gateway requests it WITHOUT an X-PAYMENT header and reads the 402), or tools (a JSON tool manifest). Never pays or signs a payment. No LLM is used. Requires an API key in Authorization: Bearer or X-Api-Key.
| Argument | Type | Description |
|---|---|---|
| tools | array | Tool manifest, as returned by tools/list. |
| mcp_url | string | Public https URL of a remote MCP server (Streamable HTTP). |
| x402_url | string | Public https URL of a third-party x402 resource. The gateway never sends X-PAYMENT. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"tools": {
"type": "array",
"items": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string"
},
"annotations": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"readOnlyHint": {
"type": "boolean"
},
"openWorldHint": {
"type": "boolean"
},
"idempotentHint": {
"type": "boolean"
},
"destructiveHint": {
"type": "boolean"
}
}
},
"description": {
"type": "string"
},
"inputSchema": {}
}
},
"description": "Tool manifest, as returned by tools/list."
},
"mcp_url": {
"type": "string",
"format": "uri",
"description": "Public https URL of a remote MCP server (Streamable HTTP)."
},
"x402_url": {
"type": "string",
"format": "uri",
"description": "Public https URL of a third-party x402 resource. The gateway never sends X-PAYMENT."
}
}
}Validate an EU VAT number (27 member states + XI Northern Ireland). Normalizes the input, checks the national format and checksum locally, then queries VIES (European Commission) live with limited retries. status: valid | invalid (local checksum/format failed, or VIES answered valid=false) | unverified_ms_down (the member state system is down) | unverified. Results are cached across instances to respect VIES rules: valid/invalid 24 h, unverified 10 min; checked_at = time of the original VIES check, cache_age_s = its age in seconds. Never returns invalid because VIES is unavailable. The VIES name/address are never returned: pass your own name and/or address to get name_match / address_match booleans, computed locally (not sent to VIES; null when VIES has no data). Requires an API key in Authorization: Bearer or X-Api-Key. Controllo automatico: regole locali di formato e checksum più una consultazione live del VIES (Commissione europea). Non è un'attestazione fiscale né una consulenza legale; i dati VIES provengono dalle banche dati degli Stati membri. Conserva una tua traccia della consultazione VIES. / Automated check: local format/checksum rules plus a live query of VIES (European Commission). Not a tax attestation and not legal advice; VIES data come from the member states' databases. Keep your own record of the VIES consultation. / Automatische Prüfung: lokale Format- und Prüfziffernregeln plus eine Live-Abfrage von VIES (Europäische Kommission). Keine steuerliche Bescheinigung und keine Rechtsberatung; die VIES-Daten stammen aus den Datenbanken der Mitgliedstaaten. Bewahren Sie einen eigenen Nachweis der VIES-Abfrage auf.
| Argument | Type | Description |
|---|---|---|
| name | string | Optional company name to compare with the VIES record (local match, not sent to VIES, not stored). Returns name_match. |
| client | string | Optional integration id <name>/<version>, e.g. shopware-plugin/0.1. Adoption metric only. |
We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 12, 2026.
| vat_id* | string | VAT number with country prefix, e.g. IT00905811006, DE143454214, EL094014201 (GR accepted), XI…; spaces, dots and dashes are ignored. |
| address | string | Optional address to compare with the VIES record (local match, not sent to VIES, not stored). Returns address_match. |
| country | string | Optional ISO prefix when vat_id has none (e.g. IT). |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"vat_id"
],
"properties": {
"name": {
"type": "string",
"maxLength": 200,
"description": "Optional company name to compare with the VIES record (local match, not sent to VIES, not stored). Returns name_match."
},
"client": {
"type": "string",
"maxLength": 48,
"description": "Optional integration id <name>/<version>, e.g. shopware-plugin/0.1. Adoption metric only."
},
"vat_id": {
"type": "string",
"maxLength": 64,
"description": "VAT number with country prefix, e.g. IT00905811006, DE143454214, EL094014201 (GR accepted), XI…; spaces, dots and dashes are ignored."
},
"address": {
"type": "string",
"maxLength": 200,
"description": "Optional address to compare with the VIES record (local match, not sent to VIES, not stored). Returns address_match."
},
"country": {
"type": "string",
"maxLength": 2,
"minLength": 2,
"description": "Optional ISO prefix when vat_id has none (e.g. IT)."
}
}
}