Skip to main content
Glama
wsystemdev

EU Business Data MCP

EU Business Data MCP – VAT, EORI, company registry, sanctions, KYB & e-invoicing

A remote MCP server and x402 pay-per-call API for European business data checks, aimed at AI agents and KYB/onboarding/invoicing workflows.

Maker disclosure: built and operated by W System. This is our own commercial product. The code is MIT-licensed.

Remote MCP endpoint (streamable HTTP)

https://api.wsystem.dev/mcp/

Free tier, no signup: 20 tool calls per day per MCP session. Direct clients (Claude Code, Cursor, mcp-remote and others connecting from your own machine) also get at most 20 per IP, so opening more sessions doesn't add calls. Claude.ai / Claude Desktop custom connectors call from Anthropic's cloud (outbound range 160.79.104.0/21), so those calls are counted per session, not per IP; all keyless traffic from that range shares 2,000 lookups per day (verify_batch / verify_eori_batch count one per number). New keyless sessions: 1,500 per IP per day (3,000 per Anthropic address). Limits reset at 00:00 UTC; live values: https://api.wsystem.dev/mcp/limits

Optional API key for volume: send X-API-Key: <key> (or Authorization: Bearer <key>) with every MCP request. Keyed calls use the key's monthly units (same weights as the REST API) instead of the free tier. Keys: https://wsystem.dev/pricing (Starter EUR 19/month, 5,000 units; Pro EUR 49/month, 25,000 units; there is no free key). Keys in the URL are not accepted. How to add one in Claude: docs/mcp-claude-cursor.md.

Server card: https://api.wsystem.dev/server-card · Website: https://wsystem.dev · LLM summary: https://wsystem.dev/llms.txt

Example client config:

{ "mcpServers": { "eu-business-data": { "type": "http", "url": "https://api.wsystem.dev/mcp/" } } }

Tools

Tool

What it does

verify_vat

Validate an EU VAT number live against VIES (27 EU states + XI), with name/address and optional consultation number

verify_batch

Validate several VAT numbers at once

lookup_company

Look up a company in European business registries

screen_sanctions

Fuzzy-match a name against EU / UN / UK / US sanctions lists

kyb_check

Combined KYB: VAT validity + registry + sanctions screening

verify_eori

Validate an EU EORI number (customs)

verify_eori_batch

Validate several EORI numbers at once

validate_einvoice

Validate a UBL or CII e-invoice against the official EN 16931 and XRechnung rules: errors with rule IDs, plain-English messages and fix hints

create_einvoice

Turn simple JSON into a validated UBL 2.1 invoice (EN 16931, XRechnung or Peppol BIS 3 structure)

einvoice_route

"Can I e-invoice this company?": VIES + Peppol Directory + country B2B mandate + recommended format

send_einvoice_sandbox

SANDBOX: verify buyer VAT + sanctions → create/validate EN 16931 → route → mock transport (nothing transmitted) → Ed25519-signed evidence receipt

due_diligence_report

VAT, register, sanctions, EORI, GLEIF LEI and Peppol in one report with risk flags and a timestamp

check_fr_pa_registry

France: is this e-invoicing platform on the official DGFiP list of Plateformes Agréées (PA)? Name or website in; approved / awaiting interop tests / not found, registration date and official source out (also free as REST: GET https://api.wsystem.dev/fr/pa-registry?name=Pennylane)

Related MCP server: eu-verify

Quick answers

When VIES is down (fallback) and UK numbers

  • VIES is retried with backoff. If a member state is still MS_UNAVAILABLE/timing out, the result comes from that country's free official source: PL Biała lista (Ministry of Finance), CZ ARES (VAT register status), FI YTJ open data (VAT register), FR Recherche d'entreprises / SIRENE (company active + VAT key; no free French VAT-registration API exists).

  • Otherwise the last successful VIES answer for that number is returned, labelled with its date. Otherwise member_state_unavailable.

  • Fallback results have fallback: true, fallback_type (national_source | last_vies_result), source, legal_status, vies_error, and no consultation number. National registers show domestic status, which is not VIES audit proof. Turn off with fallback=false.

  • No free automated source for DE (BZSt eVatR requires a German requester VAT ID), ES (certificate), IT (captcha), NL, BE, HU (NAV technical user), DK.

  • GET /vies/status: EC VIES per-country availability, cached 5 min, free.

  • GB: accepted and HMRC check-digit validated. Live check via HMRC Check a UK VAT number API v2 is implemented (vatcheck/hmrc.py) but needs OAuth app credentials from the HMRC Developer Hub (HMRC_CLIENT_ID, HMRC_CLIENT_SECRET, optional HMRC_REQUESTER_VRN); without them GB results return status: not_configured. XI is checked in VIES.

Integration guides

Step-by-step guides (every snippet tested against the live API): docs/

Website with a free VAT and EORI checker: https://wsystem.dev

Pricing

  • MCP endpoint: free, 20 tool calls per day per MCP session (details and the shared limit for Claude connector traffic above). With an API key in X-API-Key: Starter EUR 19/month (5,000 units) or Pro EUR 49/month (25,000 units). When a free limit is reached, the tool returns an error that names the limit and explains how to add a key.

  • REST API with x402 on the same host (https://api.wsystem.dev, e.g. GET /verify?vat=..., POST /verify/batch, GET /company?q=..., sanctions, KYB and EORI routes): after the free allowance, calls are paid per request with x402 in USDC on Base: about $0.01 per single check, $0.10 per batch, $0.045 per KYB check. Unpaid calls get HTTP 402 with the payment requirements.

  • Apify Actors (pay per event), see below.

Also on Apify

The same checks are available as Apify Actors (pay per event), and through Apify's hosted MCP server:

Blog: https://wsystem.hashnode.dev

Ready-made examples (run in one click on Apify)

Each example opens a pre-filled run with real sample output, so you can see the result format before you pay for anything:

Run it yourself

pip install -r requirements.txt
uvicorn vatcheck.server:app --port 8000     # REST at /, MCP at /mcp/
# or stdio MCP:
python -m vatcheck.mcp_server stdio

x402 is off unless X402_ENABLED=1 and X402_PAY_TO are set (see vatcheck/x402.py).

Data sources & disclaimer

Data comes live from public sources such as the European Commission VIES and EORI services, public business registries and official sanctions lists. Not affiliated with the European Commission or any authority. Results are not legal or tax advice.

License

MIT. See LICENSE.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to perform identity verification, KYC/KYB, PEP & sanctions screening, bank statement analysis, and workflow automation via the Model Context Protocol.
    MIT
  • A
    license
    Not graded
    quality
    F
    maintenance
    eu-verify lets AI agents verify any European business partner: company existence (official French SIREN registry), insolvency records (BODACC), EU VAT validation before invoicing (VIES), SIRET/IBAN/LEI checks, address and email verification, French business-day deadlines and EU public tenders. 10 paid MCP tools + a free catalog tool, plus 81 HTTP endpoints. Each call costs $0.001-$0.01 in USDC on
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI assistants to access official European business data across 15 EU countries, including company lookups, VAT validation, sanctions screening, and KYB reports.
    4,113 npm
    1
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Provides verification and utility APIs for AI agents to validate tax IDs, screen sanctions, verify companies, and inspect domains using prepaid USD credits, with no charge for failed checks.
    13
    34 npm
    MIT