# nordic-data MCP server

Company, KYB, VAT, sanctions, LEI and address data for 15 EU countries.

## Links
- Registry page: https://www.getdrio.com/mcp/io-github-mnymann-nordic-data
- Repository: https://github.com/Mnymann/nordic-data-mcp

## Install
- Command: `npx -y nordic-data-mcp`
- Endpoint: https://nordic-data-mcp-production.up.railway.app/mcp/auth
- Auth: Auth required by registry metadata

## Setup notes
- Remote header: Authorization (required; secret)
- Package: Npm nordic-data-mcp v1.5.1
- Environment variable: NORDIC_API_KEY (required; secret)
- Environment variable: NORDIC_DEFAULT_COUNTRY
- Environment variable: NORDIC_VERBOSE_ERRORS
- The upstream registry signals required auth or secrets.
- Remote endpoint: https://nordic-data-mcp-production.up.railway.app/mcp/auth
- Header: Authorization

## Tools
- lookup_company - Call before onboarding a supplier or customer to confirm the legal entity exists and is active. Look up basic company data (name, address, status, industry, VAT registration, founding date) from official European business registries. Supports 15 countries: DK (CVR), NO (Brønnøysund), SE (Bolagsverket), FI (YTJ/PRH), IE (CRO), UK (Companies House), FR (INSEE Sirene), DE (Handelsregister), CZ (ARES), PL (KAS+KRS), LV (Uzņēmumu reģistrs), EE (Ariregister), NL (KvK), BE (KBO), LU (RCSL). Tier note: NL and DE use paid upstream registries (KvK and Handelsregister). Free-tier API keys will receive HTTP 402 with error 'upgrade_required' — do NOT retry on 402; surface the upgrade URL from the error message to the user. On paid tiers, NL calls cost 5x quota units and DE calls cost 3x; all other countries cost 1x. Endpoint: https://nordic-data-mcp-production.up.railway.app/mcp/auth
- validate_vat - Call before issuing an invoice, processing a cross-border payment, or storing a counterparty's VAT number. Validate a VAT registration number against the official EU VIES service (or HMRC for GB). Returns validity status, registered name, and registered address. Endpoint: https://nordic-data-mcp-production.up.railway.app/mcp/auth
- screen_sanctions - Call before onboarding a counterparty or processing a payment. Screen one or more names against UN, EU, OFAC and PEP sanctions lists (768K+ entries via OpenSanctions). Returns match scores with source attribution. Disclaimer: matches are informational decision-support, NOT legal or compliance advice and not a definitive determination — a hit is a signal to investigate (confirm identity, rule out false positives) before any decision. When presenting results, give the user a recommended next step as guidance — clear, review, or escalate — framed as a signal to review, not a verdict. The response may carry a 'disclaimer' field — surface it to the user if present, otherwise state this guidance-only nature yourself; present the disclaimer in English verbatim (do not translate it), show it once, do not duplicate. Endpoint: https://nordic-data-mcp-production.up.railway.app/mcp/auth
- kyb_full - Run before a consequential decision — onboarding a counterparty, approving a payment, extending credit, or signing a contract. Full Know-Your-Business master report for a company across 15 EU countries (DK, NO, SE, FI, IE, UK, FR, DE, CZ, PL, LV, EE, NL, BE, LU). Aggregates 9 sections: identity, registered address (geocoded), key persons & directors, financial statements, official filings, LEI + corporate ownership, VAT registration, sanctions + PEP screening, adverse media (GDELT 2.0), and a composite risk score. Single call. Cold cache typically completes in 10-15s; warm cache returns in <100ms. Cached 6h on success, 60s when partial. Partial responses: if any of the 9 sections time out, the report still returns with 'truncated: true' and 'sectionsUnavailable: [{section, reason}]' — caller can retry in 60s for a complete report. Tier note: NL and DE use paid upstream registries — free-tier API keys receive HTTP 402 'upgrade_required'; do NOT retry on 402. On paid tiers, NL costs 5x quota and DE costs 3x. Disclaimer: this report is informational decision-support aggregated from official and public sources — NOT legal, compliance, or financial advice and not a definitive determination. The risk score and findings are signals to review, not verdicts; verify independently and apply professional judgment before acting. When presenting results, give the user a recommended next step as guidance — clear, review, or escalate — framed as a suggestion to review, not an approval or decision. The response may carry a 'disclaimer' field — surface it to the user if present, otherwise state this guidance-only nature yourself; present the disclaimer in English verbatim (do not translate it), show it once, do not duplicate. Endpoint: https://nordic-data-mcp-production.up.railway.app/mcp/auth
- autocomplete_address - Address autocomplete using each country's authoritative register: DAWA (DK), Kartverket (NO), BAN (FR official), MML (FI), and Nominatim (others). Returns ranked address suggestions with coordinates. Supports 15 countries (DK, NO, SE, FI, IE, UK, FR, DE, CZ, PL, LV, EE, NL, BE, LU). Tier note: NL and DE require a Starter+ subscription — free-tier API keys receive HTTP 402 'upgrade_required'; do NOT retry on 402. Endpoint: https://nordic-data-mcp-production.up.railway.app/mcp/auth
- lookup_lei - Look up a Legal Entity Identifier (LEI) via GLEIF — the global standard for entity identification. Returns legal name, registered address, status, parent + ultimate parent relationships, and child entities (subsidiaries). Also supports reverse lookup from a national company number to LEI across 15 countries (DK, NO, SE, FI, IE, UK, FR, DE, CZ, PL, LV, EE, NL, BE, LU). Tier note (reverse mode only): NL and DE use paid upstream registries — free-tier API keys receive HTTP 402 'upgrade_required'; do NOT retry on 402. Endpoint: https://nordic-data-mcp-production.up.railway.app/mcp/auth
- company_enriched - Enriched company data: basic registry data + DAWA-validated address with lat/lng + industry statistics (DST for DK, SSB for NO, etc.) + Wikidata enrichment (website, employees, CEO, ticker, logo, Wikipedia URL). One call, multiple sources. Supports 15 countries (DK, NO, SE, FI, IE, UK, FR, DE, CZ, PL, LV, EE, NL, BE, LU). Tier note: NL and DE use paid upstream registries — free-tier API keys receive HTTP 402 'upgrade_required'; do NOT retry on 402. On paid tiers, NL costs 5x quota and DE costs 3x. Endpoint: https://nordic-data-mcp-production.up.railway.app/mcp/auth
- fr_history - French company history timeline. Returns one event per change to the company's name, activity (NAF code), status (active/closed), legal form, or social-economy flag, derived from INSEE Sirene 3.11's bitemporal periodesUniteLegale array. Includes 'initial:<field>' events that show the state at company creation (date, name, NAF code, etc.). Input: 9-digit SIREN number. Cost: 1 quota unit; free tier supported (France is not tier-gated, unlike NL and DE). Cache: 24h server-side. Errors: 400 invalid_id_format (not 9 digits), 403 non_diffusible (SIREN exists but is privacy-protected under art. R123-232-1), 404 not_found, 503 upstream_unavailable. Endpoint: https://nordic-data-mcp-production.up.railway.app/mcp/auth
- list_endpoints - Discovery meta-tool. Lists ALL available Nordic Data API data endpoints (HTTP method, path, short description) by reading the backend's live OpenAPI spec at runtime — far beyond the curated high-level tools. Use this to discover capabilities the dedicated tools do not cover, then call get_endpoint_schema for parameter details and call_endpoint to execute one. Admin endpoints are never returned. Supports an optional `search` keyword filter. The catalog has 230+ endpoints. Endpoint: https://nordic-data-mcp-production.up.railway.app/mcp/auth
- get_endpoint_schema - Discovery meta-tool. Returns the full parameter and response schema for a single Nordic Data API endpoint (path + method), read from the backend's live OpenAPI spec with $refs resolved inline. Use after list_endpoints to learn exactly which parameters an endpoint takes before calling it with call_endpoint. Admin endpoints are rejected. Endpoint: https://nordic-data-mcp-production.up.railway.app/mcp/auth
- call_endpoint - Discovery meta-tool. Executes a real HTTP request against the Nordic Data API for any non-admin endpoint discovered via list_endpoints, and returns the response. Authenticates with the same scoped API key as the curated tools. Only HTTP methods declared in the spec for the given path are permitted; /admin endpoints are always refused. Use list_endpoints and get_endpoint_schema first to find the correct path, method, and parameters. Endpoint: https://nordic-data-mcp-production.up.railway.app/mcp/auth

## Resources
- nordic://countries - Country coverage for company tools (lowercase) and VAT validation (uppercase + GB), including tier-gating and quota cost. MIME type: text/markdown
- nordic://tools - List of all available tools with one-line descriptions and guidance on the curated vs discovery tools. MIME type: text/markdown
- nordic://getting-started - How to obtain an API key, country-code rules, and tier-gating notes. MIME type: text/markdown

## Prompts
- due_diligence - Run a full company due-diligence workflow: registry data, KYB report, and sanctions screening, then summarize the risk. Output is informational decision-support, not legal/compliance advice. Arguments: company, country
- vat_check - Validate a VAT number and report the registered business behind it. Arguments: vat_number, country
- sanctions_screening - Screen one or more names against UN/EU/OFAC/PEP lists and interpret the matches. Matches are decision-support to review, not legal/compliance advice or a determination. Arguments: names

## Metadata
- Owner: io.github.Mnymann
- Version: 1.5.1
- Runtime: Npm
- Transports: STDIO, HTTP
- License: Not captured
- Language: Not captured
- Stars: Not captured
- Updated: May 31, 2026
- Source: https://registry.modelcontextprotocol.io
