@czagents/eu-registry
v0.8.1
Published
European business registry lookups in one MCP — verify companies across EU member states via GLEIF/LEI and official national registries. Entity status, registration data, addresses, and parent-company resolution. Built for cross-border due-diligence and K
Maintainers
Readme
@czagents/eu-registry
European business registry lookups in one MCP — verify companies across 16 EU/EEA countries via official national registries and GLEIF/LEI + VIES. Full national data for 9 countries; partial Lithuania JAR data; identity + ownership baseline for 6 other countries. Entity status, registration data, addresses, parent-company resolution, and EU VAT validation. Built for cross-border due-diligence and KYC directly in your AI assistant.
Part of the cz-agents suite.
Supported registries
Full national data (entity, status, address, registration date):
| Country | Source | Notes |
|---------|--------|-------|
| GB | Companies House | Requires free CH_API_KEY from developer.company-information.service.gov.uk |
| SK | ORSR / RPO | No auth required |
| PL | KRS | No auth required |
| FR | SIRENE | No auth required |
| NO | Brønnøysund (BRREG) | No auth required |
| DK | CVR (Erhvervsstyrelsen) | Optional DK_CVR_USER/DK_CVR_PASS (free, request at [email protected]); public fallback otherwise |
| FI | PRH YTJ Open Data v3 | Free, no API key, CC BY 4.0 |
| EE | RIK open data dump | Daily bulk ingest to local SQLite via EE_RIK_DB_PATH; no API key, CC BY 4.0 |
| SE | Bolagsverket HVD API | Free OAuth credentials from Bolagsverket; exact organisation-number lookup. Name search uses GLEIF/LEI because HVD has no name-search endpoint. |
Partial national-registry data: Lithuania
| Country | Source | Notes |
|---------|--------|-------|
| LT | Registrų centras JAR open data | Monthly local SQLite ingest via LT_JAR_DB_PATH; CC BY 4.0. Name, code and registration date are served from JAR. The official legal-status classifier label is exposed as status_label; application status remains unknown and normalized_status null. Addresses and officers are not published or enriched; JADIS and other enrichment are out of scope. VIES/GLEIF remains the fallback if the local store is unavailable or has no matching record. |
Identity + ownership baseline (name, address, status, VAT validity, GLEIF/LEI parent-company resolution — no officer/board data; for registries that are paywalled):
| Country | Source | Notes | |---------|--------|-------| | DE | GLEIF/LEI + VIES | No auth required | | NL | GLEIF/LEI + VIES | No auth required | | IT | GLEIF/LEI + VIES | No auth required | | AT | GLEIF/LEI + VIES | No auth required | | ES | GLEIF/LEI + VIES | VIES returns validity only for ES (no name/address) | | BE | GLEIF/LEI + VIES | No auth required |
Tools
Each example is an MCP tool-call argument object.
search_company— searches supported non-Czech registries by full or partial company name. Do not use it when you already have an exact national ID, or expect full national-registry data for GLEIF-only countries. Example:{"name":"Tesco","country":"GB","limit":5}.get_company— fetches a supported non-Czech company by its national ID and country. Do not use it for Czech companies, or with a name instead of the country-specific identifier. Example:{"id":"14356670","country":"GB"}.lookup_company_by_vat— validates an EU VAT number through VIES and returns disclosed registration details. Do not use it to obtain director/board data, or assume name/address are available for every member state. Example:{"vat":"NL123456789B01"}.
Configuration
| Variable | Required | Description |
|----------|----------|-------------|
| CH_API_KEY | No | UK Companies House API key. Without it GB adapter returns empty results. |
| GLEIF_CACHE_PATH | No | Path to SQLite cache file for GLEIF responses (DE/NL/IT/AT/ES/BE/LT). Falls back to in-memory if unset. |
| GLEIF_CACHE_TTL_DAYS | No | Cache TTL in days. Default: 7. |
| DK_CVR_USER / DK_CVR_PASS | No | Denmark CVR data credentials (free, request at [email protected]). Without them the DK adapter uses its public fallback. |
| EE_RIK_DB_PATH | No | Path to SQLite store for Estonia RIK bulk data. Default: ./ee-rik.db. |
| LT_JAR_DB_PATH | No | Path to SQLite store for Lithuania Registrų centras JAR open data. Default: ./lt-jar.db. |
| SE_BOLAGSVERKET_CLIENT_ID / SE_BOLAGSVERKET_CLIENT_SECRET | No | Sweden Bolagsverket HVD OAuth credentials. Without them exact SE lookups return no result; name search still uses GLEIF. |
| PORT | No | HTTP transport port. Default: 3036. |
Usage
npx (stdio transport)
{
"mcpServers": {
"eu-registry": { "command": "npx", "args": ["-y", "@czagents/eu-registry"] }
}
}Hosted endpoint (no install)
{
"mcpServers": {
"eu-registry": { "url": "https://eu-registry.cz-agents.dev/mcp" }
}
}Related packages
@czagents/ares— Czech ARES business registry@czagents/dd— Czech due-diligence aggregator (includesget_eu_parentandget_eu_dd_reporton Compliance tier)@czagents/sanctions— EU FSF + OFAC sanctions screening
Development
npm run build
npm test
npm run start:httpEstonia bulk ingest:
EE_RIK_DB_PATH=/absolute/path/ee-rik.db npm run build --workspace=@czagents/eu-registry
EE_RIK_DB_PATH=/absolute/path/ee-rik.db npm run ingest:ee-rik --workspace=@czagents/eu-registryLithuania JAR bulk ingest (run monthly):
LT_JAR_DB_PATH=/absolute/path/lt-jar.db npm run build --workspace=@czagents/eu-registry
LT_JAR_DB_PATH=/absolute/path/lt-jar.db npm run ingest:lt-jar --workspace=@czagents/eu-registryLT results expose the upstream Last-Modified value as source_snapshot_at when available, separately expose ingested_at, and carry the CC BY 4.0 attribution. The official JAR open-data endpoint reported zero non-null values for both pilnas_adresas and adresas; the implementation therefore always returns no address and marks address not published in open data. It does not fetch JADIS, officers, or GLEIF-derived addresses.
