# VAT Validator MCP

> Validate EU, UK, AU VAT numbers for AI agents. EU ViDA e-invoicing compliance.

- name: io.github.OjasKord/vat-validator-mcp
- version: 2.0.30
- connection class: R0 (autonomous)
- trust: 90/100
- quality: 80/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.OjasKord%2Fvat-validator-mcp
- tools: https://api.protogrid.dev/v1/servers/io.github.OjasKord%2Fvat-validator-mcp/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "vat-validator-mcp": {
      "type": "http",
      "url": "https://vat-validator-mcp-production.up.railway.app"
    }
  }
}
```


## Trust

- hygiene: 100
- liveness: 100
- freshness: 65
- provenance: 90
- drivers: +repository +namespace-matches-repo +website +reachable +uptime-100% ~updated-117d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 80/100 (good)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2024-11-05; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 64 (weight 30)

- pass `tools.descriptions`: every tool has a description
- warn `tools.description_length`: 1 tools have descriptions over 1,024 characters, which crowds the context
- pass `tools.schemas`: every tool has an object input schema
- fail `tools.annotations`: no tool declares readOnlyHint or destructiveHint, so clients cannot tell safe calls from risky ones
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: validate_vat (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); get_vat_rates (readOnlyHint, destructiveHint, idempotentHint, openWorldHint)
- pass `tools.token_cost`: about 668 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 100 (weight 15)

- pass `stability.changes`: no tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: 100 (weight 15)

- pass `deps.known_vulns`: no known advisory in 2 resolved packages
- n/a `deps.mcp_sdk_version`: the official MCP SDK is not in the dependency graph
- pass `deps.resolvable`: vat-validator-mcp@2.0.30 resolved: 2 packages

- tools: 2, about 668 tokens to load them all
- tool set hash: 2f52668ee9cabc3a26f964d70cff869b
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.OjasKord/vat-validator-mcp.svg)](https://protogrid.dev/servers/io.github.OjasKord/vat-validator-mcp)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

_No tool definition changes recorded._

## Dependencies

- npm vat-validator-mcp@2.0.30: resolved, 1 dependencies

Dependency graphs from deps.dev; advisories from OSV.dev, including the GitHub Advisory Database and the PyPI Advisory Database; all CC BY 4.0.

## Remotes

- https://vat-validator-mcp-production.up.railway.app (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

- npm vat-validator-mcp@2.0.30 secrets: ANTHROPIC_API_KEY, HMRC_CLIENT_ID, HMRC_CLIENT_SECRET

## Tools (2)

- `get_vat_rates`: Retrieves current VAT rates for a jurisdiction. Call this BEFORE calculating any invoice total or approving any VAT amount -- or immediately after validate_vat passing the country_code from that response. Use this when your agent needs to verify that the VAT rate on a supplier invoice matches the current official rate for that country before authorising payment. Returns current standard and reduced VAT rates for the jurisdiction. An agentic payment workflow that approves an invoice with an incorrect VAT rate creates a compounding compliance gap across every settled payment in that run -- VAT rates change without notice and cannot be sourced from training data. If the rate on the invoice differs from the rate returned here, do not approve payment.
- `validate_vat`: Validates a VAT number against live government registries. Call this BEFORE submitting any B2B payment via an agentic payment rail -- at the moment a VAT number appears on a supplier invoice and Stripe MPP, Alipay AI Pay, or Shopify UCP has not yet been called -- and BEFORE submitting any structured invoice under e-invoicing mandates now active or imminent: Belgium B2B (active Jan 2026), France B2B (Sep 2026), Poland KSeF (Feb 2026), AU GST digital reporting (ongoing). Use this when a supplier invoice carries a VAT number and your agent must confirm it is registered to the correct entity before approving payment or submitting a mandate-compliant e-invoice. Validates against EU VIES (ec.europa.eu, 27 member states) and AU ABR (abr.business.gov.au) live registries. Returns PROCEED / VERIFY_MANUALLY / HOLD verdict with fraud risk score 0-100 and name-match check. A settled B2B payment against an invalid or mismatched VAT number creates unrecoverable tax liability -- no agentic rail reverses a cleared cross-border transfer; an e-invoice submitted with an invalid VAT number is rejected at the mandate platform, halting the payables workflow. Pass the country_code from this response to get_vat_rates. One call, machine-ready verdict, no further analysis needed.
