protogrid

Search / io.github.zifengw/eu-business-data-mcp

EU Business Data (VAT, EORI, company, sanctions, KYB)

R0· no sign-in

EU VAT (VIES) and EORI validation, company registry, sanctions screening, KYB. Free tier, x402.

v1.0.2 · active · repository · website · descriptor JSON · versions

An agent can connect right now, no human step.Remote endpoint, no authentication, reachable on the last probe.
Quality73new
Trust97of 100
Uptime, 30 days100%
Latency p50585 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "eu-business-data-mcp": {
      "type": "http",
      "url": "https://api.wsystem.dev/mcp/"
    }
  }
}
claude mcp add --transport http eu-business-data-mcp https://api.wsystem.dev/mcp/
[mcp_servers.eu-business-data-mcp]
url = "https://api.wsystem.dev/mcp/"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "eu-business-data-mcp": {
      "type": "remote",
      "url": "https://api.wsystem.dev/mcp/",
      "enabled": true
    }
  }
}
{
  "mcpServers": {
    "eu-business-data-mcp": {
      "type": "http",
      "url": "https://api.wsystem.dev/mcp/"
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=eu-business-data-mcp&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vYXBpLndzeXN0ZW0uZGV2L21jcC8ifQ%3D%3D"
}
{
  "servers": {
    "eu-business-data-mcp": {
      "type": "http",
      "url": "https://api.wsystem.dev/mcp/"
    }
  }
}
{
  "mcpServers": {
    "eu-business-data-mcp": {
      "httpUrl": "https://api.wsystem.dev/mcp/"
    }
  }
}
extensions:
  "eu-business-data-mcp":
    enabled: true
    name: "eu-business-data-mcp"
    type: streamable_http
    uri: "https://api.wsystem.dev/mcp/"
    timeout: 300

Quality 73 / 100new

protocol75 · weight 25
  • warn
    protocol.modernnewest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
  • n/a
    protocol.statelessonly applies to 2026-07-28 servers
  • pass
    protocol.transportstreamable HTTP
  • n/a
    protocol.list_ttlonly applies to 2026-07-28 servers
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene71 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • pass
    tools.description_lengthdescriptions are concise
  • pass
    tools.schemasevery tool has an object input schema
  • fail
    tools.annotationsno tool declares readOnlyHint or destructiveHint, so clients cannot tell safe calls from risky ones
  • fail
    tools.directory_hintsno tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: kyb_check (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); verify_eori_batch (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); verify_vat (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); …
  • pass
    tools.token_costabout 1,900 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
stabilityn/a · weight 15
  • n/a
    stability.changes, stability.rug_pulltool history recorded for 4 of the 7 days needed
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI package

12 tools, about 1,900 tokens to load them all · tool set edae7c691389 · tools last changed 2026-10-19 · checked 2026-10-20 20:46 UTC

Tool changes

  • create_einvoicechangeddescription
    before

    Create a validated EU e-invoice (UBL 2.1) from simple JSON. invoice = {format: en16931|xrechnung|peppol-bis3, invoice_number, issue_date (YYYY-MM-DD), due_date?, currency (EUR), buyer_reference?, seller: {name, vat_id, street, city, postal_code, country, email, phone, contact_name}, buyer: {...}, lines: [{description, quantity, unit_price, unit?, vat_category (S|Z|E|AE|K|G|O), vat_rate}], payment: {iban, bic?, terms?}}. Totals and VAT breakdown are computed; returns {valid, xml, totals, errors}.

    after · 90% of words in common

    Create a validated EU e-invoice (UBL 2.1) from simple JSON. invoice = {format: en16931|xrechnung|peppol-bis3, invoice_number, issue_date (YYYY-MM-DD), due_date?, tax_point_date?, delivery_date?, currency (EUR), buyer_reference?, seller: {name, vat_id, street, city, postal_code, country, email, phone, contact_name, company_id?, company_id_scheme?, legal_form?}, buyer: {...}, lines: [{description, quantity, unit_price, unit?, vat_category (S|Z|E|AE|K|G|O), vat_rate}], payment: {iban, bic?, terms?}}. Totals and VAT breakdown are computed; returns {valid, xml, totals, errors}.

  • validate_einvoicechangeddescription
    before

    Validate an EU e-invoice XML (UBL 2.1 Invoice/CreditNote or UN/CEFACT CII, e.g. XRechnung, Factur-X/ZUGFeRD XML) against the official CEN EN 16931 rules and, for XRechnung, the KoSIT XRechnung 3.0 rules. Returns valid, and every error with its rule ID (e.g. BR-CO-10), a plain-English message, XPath and a fix hint. rules: auto | en16931 | xrechnung. Peppol-specific rules are not checked yet. For PDFs use the REST endpoint POST /einvoice/validate.

    after · 79% of words in common

    Validate an EU e-invoice XML (UBL 2.1 Invoice/CreditNote or UN/CEFACT CII, e.g. XRechnung, Factur-X/ZUGFeRD XML) against the official CEN EN 16931 rules and, for XRechnung, the KoSIT XRechnung 3.0 rules. Returns valid, and every error with its rule ID (e.g. BR-CO-10), a plain-English message, XPath and a fix hint. rules: auto | en16931 | xrechnung. Slovak sellers also get eFaktúra field checks (FR SR transposition v1.12, warnings with ruleset SK-FS). Peppol-specific rules are not checked yet. For PDFs use the REST endpoint POST /einvoice/validate.

  • send_einvoice_sandboxchangeddescription, input schema
    before

    SANDBOX ONLY - transmits nothing. Runs the full send flow on an invoice (same JSON as create_einvoice): VIES check of the buyer VAT, sanctions screen of the buyer name, EN 16931 create + validate, route lookup (Peppol/mandate), a simulated (mock) transport hand-off and an Ed25519-signed evidence receipt (JWS). Use it to build and test an integration before live sending exists.

    after · 66% of words in common

    SANDBOX ONLY - never reaches a real buyer. Runs the full send flow on an invoice (same JSON as create_einvoice): VIES check of the buyer VAT, sanctions screen of the buyer name, EN 16931 create + validate, route lookup (Peppol/mandate), transport hand-off and an Ed25519-signed evidence receipt (JWS). transport: "mock" (simulated, default), "recommand" or "e-invoice-be" (the UBL is really submitted to that Peppol access point's sandbox, addressed to W System's own sandbox company; the partner document id is returned). Use it to build and test an integration before live sending exists.

  • due_diligence_reportadded

    Counterparty due-diligence report in one call: VIES VAT, official business register, EU/UN/OFAC/UK sanctions, EC EORI, GLEIF LEI and Peppol e-invoice route, with deterministic risk flags, 0-100 risk score, pass/review/fail verdict, sources and UTC timestamp. company: VAT ID (best), registry number or name; country: ISO code for names.

  • send_einvoice_sandboxadded

    SANDBOX ONLY - transmits nothing. Runs the full send flow on an invoice (same JSON as create_einvoice): VIES check of the buyer VAT, sanctions screen of the buyer name, EN 16931 create + validate, route lookup (Peppol/mandate), a simulated (mock) transport hand-off and an Ed25519-signed evidence receipt (JWS). Use it to build and test an integration before live sending exists.

  • einvoice_routeadded

    'Can I e-invoice this company?' id = EU VAT number (e.g. 'BE0403170701') or Peppol id ('0208:0403170701'). Returns VIES VAT status, Peppol Directory registration (BIS 3 invoice support), the country's B2B e-invoice mandate (dates, format, source) and the recommended format for create_einvoice. France's PPF directory is not included yet.

  • create_einvoiceadded

    Create a validated EU e-invoice (UBL 2.1) from simple JSON. invoice = {format: en16931|xrechnung|peppol-bis3, invoice_number, issue_date (YYYY-MM-DD), due_date?, currency (EUR), buyer_reference?, seller: {name, vat_id, street, city, postal_code, country, email, phone, contact_name}, buyer: {...}, lines: [{description, quantity, unit_price, unit?, vat_category (S|Z|E|AE|K|G|O), vat_rate}], payment: {iban, bic?, terms?}}. Totals and VAT breakdown are computed; returns {valid, xml, totals, errors}.

  • validate_einvoiceadded

    Validate an EU e-invoice XML (UBL 2.1 Invoice/CreditNote or UN/CEFACT CII, e.g. XRechnung, Factur-X/ZUGFeRD XML) against the official CEN EN 16931 rules and, for XRechnung, the KoSIT XRechnung 3.0 rules. Returns valid, and every error with its rule ID (e.g. BR-CO-10), a plain-English message, XPath and a fix hint. rules: auto | en16931 | xrechnung. Peppol-specific rules are not checked yet. For PDFs use the REST endpoint POST /einvoice/validate.

  • verify_eori_batchchangeddescription
    before

    Verify up to 100 EU EORI numbers at once via official EOS (customs / import-export KYB).

    after · 56% of words in common

    Validate up to 100 EU EORI numbers in one call via the official EC EOS service (customs / import-export KYB).

  • verify_eorichangeddescriptionmeaning changed
    before

    Verify one EU EORI (Economic Operators Registration and Identification) number, e.g. 'SE5560360793'. Uses the official European Commission EOS API. Returns valid/invalid and name/address when disclosed.

    after · 39% of words in common

    Validate an EU EORI (customs Economic Operators Registration and Identification) number, e.g. 'SE5560360793', 'DE1234567890123', against the official European Commission EOS service. Use for import/export, customs declarations and freight-forwarder onboarding. Returns valid/invalid and trader name/address only when the trader consented to publication. UK (GB) EORIs are not in EOS (HMRC checks those); XI EORIs are.

Showing the latest 10. Full history: list_changes · trend: quality JSON.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 97 / 100

provenance90
liveness100
freshness100
hygiene100

+repository +namespace-matches-repo +website +reachable +uptime-100% +updated-3d-ago

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://api.wsystem.dev/mcp/ streamable-httpnoneyes100%585 ms2025-11-252026-10-20

Tools (12)

create_einvoiceCreate a validated EU e-invoice (UBL 2.1) from simple JSON. invoice = {format: en16931|xrechnung|peppol-bis3, invoice_number, issue_date (YYYY-MM-DD), due_date?, tax_point_date?, delivery_date?, currency (EUR), buyer_reference?, seller: {name, vat_id, street, city, postal_code, country, email, phone, contact_name, company_id?, company_id_scheme?, legal_form?}, buyer: {...}, lines: [{description, quantity, unit_price, unit?, vat_category (S|Z|E|AE|K|G|O), vat_rate}], payment: {iban, bic?, terms?}}. Totals and VAT breakdown are computed; returns {valid, xml, totals, errors}.
due_diligence_reportCounterparty due-diligence report in one call: VIES VAT, official business register, EU/UN/OFAC/UK sanctions, EC EORI, GLEIF LEI and Peppol e-invoice route, with deterministic risk flags, 0-100 risk score, pass/review/fail verdict, sources and UTC timestamp. company: VAT ID (best), registry number or name; country: ISO code for names.
einvoice_route'Can I e-invoice this company?' id = EU VAT number (e.g. 'BE0403170701') or Peppol id ('0208:0403170701'). Returns VIES VAT status, Peppol Directory registration (BIS 3 invoice support), the country's B2B e-invoice mandate (dates, format, source) and the recommended format for create_einvoice. France's PPF directory is not included yet.
kyb_checkOne-call KYB check of a supplier/customer: EU VAT validation (VIES) + official business register + EU/UN/OFAC/UK sanctions screening, returning a pass / review / fail verdict with reasons. company: a VAT ID ('FR40303265045'), a company name, or a registry id; country: optional ISO code (e.g. 'NO').
lookup_companyLook up a company in official European business registers by name or registry number. country: FR (SIREN), NO (org.nr), FI (Y-tunnus), CZ (ICO), PL (KRS number), EE, or any other ISO code / 'LEI' (GLEIF). Returns legal name, ID, status/active, address, VAT ID, activity code and official source link. Use to confirm a company exists and is active, find its registry number, or map a name to a VAT ID.
screen_sanctionsScreen a person or company name against official EU, UN, OFAC SDN and UK sanctions lists. Fuzzy matching with transliteration; returns candidate matches with 0-100 scores, list, programme, DOB. A potential match needs human review; this is a screening aid, not legal advice.
send_einvoice_sandboxSANDBOX ONLY - never reaches a real buyer. Runs the full send flow on an invoice (same JSON as create_einvoice): VIES check of the buyer VAT, sanctions screen of the buyer name, EN 16931 create + validate, route lookup (Peppol/mandate), transport hand-off and an Ed25519-signed evidence receipt (JWS). transport: "mock" (simulated, default), "recommand" or "e-invoice-be" (the UBL is really submitted to that Peppol access point's sandbox, addressed to W System's own sandbox company; the partner document id is returned). Use it to build and test an integration before live sending exists.
validate_einvoiceValidate an EU e-invoice XML (UBL 2.1 Invoice/CreditNote or UN/CEFACT CII, e.g. XRechnung, Factur-X/ZUGFeRD XML) against the official CEN EN 16931 rules and, for XRechnung, the KoSIT XRechnung 3.0 rules. Returns valid, and every error with its rule ID (e.g. BR-CO-10), a plain-English message, XPath and a fix hint. rules: auto | en16931 | xrechnung. Slovak sellers also get eFaktúra field checks (FR SR transposition v1.12, warnings with ruleset SK-FS). Peppol-specific rules are not checked yet. For PDFs use the REST endpoint POST /einvoice/validate.
verify_batchValidate up to 100 EU VAT numbers in one call via VIES (supplier/customer list cleanup, onboarding, invoice runs). Same per-item result as verify_vat; items with member_state_unavailable should be retried later.
verify_eoriValidate an EU EORI (customs Economic Operators Registration and Identification) number, e.g. 'SE5560360793', 'DE1234567890123', against the official European Commission EOS service. Use for import/export, customs declarations and freight-forwarder onboarding. Returns valid/invalid and trader name/address only when the trader consented to publication. UK (GB) EORIs are not in EOS (HMRC checks those); XI EORIs are.
verify_eori_batchValidate up to 100 EU EORI numbers in one call via the official EC EOS service (customs / import-export KYB).
verify_vatValidate an EU VAT number against the official European Commission VIES service (27 EU states + XI Northern Ireland). Use when asked whether a VAT ID is valid/active, before zero-rated reverse-charge B2B invoices, or to get a company's registered name/address from its VAT number. Input: VAT with country prefix, e.g. 'IE6388047V', 'DE811193231' (spaces/dots ok). Returns status: valid | invalid | invalid_format | member_state_unavailable (VIES/member state down - retry later, valid=null) | error, plus name, address (if the member state discloses them; DE/ES often don't) and consultation_number (audit proof) when requester is set. For GB VAT numbers use HMRC instead; for >1 number use verify_batch.

Schemas: list_tools.

Similar MCP servers

Official server.json
{
  "name": "io.github.zifengw/eu-business-data-mcp",
  "title": "EU Business Data (VAT, EORI, company, sanctions, KYB)",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://api.wsystem.dev/mcp/",
      "type": "streamable-http"
    }
  ],
  "version": "1.0.2",
  "repository": {
    "url": "https://github.com/zifengw/eu-business-data-mcp",
    "source": "github"
  },
  "websiteUrl": "https://wsystem.dev",
  "description": "EU VAT (VIES) and EORI validation, company registry, sanctions screening, KYB. Free tier, x402."
}