Skip to main content
Glama
MaurizioLisanti

fatturapa-mcp-server

verify_piva_vies

Validate EU VAT numbers against VIES to confirm active status and retrieve registered business details. Returns source 'unavailable' on timeout instead of failing.

Instructions

Verify a VAT number against the EU VIES (VAT Information Exchange System).

Calls the official EU VIES REST endpoint with a configurable timeout. On timeout or service unavailability, returns a degraded response with source="unavailable" rather than raising — the caller must handle this case.

Args: country_code: Two-letter ISO 3166-1 alpha-2 country code (e.g., "IT"). vat_number: VAT number without the country prefix (e.g., "12345678901"). ctx: Optional MCP context for structured log emission.

Returns: A VerifyPivaViesResult with keys: valid (bool): Whether VIES confirmed the VAT number as active. name (str | None): Registered business name, if disclosed by VIES. address (str | None): Registered address, if disclosed by VIES. source (str): "vies" if live response, "unavailable" if service down.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
vat_numberYes
country_codeYes

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYes
validYes
sourceYes
addressYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.3.2

TDQS

A3.6/5.0
Behavior4/5

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

With no annotations provided, the description carries the full behavioral burden. It discloses that the tool calls the official EU VIES REST endpoint, supports a configurable timeout, and returns a degraded response with source='unavailable' on timeout or service unavailability rather than raising an exception. This is valuable non-obvious behavior. It does not discuss rate limits or authentication requirements, but for a public verification endpoint those are less critical.

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?

The description is front-loaded with purpose, then behavioral caveats, then Args and Returns sections. The structure is logical and readable. It is slightly verbose because it repeats return-value details that an output schema already provides, but every sentence is informative and there is no filler.

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

Completeness4/5

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

Given that no annotations are provided and output schema exists, the description does a good job of covering purpose, key behavioral traits (timeout, degraded response), and parameter formats. It is nearly complete for an agent to call the tool correctly. The main gap is the lack of routing guidance versus sibling tools like check_piva, which leaves an agent to infer when this tool is preferable.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It documents both real input parameters: country_code as a two-letter ISO 3166-1 alpha-2 code with an example ('IT'), and vat_number as the VAT number without the country prefix with an example ('12345678901'). It also mentions a 'ctx' argument that is not present in the input schema, which is a minor inconsistency, but the semantics for the actual parameters are well covered.

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

Purpose4/5

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

The description states a specific verb and resource: 'Verify a VAT number against the EU VIES (VAT Information Exchange System).' It is clear what the tool does. However, it does not distinguish this tool from the similar-sounding sibling 'check_piva', nor does it mention any alternative verification tools, so sibling differentiation is absent.

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

Usage Guidelines2/5

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

The description explains what the tool does and includes behavioral caveats about timeouts, but it gives no explicit guidance on when to use this tool instead of alternatives such as 'check_piva'. There is no when-to-use or when-not-to-use instruction, and no mention of prerequisites or comparison to related tools.

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