Skip to main content
Glama

validate_vat

Read-onlyIdempotent

Call before issuing an invoice, processing a cross-border payment, or storing a counterparty's VAT number. Validate a VAT registration number against the official EU VIES service (or HMRC for GB). Returns validity status, registered name, and registered address.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
countryYesISO 3166-1 alpha-2 country code, UPPERCASE. Use GB for the United Kingdom (HMRC), not UK. Supports all EU member states plus GB and NO.
vat_numberYesVAT number WITHOUT country prefix — just the digits/characters. Example: for DK29403473, pass '29403473'.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameNoRegistered company name, if disclosed by the source.
validNoTrue if VIES / HMRC confirms the number is registered and active.
sourceNoEither 'VIES' or 'HMRC'.
addressNoRegistered address, if disclosed.
countryNoCountry code echoed back (uppercase).
checked_atNoISO-8601 timestamp of the validation.
vat_numberNoSubmitted VAT number (without country prefix).

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint, openWorldHint, idempotentHint), the description discloses external service calls (VIES/HMRC) and the returned fields. This adds valuable behavioral context without contradicting the annotations.

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

Conciseness5/5

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

Three sentences efficiently deliver usage trigger, core function, and return values with no redundancy.

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?

Given the simple tool shape, rich input schema, and existing output schema, the description covers when to use it, what it does, and what it returns. The openWorldHint annotation complements the external service mention, leaving no critical gaps.

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?

Both parameters are fully described in the schema (100% coverage), including the country enum and the no-prefix VAT example. The tool description does not add further parameter semantics, so a baseline score of 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?

The description states 'Validate a VAT registration number against the official EU VIES service (or HMRC for GB)', using a specific verb and resource. It also notes the return values, distinguishing it from sibling tools like lookup_company or screen_sanctions.

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

Usage Guidelines4/5

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

The opening line instructs to 'Call before issuing an invoice, processing a cross-border payment, or storing a counterparty's VAT number', giving explicit use scenarios. It does not name alternatives, so it lacks a when-not/alternative clause.

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.

TDQS

A4.3/5.0
Disambiguation5/5

Each tool targets a clearly distinct function: address autocomplete, company lookup, enriched company data, KYB report, LEI lookup, sanctions screening, VAT validation, French history, and three discovery meta-tools. The discovery tools (list_endpoints, get_endpoint_schema, call_endpoint) form a clean trio with distinct roles. There is minor overlap between company_enriched, kyb_full, and lookup_company, but their scopes are well-differentiated in the descriptions.

Naming Consistency4/5

The naming pattern is largely consistent with noun-based descriptive names (company_enriched, lookup_company, lookup_lei, validate_vat, screen_sanctions, autocomplete_address). Three discovery tools use verb-based names (list_endpoints, get_endpoint_schema, call_endpoint), and fr_history breaks the pattern as a country-specific tool. Minor inconsistency but readable and predictable overall.

Tool Count4/5

11 tools is within a reasonable range for a data-provider server that covers 15 countries and multiple data domains (entities, sanctions, VAT, addresses, LEI). Each tool addresses a distinct need. Slightly heavy given some overlap, but the count is justified by the breadth of coverage.

Completeness4/5

The core business-intelligence surface is well covered: company lookup, enriched data, full KYB, LEI, sanctions, VAT, address autocomplete, and French history. The discovery meta-tools (list_endpoints, get_endpoint_schema, call_endpoint) elegantly bridge gaps by exposing 230+ additional endpoints. Minor gaps: no dedicated UK-specific or non-French history tool, and screening is limited to sanctions/PEP without a dedicated adverse-media tool separate from kyb_full.