Skip to main content
Glama
mcp-europe-business

mcp-europe-business

by josemvelez78

MCP Europe Business Suite

European business compliance suite for AI agents — 28 tools covering tax ID validation, IBAN, VAT rates, e-invoicing rules, payment terms, and labor calendar helpers across 18+ European countries.

Part of MCPize — regional MCP servers for AI agents.

Coverage

Module

Country coverage

Tax IDs

PT (NIF), ES (NIF/NIE/CIF), FR (SIRET, TVA), IT (Codice Fiscale, Partita IVA), DE (USt-IdNr), UK (VAT), NL (KVK)

IBAN

18 EU countries (PT, ES, FR, DE, IT, NL, BE, PL, SE, DK, FI, AT, IE, GR, HU, RO, CZ, HR)

VAT rates

19 countries (18 EU + UK)

Payment terms

10 countries (PT, ES, FR, DE, IT, NL, BE, UK, SE, PL)

E-invoicing

10 countries with timelines and formats

Holidays

8 countries with Easter-based moveable holidays

Postal codes

16 countries

Related MCP server: mcp-latam-business

Tools (28 total)

Validation (17): validate_nif, validate_iban, get_vat_rate, get_portugal_holidays, get_spain_holidays, get_france_holidays, validate_nif_es, validate_siret, validate_tva_fr, calculate_working_days, format_number_european, validate_codice_fiscale, validate_partita_iva, validate_vat_de, validate_vat_uk, validate_kvk_nl, validate_postal_code

Business Rules (4): get_payment_terms, get_invoice_requirements, get_vat_exemption_threshold, get_einvoicing_rules

Labor Helpers (3): get_public_holidays_range, calculate_working_days_eu, get_next_payment_date

Invoice & VAT (4): validate_invoice_schema, calculate_vat_breakdown, suggest_vat_treatment, calculate_vat_amount

What's new in v1.2.0

  • Timezone-safe date formatting (no more UTC offset bugs)

  • Easter-based moveable holidays added to Portugal (Sexta-feira Santa) and Spain (Viernes Santo)

  • nth_working_day rule now correctly handles months without enough working days

  • Consistent outputSchema (Zod) on every tool — Smithery Typed Output ready

  • Refactored shared helpers (no duplicated Easter calculations across tools)

  • New /health endpoint for Railway/Docker healthchecks

Local development

npm install
npm start           # stdio transport (for Glama / Claude Desktop)
npm run start:http  # HTTP transport on port 8080 (for Railway / hosted use)

Endpoints (HTTP mode)

  • GET / — server metadata and tool list

  • GET /health — health check (returns {"status":"ok"})

  • POST /mcp — MCP Streamable HTTP endpoint

Disclaimer

All compliance, tax, and legal information returned by these tools is reference only — not legal or tax advice. VAT rates, e-invoicing rules, and holiday calendars change frequently. Always verify with the relevant tax authority and a qualified professional before use in production.

License

MIT

Available Tools

28 tools
calculate_vat_amountA
Read-onlyIdempotent

Calculates VAT amounts from either a net (excluding VAT) or gross (including VAT) amount for a given VAT rate. Returns { net_amount, vat_amount, gross_amount, vat_rate, currency }. Use when building pricing tools, invoice calculators, or checkout flows that need to split gross prices into net + VAT components.

Inputs: amount (required), vat_rate (required), amount_type (required), currency. Returns: net_amount, vat_amount, gross_amount, vat_rate, +1 more

calculate_vat_breakdownA
Read-onlyIdempotent

Calculates a complete VAT breakdown for a list of invoice line items, grouping amounts by VAT rate and computing totals. Returns { lines_summary, vat_breakdown: [{rate, base_amount, vat_amount}], total_excl_vat, total_vat, total_incl_vat, currency }. Each line item requires { description, quantity, unit_price, vat_rate }. Use when generating invoices, building checkout summaries, or verifying VAT calculations in agent workflows.

Inputs: lines (required), currency, round_decimals. Returns: lines_summary, vat_breakdown, total_excl_vat, total_vat, +2 more

calculate_working_daysA
Read-onlyIdempotent

Counts the number of working days between two dates (inclusive), excluding Saturdays, Sundays, and all 10 Portuguese national public holidays. Returns { start_date, end_date, working_days: number }. Use when calculating Portuguese invoice payment deadlines, legal notice periods, or SLA response times.

Inputs: start_date (required), end_date (required). Returns: start_date, end_date, working_days, error

calculate_working_days_euA
Read-onlyIdempotent

Counts the number of working days between two dates (inclusive) for a given European country, excluding weekends and that country's national public holidays. Returns { country, start_date, end_date, working_days, holidays_excluded }. Supports PT, ES, FR, DE, IT, NL, BE, UK. Use when calculating cross-border SLA periods, invoice payment deadlines, or project timelines that must account for different national holiday calendars.

Inputs: country_code (required), start_date (required), end_date (required). Returns: country, start_date, end_date, working_days, +2 more

format_number_europeanA
Read-onlyIdempotent

Formats a number using the locale conventions of a specific European country — correct decimal and thousands separators. Returns { original, formatted, locale, country_code }. Supports PT, ES, FR, DE, IT, NL, BE, PL, SE, DK, FI, AT, IE, GR, HU, RO, UK.

Inputs: number (required), country_code (required), decimals. Returns: original, formatted, locale, country_code

get_einvoicing_rulesA
Read-onlyIdempotent

Returns the current e-invoicing (electronic invoicing) obligations for a given European country — whether it is mandatory for B2G (business-to-government), B2B (business-to-business), or B2C transactions, the required formats, and implementation timeline. Returns { country, b2g_mandatory, b2b_mandatory, b2c_mandatory, formats, timeline, platform, notes }. Use when building invoice generation systems, determining compliance requirements for EU customers, or automating invoice submission workflows.

Inputs: country_code (required). Returns: country, b2g_mandatory, b2b_mandatory, b2c_mandatory, +6 more

get_france_holidaysA
Read-onlyIdempotent

Returns all French national public holidays for a given year. Easter-dependent holidays (Easter Monday, Ascension, Whit Monday) are dynamically calculated using the Anonymous Gregorian algorithm. Returns 11 mandatory holidays defined by French law.

Inputs: year (required). Returns: year, country, total_holidays, holidays

get_invoice_requirementsA
Read-onlyIdempotent

Returns the mandatory fields required on a valid VAT invoice for a given European country, as defined by EU VAT Directive 2006/112/EC and local implementations. Returns { country, mandatory_fields: [], optional_fields: [], notes }. Use when generating invoices for EU customers, validating invoice templates, or building invoice compliance checks in agent workflows. Information provided as reference only — not legal advice.

Inputs: country_code (required). Returns: country, mandatory_fields, optional_fields, notes, +2 more

get_next_payment_dateA
Read-onlyIdempotent

Calculates the next valid payment date based on a reference date and a payment rule for a given European country, skipping weekends and national public holidays. Supports rules: 'last_working_day_of_month' (salary payment), 'first_working_day_of_month', 'nth_working_day' (e.g. 5th working day), 'next_working_day' (next business day after reference). Returns { country, reference_date, rule, result_date, notes }. Use when scheduling salary payments, invoice due dates, or any automated payment workflow that must avoid non-working days.

Inputs: country_code (required), reference_date (required), rule (required), n. Returns: country, reference_date, rule, result_date, +1 more

get_payment_termsA
Read-onlyIdempotent

Returns the legal B2B payment terms for a given European country — the default payment period, maximum allowed period, and late payment rules as defined by EU Directive 2011/7/EU and local implementations. Returns { country, default_days, max_days, late_payment_interest, notes }. Use when generating invoices, setting payment due dates, or automating accounts receivable workflows. Information provided as reference only — not legal advice.

Inputs: country_code (required). Returns: country, default_days, max_days, late_payment_interest, +4 more

get_portugal_holidaysA
Read-onlyIdempotent

Returns all Portuguese national public holidays for a given year as a structured list. Each holiday includes { date: 'YYYY-MM-DD', name: string, name_en: string }. Returns 10 mandatory national holidays defined by Portuguese law. Use when calculating business deadlines, delivery dates, payment due dates, SLA periods, or scheduling tasks that must avoid non-working days in Portugal.

Inputs: year (required). Returns: year, country, total_holidays, holidays

get_public_holidays_rangeA
Read-onlyIdempotent

Returns all public holidays that fall within a given date range for a specified European country. Returns { country, start_date, end_date, total_holidays, holidays: [{date, name, name_en}] }. Supports PT, ES, FR, DE, IT, NL, BE, UK. Use when calculating SLA periods, project timelines, delivery windows, or any workflow that must skip non-working days across multiple European countries.

Inputs: country_code (required), start_date (required), end_date (required). Returns: country, start_date, end_date, total_holidays, +2 more

get_spain_holidaysA
Read-onlyIdempotent

Returns all Spanish national public holidays for a given year as a structured list. Each holiday includes { date: 'YYYY-MM-DD', name: string, name_en: string }. Returns 9 mandatory national holidays defined by Spanish law. Does not include regional holidays that vary by autonomous community.

Inputs: year (required). Returns: year, country, total_holidays, holidays

get_vat_exemption_thresholdA
Read-onlyIdempotent

Returns the annual turnover threshold below which a business may be exempt from VAT registration in a given European country — the small business VAT exemption scheme. Returns { country, threshold_local_currency, currency, threshold_eur_approx, notes }. Use when determining if a small business needs to register for VAT, or when building onboarding flows for European freelancers and micro-enterprises. Information provided as reference only — not legal advice.

Inputs: country_code (required). Returns: country, threshold_local_currency, currency, threshold_eur_approx, +4 more

get_vat_rateA
Read-onlyIdempotent

Returns all VAT (Value Added Tax) rates for a given EU country — standard, reduced, intermediate, and super-reduced rates where applicable, as numeric percentages. Returns { country, standard, reduced?, intermediate?, superreduced? } for supported countries, or { error, available } listing all valid codes if the country is not found. Supports 18 EU member states: PT, ES, FR, DE, IT, NL, BE, PL, SE, DK, FI, AT, IE, GR, HU, RO, CZ, HR. Use when calculating EU cross-border invoice tax, determining correct rate for e-commerce checkout by customer country, generating compliant VAT breakdowns, or any workflow requiring accurate and current EU VAT rates per jurisdiction.

Inputs: country_code (required). Returns: country, standard, reduced, intermediate, +2 more

suggest_vat_treatmentA
Read-onlyIdempotent

Suggests the likely VAT treatment for a transaction based on seller country, buyer country, buyer VAT registration status, and goods/services type — covering standard VAT, reverse charge, OSS/IOSS, and zero-rating scenarios under EU VAT rules. Returns { treatment, description, seller_charges_vat, applicable_rate, notes, disclaimer }. Use when building checkout VAT logic, invoice generation, or cross-border EU compliance workflows. For digital services sold to EU consumers, OSS is indicated automatically. Always verify with a tax advisor for real transactions.

Inputs: seller_country (required), buyer_country (required), buyer_is_vat_registered (required), goods_type (required). Returns: treatment, description, seller_charges_vat, applicable_rate, +6 more

validate_codice_fiscaleA
Read-onlyIdempotent

Validates an Italian Codice Fiscale (fiscal code) for individuals — a 16-character alphanumeric code issued by the Italian Revenue Agency (Agenzia delle Entrate). Applies the official odd/even position checksum algorithm. Returns { valid: boolean, codice_fiscale: string } or { valid: false, reason: string }. Use when processing Italian invoices, onboarding Italian individuals, or any Italian compliance workflow requiring a verified personal fiscal code.

Inputs: codice_fiscale (required). Returns: valid, codice_fiscale, reason

validate_ibanA
Read-onlyIdempotent

Validates an IBAN (International Bank Account Number) using the ISO 13616 MOD-97 algorithm. Supports 18 European countries: PT, ES, FR, DE, IT, NL, BE, PL, SE, DK, FI, AT, IE, GR, HU, RO, CZ, HR. Returns { valid: boolean, country: string, iban: string } — country is extracted from the 2-letter prefix. Returns { valid: false, reason: string } for malformed input. Spaces are automatically stripped before validation. Use when validating supplier bank details for SEPA transfers, processing direct debit mandates, verifying payment data in e-commerce checkouts, or any workflow requiring a verified EU bank account number. Validates structure and checksum only — does not confirm account existence.

Inputs: iban (required). Returns: valid, country, iban, reason

validate_invoice_schemaA
Read-onlyIdempotent

Validates whether an invoice JSON object contains all mandatory fields required for a valid VAT invoice in a given European country, based on EU VAT Directive 2006/112/EC and local implementations. Returns { valid: boolean, country, missing_fields: [], present_fields: [], warnings: [] }. Use when building invoice generation pipelines, pre-submission validation, or compliance checks in agent workflows. Information is reference only — not legal advice.

Inputs: country_code (required), invoice (required). Returns: valid, country, missing_fields, present_fields, +2 more

validate_kvk_nlA
Read-onlyIdempotent

Validates a Dutch KVK (Kamer van Koophandel) chamber of commerce number — an 8-digit registration number assigned to all businesses registered in the Netherlands. Verifies the format and applies the official weighted checksum algorithm. Returns { valid: boolean, kvk: string, country: 'NL' } or { valid: false, reason: string }. Use when processing Dutch invoices, validating Dutch suppliers, or onboarding Dutch business partners.

Inputs: kvk (required). Returns: valid, kvk, country, reason

validate_nifA
Read-onlyIdempotent

Validates a Portuguese NIF (Número de Identificação Fiscal) — the 9-digit tax identification number issued by the Portuguese Tax Authority (AT) to individuals and companies. Applies the official modulo-11 checksum algorithm to verify the check digit. Returns { valid: true, nif: string } for valid NIFs, or { valid: false, reason: string } for invalid format or failed checksum. First-digit rules are enforced: 1–3 for individuals, 5 for corporations, 6 for public entities, 7–8 for other entities, 9 for occasional taxpayers. Use when processing Portuguese invoices (faturas), onboarding suppliers, validating user registrations, or any fiscal compliance workflow. Does not query the AT database — offline format and checksum validation only.

Inputs: nif (required). Returns: valid, nif, reason

validate_nif_esA
Read-onlyIdempotent

Validates Spanish tax identification numbers — NIF (DNI, 8 digits + check letter, for Spanish citizens), NIE (Número de Identidad de Extranjero, starts with X/Y/Z, for foreign residents), and CIF (Código de Identificación Fiscal, letter + 7 digits + control, for companies). Automatically detects the document type. Returns { valid: boolean, type: 'NIF'|'NIE'|'CIF', id: string }.

Inputs: id (required). Returns: valid, type, id, reason

validate_partita_ivaA
Read-onlyIdempotent

Validates an Italian Partita IVA (VAT number for companies and self-employed) — an 11-digit number issued by the Italian Revenue Agency. Applies the official Luhn-variant checksum algorithm used by Italian tax authorities. Returns { valid: boolean, partita_iva: string } or { valid: false, reason: string }. Use when processing Italian B2B invoices, validating Italian suppliers, or any Italian business compliance workflow.

Inputs: partita_iva (required). Returns: valid, partita_iva, reason

validate_postal_codeA
Read-onlyIdempotent

Validates a postal code format for a given European country using the official pattern for that country. Returns { valid: boolean, postal_code: string, country: string, format: string }. Supports PT (4+3 digit), ES (5 digit), FR (5 digit), DE (5 digit), IT (5 digit), NL (4 digits + 2 letters), BE (4 digit), PL (5+2 digit), SE (5 digit), AT (4 digit), IE (Eircode 3+4), GR (5 digit), HU (4 digit), RO (6 digit), UK (complex alphanumeric). Use in e-commerce checkout validation, address verification, or logistics workflows.

Inputs: postal_code (required), country_code (required). Returns: valid, postal_code, country, format, +1 more

validate_siretA
Read-onlyIdempotent

Validates a French SIRET (14-digit company establishment number) using the official Luhn algorithm. The first 9 digits are the SIREN (company identifier) and the last 5 identify the specific establishment. Returns { valid: boolean, siren: string, establishment: string, siret: string }. Handles the La Poste special case automatically.

Inputs: siret (required). Returns: valid, siren, establishment, siret, +1 more

validate_tva_frA
Read-onlyIdempotent

Validates a French TVA intracom (VAT) number — format 'FR' + 2 alphanumeric key characters + 9-digit SIREN. Returns { valid: boolean, key: string, siren: string, tva: string }. When the key is numeric, validates using the official formula: key = (12 + 3 × (SIREN mod 97)) mod 97.

Inputs: tva (required). Returns: valid, key, siren, tva, +2 more

validate_vat_deA
Read-onlyIdempotent

Validates a German VAT identification number (Umsatzsteuer-Identifikationsnummer, USt-IdNr) — format 'DE' followed by 9 digits. Verifies the format and applies the official ISO 7064 MOD-11-10 checksum algorithm. Returns { valid: boolean, vat_number: string, country: 'DE' } or { valid: false, reason: string }. Use when processing German invoices, validating German suppliers for intra-EU transactions, or any B2B workflow involving German companies.

Inputs: vat_number (required). Returns: valid, vat_number, country, reason

validate_vat_ukA
Read-onlyIdempotent

Validates a UK VAT registration number — format 'GB' followed by 9 digits (standard), 12 digits (branch traders), or 'GD'/'HA' followed by 3 digits (government/health authorities). Applies the official HMRC modulo-97 algorithm for 9-digit numbers. Returns { valid: boolean, vat_number: string, type: string, country: 'GB' }. Use when processing UK invoices, validating UK suppliers post-Brexit, or any B2B workflow involving UK VAT numbers.

Inputs: vat_number (required). Returns: valid, vat_number, type, country, +1 more

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4.3/5.0

    Scored across 28 tools

    Disambiguation5/5

    Each tool has a clearly distinct purpose: VAT calculations, working days, holidays, validations per country/ID type, etc. Even overlapping tools like calculate_vat_amount and calculate_vat_breakdown differ in output granularity. No ambiguity.

    Naming Consistency5/5

    All tool names follow a consistent verb_noun pattern: get_, calculate_, validate_, suggest_, format_. No mixing of styles; predictable and intuitive.

    Tool Count4/5

    28 tools is slightly high but still reasonable for the broad domain of European business compliance. Each tool addresses a distinct subdomain (VAT, holidays, ID validation, etc.), so the count is justified.

    Completeness4/5

    Covers most key areas: VAT calc/rates, working days/holidays, invoice requirements, payment terms, e-invoicing, and ID validation for multiple countries. Minor gaps (e.g., missing some EU member VAT rates, no currency conversion) but generally thorough.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      D
      maintenance
      Latin American business compliance suite — 28 tools for tax ID validation (CPF, CNPJ, RFC, RUT, CUIT, NIT), banking (PIX, CLABE, CBU), VAT rules, e-invoicing (NF-e, CFDI, DTE), holidays, and labor calendar across Brazil, Mexico, Chile, Argentina, and Colombia.
      28
      MIT
    • A
      license
      B
      quality
      D
      maintenance
      Enables AI assistants to answer tax compliance questions (VAT, sales tax, GST) and validate EU VAT numbers in real time via the VIES registry.
      2
      8 npm
      MIT
    • A
      license
      Not graded
      quality
      D
      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