Skip to main content
Glama

Validate an EU VAT number (live VIES lookup)

validate_vat_number
Read-onlyIdempotent

Check live whether an EU VAT number is valid and registered, for example before applying a B2B reverse charge, zero-rating an intra-EU sale or onboarding a supplier. Queries the European Commission's VIES registry and returns the verdict plus the registered business name and address where the authority discloses them. Coverage: the 27 EU member states plus 'XI' (Northern Ireland); use 'EL' for Greece. Other countries, including the UK, are not supported yet: say live validation is not available there rather than guessing. If the registry is down the response says so.

Input Schema

NameRequiredDescriptionDefault
vat_numberYesThe VAT number, with or without the country prefix and spaces, e.g. 'IE6388047V', 'IE 6388047V', or '6388047V'.
country_codeNo2-letter EU member-state code of the VAT number, e.g. 'DE', 'IE', 'FR'. Use 'EL' for Greece and 'XI' for Northern Ireland. May be omitted if the country prefix is already part of vat_number.

Output Schema

NameRequiredDescriptionDefault
validNotrue/false verdict from VIES, or null if the service could not be reached (an availability issue, not a verdict).
sourceNo
addressNo
messageNo
summaryNo
checked_atNo
source_urlNo
vat_numberNo
vies_errorNo
full_vat_idNo
next_actionNo
country_codeNo
business_nameNo
human_backingNoNamed accountant(s) who review that country's VAT guidance (guidance-level, not a per-figure sign-off).
confirm_availableNoAlways true: if the user asks, the VAT treatment can be sent for checking via share_with_openaccountants with request_review.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / properties / confirm_available / description
      Previous value: -"Whether the user can ask a named accountant to confirm the VAT treatment via ask_accountant_to_confirm."New value: +"Always true: if the user asks, the VAT treatment can be sent for checking via share_with_openaccountants with request_review."
  2. Added

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnly, idempotent, openWorld, non-destructive), but the description adds real behavior an agent needs: it hits an external EU registry, may return business name/address only where the authority discloses them, and reports registry downtime distinctly. The only gap is no mention of latency or rate limits on an external call.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the purpose, then usage, then coverage, then failure mode — a sensible information hierarchy. It runs four sentences and slightly overlaps the schema on country codes, but nothing is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return-value shape needn't be explained; the description instead covers what schema and annotations cannot: external-registry scope, country coverage and the downtime path. Nothing an agent needs before calling is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so both parameters are already documented with examples, prefix/spaces tolerance and the omission rule. The description adds only the coverage table ('EL' for Greece, 'XI' for Northern Ireland), which largely duplicates the schema's country_code text. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Starts with a specific verb+resource ('Check live whether an EU VAT number is valid and registered') and immediately scopes it to the VIES registry. No sibling tool in the list does VAT validation, so it is unambiguously distinguishable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Names concrete trigger scenarios (B2B reverse charge, zero-rating an intra-EU sale, supplier onboarding) and gives an explicit exclusion with a fallback instruction: other countries including the UK are unsupported, so say live validation is not available rather than guessing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.