Validate an EU VAT Number: Registered Status, Trader Name and Address (VIES)
vies/validate-vat
Checks one EU VAT number against the European Commission's VIES service, which asks the member state's own register live. Input is a country code (the 27 member-state VIES prefixes, Greece as EL, plus XI for Northern Ireland) and the number without the country prefix. Returns isValid, a userError status (VALID, or INVALID for a number that is not registered), the registered name and address when the member state discloses them ("---" or an empty string when it does not), and the request date. An unregistered number is a normal answer with isValid false, not an error. A member state whose back end is busy or down fails as a retryable error instead of answering isValid false. Not for GB numbers: VIES no longer serves them. European Commission data, served by Eden Engine; not an official European Commission product.
Price
$0.0026 per call
You pay the price shown. If a call turns out to cost more than its quote, you pay the actual price, capped at twice the quote. No monthly minimum. Top-ups start at $0.50.
Data source
Source: European Commission, VIES VAT number validation service (ec.europa.eu/taxation_customs/vies). Served by Eden Engine; not an official European Commission product.
Use it
Five steps: search, inspect, learn, run, settle. No per-tool setup; your agent reaches this tool through the meta-tools it already has.
Connect once and your AI can find and run this tool, and any other it needs.
// 1. search: find the tool
omnial_search({ query: "what you need" })
// 2. inspect: price and input schema
omnial_inspect({ tool: "vies/validate-vat" })
// 3. learn: read the usage guide at runtime
omnial_learn({ tool: "vies/validate-vat" })
// 4. run: price the exact call first, then run it
omnial_execute({ tool: "vies/validate-vat", input: { /* see input_schema */ }, dry_run: true })
omnial_execute({ tool: "vies/validate-vat", input: { /* ... */ } })
// 5. settle: the call is charged when it finishes, nothing to doNot connected yet? Point your MCP client at https://mcp.eden-engine.com/mcp, then copy a config for your client.
Pricing
Every charge this tool can incur.
| Charge | Price |
|---|---|
Per call | $0.0026 |
- Updated
- Oct 25, 2026
Input and output schemas
Input schema
{
"type": "object",
"required": [
"country",
"number"
],
"properties": {
"number": {
"type": "string",
"pattern": "^[0-9A-Za-z]{2,14}$",
"description": "The VAT number WITHOUT the country prefix, letters and digits only, for example 6388047V for IE6388047V or 820646660B01 for NL820646660B01. Spaces, dots and dashes must be removed first."
},
"country": {
"enum": [
"AT",
"BE",
"BG",
"CY",
"CZ",
"DE",
"DK",
"EE",
"EL",
"ES",
"FI",
"FR",
"HR",
"HU",
"IE",
"IT",
"LT",
"LU",
"LV",
"MT",
"NL",
"PL",
"PT",
"RO",
"SE",
"SI",
"SK",
"XI"
],
"type": "string",
"description": "VIES country prefix: the member-state ISO code, except Greece which is EL, plus XI for Northern Ireland. Lower case is accepted by the service but the enum is upper case."
}
},
"additionalProperties": false
}Output schema
{
"type": "object",
"required": [
"isValid",
"userError"
],
"properties": {
"name": {
"type": "string",
"description": "Registered trader name, or \"---\" or an empty string when the member state does not disclose it or the number is not valid."
},
"address": {
"type": "string",
"description": "Registered address, possibly with line breaks, or \"---\" or an empty string when not disclosed or not valid."
},
"isValid": {
"type": "boolean",
"description": "True when the member state's register holds the number as an active VAT registration."
},
"userError": {
"type": "string",
"description": "VIES status: VALID or INVALID for a finished check. The known busy, unavailable and invalid-input codes are refused before they reach the customer."
},
"vatNumber": {
"type": "string",
"description": "The number as VIES normalised it (upper case, spaces removed)."
},
"requestDate": {
"type": "string",
"description": "When VIES answered, an ISO 8601 timestamp in UTC."
},
"viesApproximate": {
"type": "object",
"description": "Approximate-match results; always placeholders (\"---\" and 3) because the tool sends no trader details to match.",
"additionalProperties": true
},
"originalVatNumber": {
"type": "string",
"description": "The number as sent."
},
"requestIdentifier": {
"type": "string",
"description": "VIES consultation number; empty because the tool sends no requester details."
}
},
"additionalProperties": true
}