eu-registry
Server Details
EU company registry lookup: 16 countries incl. Lithuania (JAR: identity + legal status).
- Status
- Healthy
- Uptime
- 100.0% over 60 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- martinhavel/cz-agents-mcp
- GitHub Stars
- 6
- Server Listing
- cz-agents-mcp
TDQS
Scored across 3 tools
The three tools split cleanly by input key: national ID (get_company), VAT number (lookup_company_by_vat), and company name (search_company). There is partial overlap because get_company can also resolve nl/it/at/es/be via VIES VAT, which brushes against lookup_company_by_vat, but the descriptions explain the distinction (authoritative registry record vs. free VIES validity check).
All names are snake_case and end in the resource noun 'company' with a leading verb (get_/lookup_/search_). The verbs vary in style and one name carries a 'by_vat' qualifier, which is a minor deviation from a strictly uniform verb_noun pattern but remains readable and predictable.
Three tools is lean but justified for a read-only registry lookup service, where the natural axes are ID, VAT, and name. Coverage of many countries happens inside each tool rather than by multiplying endpoints, so the count feels intentionally scoped rather than thin.
The core identity-resolution paths (by ID, by VAT, by name) are covered for a broad set of EU/EEA registries, and cross-references between tools (e.g., LT GLEIF/VIES fallback) are noted. Gaps are minor: no discovery/introspection tool listing supported country-code schemas, and no way to reverse VAT from a national ID in one call.
Available Tools
3 toolsget_companyARead-onlyInspect
Get a non-Czech company by national ID and country code. Supported: gb (CRN), sk (IČO), pl (KRS number), lt (JAR registry code; VIES/GLEIF fallback when its local store is unavailable or has no matching record), nl/it/at/es/be (VAT via VIES), de (LEI), fr (SIREN), no (organization number), dk (CVR number), fi (Business ID), ee (registry code), se (10-digit organisation number via Bolagsverket).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | National company ID, e.g. UK Companies House CRN "14356670". | |
| country | Yes | ISO alpha-2 code or supported country name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds genuine context beyond that: which national registries back each country and the lt fallback behavior to VIES/GLEIF. It omits not-found/error behavior and auth expectations, but adds real value over the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose followed by a dense but earned country-to-ID-type list; there is no filler. The enumeration is long but every entry carries lookup-relevant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a multi-registry open-world lookup with no output schema, the description supplies the supported countries, their ID formats, and a fallback rule, which is enough to call it correctly. It stops short of describing return shape or miss/error handling, a minor remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description goes beyond the schema by mapping each country to the specific expected ID type (CRN, IČO, KRS, SIREN, CVR, etc.), which materially clarifies what the id parameter should contain for a given country.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (company), plus a precise scope: non-Czech companies looked up by national ID and country code. The country/ID-type enumeration makes it clearly distinguishable from search_company and lookup_company_by_vat.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides rich per-country support context and a concrete fallback rule for lt (VIES/GLEIF when the local store is unavailable or has no match), which implies the lookup path. However, it never explicitly states when to prefer this over the sibling lookup_company_by_vat or search_company, leaving the routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_company_by_vatARead-onlyInspect
Free VIES VAT lookup. Returns VAT validity plus name/address when the member state discloses them; some countries such as ES/DE may return only validity.
| Name | Required | Description | Default |
|---|---|---|---|
| vat | Yes | EU VAT number including ISO-2 country prefix, e.g. "NL123456789B01". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and openWorldHint=true, and the description adds valuable behavioral context that some countries (ES/DE) may only return validity, not name/address. This goes beyond the annotation hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences immediately convey purpose and a key caveat. Every word earns its place, with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description explains what is returned (validity, optional name/address) and notes country-specific limitations. It does not detail the exact response structure, but this is sufficient for a simple read-only lookup tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already fully documents the single 'vat' parameter with a format example. The description adds no additional parameter semantics, so the baseline of 3 is appropriate given high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states this is a VAT lookup tool for EU VAT numbers, and it returns validity plus available company details. It distinguishes from sibling tools by focusing specifically on VAT-based lookup.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus get_company or search_company. It implies a use case (VAT lookup) but provides no guidance on alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_companyARead-onlyInspect
Search non-Czech business registries by company name. Supported: GB (Companies House), SK (ORSR/RPO), PL (KRS), LT (JAR open data with VIES/GLEIF fallback), NL/IT/AT/ES/BE (GLEIF/LEI only; exact VAT data via lookup_company_by_vat or get_company with VAT), DE (GLEIF/LEI), FR (SIRENE), NO (BRREG), DK (CVR), FI (PRH YTJ), EE (RIK open data), SE (GLEIF/LEI name search; use get_company for full Bolagsverket data).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Company name or partial company name. | |
| limit | No | Max results per search, default 10, max 20. | |
| country | No | ISO alpha-2 code or supported country name, e.g. "GB", "UK", or "United Kingdom". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, covering safety and external data access. The description adds useful behavioral context: supported registries, data source limitations (e.g., 'GLEIF/LEI only', 'open data with VIES/GLEIF fallback'), and fallback suggestions. It doesn't discuss rate limits or result format, but with annotations providing the safety profile, this is solid.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single long sentence packed with country-specific notes. It is front-loaded with the core purpose, but the dense enumeration of countries and fallbacks makes it less readable. Every detail is relevant, but the structure could be improved with bullet points or clearer grouping.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (multi-country search with varying data sources), the description provides substantial context about which countries are supported and what data to expect. It also points to alternatives for VAT and full data. No output schema exists, but the description doesn't need to explain return format because it's a search tool with predictable output. It misses explicit pagination or result limit behavior, but schema covers limit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters (name, limit, country). The description does not add parameter-specific semantics beyond implying country support. Baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Search non-Czech business registries by company name'. Clearly distinguishes from siblings get_company and lookup_company_by_vat by scoping to search by name. Sibling differentiation is explicit, but the title duplicates this and there's no explicit contrast statement beyond the scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: it says it searches by company name, lists supported countries, and repeatedly directs users to alternatives for VAT or full registry data. However, it doesn't give explicit when-not-to-use guidance or prerequisites in a structured way; the alternatives are embedded in country notes. Adequate but not exemplary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
- Changed
get_company2 fields changed- changed
Input schema / properties / country / descriptionPrevious value: -"ISO 3166-1 alpha-2 country code, e.g. \"gb\"."New value: +"ISO alpha-2 code or supported country name." - changed
Input schema / properties / country / maxLengthPrevious value: -2New value: +64
- Changed
search_company2 fields changed- changed
Input schema / properties / country / descriptionPrevious value: -"ISO 3166-1 alpha-2 country code, e.g. \"gb\"."New value: +"ISO alpha-2 code or supported country name, e.g. \"GB\", \"UK\", or \"United Kingdom\"." - changed
Input schema / properties / country / maxLengthPrevious value: -2New value: +64
1 tool update
- Added
lookup_company_by_vat
2 tool updates
- First observed
get_company - First observed
search_company
Related MCP Connectors
Company, KYB, VAT, sanctions, LEI and address data for 15 EU countries.
KYB data from 23 European business registries — company briefs, financials, ownership, AML screening
EU company dossiers and health, sanctions, PEP, invoice checks, watches, x402 pay guard.
European business data — French company check, EU VAT validation, legal search.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceCompany data for Spain, France, the UK, Ireland and Poland — registry, KYB and sanctions.3,430 npmMIT
- FlicenseNot gradedqualityBmaintenanceCross-checks company/entity records against 23 national commercial registries (GLEIF, SIRENE, VIES, TED, Companies House) to flag missing or inconsistent registrations. Free tier: 100 calls/month via hosted API.-
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to access official European business data across 15 EU countries, including company lookups, VAT validation, sanctions screening, and KYB reports.7,873 npm1MIT
- AlicenseAqualityCmaintenanceStructured business intelligence for AI agents. 5.5M verified entities across 34 countries, 40.3M BORME mercantile acts, EU VAT validation, GLEIF, healthcare registries. 20 tools.61MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.