entyrix-mcp
This server provides LLM clients with tools to search, look up, and analyze companies across 16+ European jurisdictions (SK, CZ, AT, EE, SI, LV, UK, and more) via the Entyrix API (requires an API key). Core capabilities:
Search & Discovery:
search_companies: Fuzzy name, address, or national ID (IČO) search with typo tolerance.advanced_search: Structured search using 57+ filters (country, NACE, turnover, profit, employee count, credit grade, NIS2, sanctions, tech stack, EU funds, etc.).list_rankings: Pre-computed leaderboards (top by turnover, public contracts, most-registered addresses, most-viewed).
Company Identity & Details:
lookup_company: Resolve by national registry ID (e.g., IČO, Firmenbuch) with country disambiguation.get_company_details: Full profile – financials, tech stack, SSL/CVE findings, NIS2 scope, sanctions, credit score/grade, address, legal form, status.
Relations & Network:
get_company_network: Shared-officer graph for multi-hop discovery of connected companies.get_company_relations: Directors, UBOs/beneficial owners, shareholders, related companies, M&A/succession events.
Financial & Compliance:
get_financials: Up to 20 years of annual statements (turnover, profit, EBITDA, ROA, ROE, assets, equity) in EUR.check_compliance: AML/sanctions screening, debtor lists (SocPoist/VšZP/tax), insolvency/bankruptcy/liquidation status, RPVS transparency (SK).find_suppliers: List Slovak public-sector (CRZ) contracts (value, buyer, dates, CPV).
Use Cases: KYB/KYC onboarding, AML screening, supplier due diligence, risk monitoring, and market research.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@entyrix-mcpSearch for companies named 'Solar' in Czech Republic"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@entyrix/mcp
Model Context Protocol (MCP) server for the Entyrix European business-registry (KYB) API. Exposes 10 stdio tools so LLM clients (Claude Desktop, Claude Code, Cursor, ChatGPT) can search, look up, and analyze companies across 23 live markets (FR, GB, RO, SK, UA, GR, CZ, BE, NO, IE, FI, CH, PL, AT, CY, LT, LV, EE, SI, ES, IT, NL, HR).
30-second quickstart
npm install -g @entyrix/mcp
export ENTYRIX_API_KEY=your-api-key-here
entyrix-mcpOr run without installing:
export ENTYRIX_API_KEY=your-api-key-here
npx @entyrix/mcpGet an API key at https://entyrix.com.
Related MCP server: eu-company-mcp-server
Tools
Tool | Description |
| Fuzzy/typo-tolerant name search (server-side 26-62 ms cold, ~1 ms cached; measured 2026-08-11) |
| Resolve a company by national registry ID, country-aware (SK/CZ/AT/EE/SI/LV/…) |
| Full profile: financials, tech stack, security, NIS2, sanctions, credit grade |
| Shared-officer graph — related entities via common directors/officers |
| Directors, UBO / beneficial owners, M&A and succession links |
| 57-key filter search (country, NACE, turnover, credit grade, NIS2, sanctions, tech, …) |
| AML / sanctions / debtor lists / RPVS check (SK) |
| Last N years of turnover, profit, EBITDA, ROA, ROE |
| Public-sector contracts where company is supplier (SK CRZ) |
| Pre-computed leaderboards (top turnover, top employers, …) |
Configuration
Env var | Default | Description |
| (required) | Bearer token from your Entyrix dashboard |
|
| Override for staging / self-hosted |
|
| HTTP timeout per request |
Client setup
Claude Desktop
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"entyrix": {
"command": "npx",
"args": ["-y", "@entyrix/mcp"],
"env": {
"ENTYRIX_API_KEY": "your-api-key-here"
}
}
}
}Restart Claude Desktop. The 10 tools appear in the tools panel.
Claude Code
Register the server from any project (writes to ~/.claude.json):
claude mcp add entyrix --env ENTYRIX_API_KEY=your-api-key-here -- npx -y @entyrix/mcpOr add it manually to .mcp.json in your project root (checked in) / ~/.claude.json (global):
{
"mcpServers": {
"entyrix": {
"command": "npx",
"args": ["-y", "@entyrix/mcp"],
"env": {
"ENTYRIX_API_KEY": "your-api-key-here"
}
}
}
}Cursor
Edit .cursor/mcp.json in your workspace (or ~/.cursor/mcp.json for global):
{
"mcpServers": {
"entyrix": {
"command": "npx",
"args": ["-y", "@entyrix/mcp"],
"env": {
"ENTYRIX_API_KEY": "your-api-key-here"
}
}
}
}ChatGPT
ChatGPT does not consume MCP stdio servers directly today. Two integration paths:
1. Custom GPT Actions — expose Entyrix endpoints as OpenAPI actions. Sketch:
openapi: 3.1.0
info:
title: Entyrix
version: 0.1.0
servers:
- url: https://entyrix.com/api/v1
paths:
/companies/autocomplete:
get:
operationId: searchCompanies
parameters:
- name: q
in: query
required: true
schema: { type: string }
- name: country
in: query
schema: { type: string, minLength: 2, maxLength: 2 }
responses:
"200": { description: OK }
/companies/{country}/{national_id}:
get:
operationId: lookupCompany
parameters:
- { name: country, in: path, required: true, schema: { type: string } }
- { name: national_id, in: path, required: true, schema: { type: string } }
responses:
"200": { description: OK }
components:
securitySchemes:
BearerAuth:
type: http
scheme: bearer
security:
- BearerAuth: []Paste this into the Custom GPT builder, set the auth header, and the Entyrix endpoints become first-class GPT actions.
2. Connectors API (enterprise) — <https://platform.openai.com/docs/connectors> accepts MCP servers behind an HTTP wrapper; a small HTTP-to-stdio adapter is on the roadmap.
Development
git clone <repo>
cd entyrix-mcp
npm install
npm run build
npm testLocal stdio sanity-check (requires a real API key):
ENTYRIX_API_KEY=your-key node dist/index.js
# (stdin/stdout speaks MCP — wire it to a client to actually issue calls)Quality gates
npm run check # format:check + lint + typecheck + test — the same four CI runsRun check, not the four by hand. On 2026-08-12 a release was cut after
lint + typecheck + test passed and CI went red on format:check — the one
step that got skipped because it was being remembered rather than scripted.
Releasing
npm run bump 0.1.5 # writes all four manifests, refuses on drift
npm run check
git commit -am "chore(release): 0.1.5"
git tag v0.1.5
git push && git push --tags # one push, then the tagThe version lives in four files and src/lib/__tests__/version.test.ts asserts
they agree; bump is what keeps that guard from firing on every release. Push
once — each push is a full CI run, and a release cut as four separate pushes
bills four of them (plus two red ones for the intermediate states).
npm publish runs from the tag via OIDC trusted publishing, so no token is
involved. npm versions are immutable: a bad publish cannot be recalled, only
superseded — which is why the tag is checked against package.json before
anything is published.
License
MIT — see LICENSE.
Available Tools
10 toolsadvanced_searchAdvanced company searchA
Structured multi-filter company search across registry, geography, sector, size, financials, credit/distress, sanctions, NIS2 and cyber exposure, digital footprint (including tech= for a named technology such as PrestaShop or CookieYes) and public money. Returns a paginated list with a per-country breakdown. Totals are capped at 5000 — pagination.isCapped says when the real number is higher. Check data.unknownFilters in the response: any key listed there was DROPPED, so the result is wider than you asked for. Use for analyst-style queries like 'active SK e-shops on PrestaShop with turnover over €1M and no consent platform detected'.
| Name | Required | Description | Default |
|---|---|---|---|
| nace | No | Single NACE prefix match, e.g. '46' | |
| tech | No | Named technology, exact match, e.g. 'PrestaShop', 'Shoptet', 'CookieYes'. An unknown name returns 400 with the full list in meta.available — ask for a wrong one once to discover what is detectable. | |
| year | No | Financial year for period-specific figures | |
| limit | No | Max results (default 50, cap 200) | |
| nuts2 | No | NUTS-2 code | |
| nuts3 | No | NUTS-3 code, e.g. 'SK042' | |
| order | No | NOT 'sort'. An unrecognised value falls back to turnover_desc silently. | |
| active | No | Registry active flag (NOT is_active) | |
| offset | No | Pagination offset | |
| region | No | Region NAME only, e.g. 'Košický kraj'. A NUTS code here returns zero — use nuts3. | |
| status | No | ||
| country | No | Alias for country_code. ISO 3166-1 alpha-2, e.g. 'SK'. | |
| healthy | No | Shorthand: no bankruptcy, liquidation, restructuring or tax debt | |
| district | No | ||
| has_cves | No | ||
| has_rpvs | No | SK register of public-sector partners | |
| has_tech | No | Any detected technology at all | |
| has_email | No | ||
| has_phone | No | ||
| nis2_tier | No | essential | important | |
| legal_form | No | Legal form code, e.g. '112' = s.r.o. (SK) | |
| profit_max | No | Maximum annual profit in EUR | |
| profit_min | No | Minimum annual profit in EUR | |
| entity_type | No | Comma-separated also accepted. Natural persons are gated out of results anyway. | |
| has_website | No | ||
| is_debarred | No | Excluded from public procurement | |
| nace_prefix | No | Comma-separated NACE prefixes, e.g. '46,47' | |
| nis2_sector | No | ||
| ssl_invalid | No | ||
| country_code | No | ISO 3166-1 alpha-2, comma-separated for several markets, e.g. 'SK,CZ' | |
| credit_grade | No | Comma-separated grade letters, e.g. 'A,B' | |
| employee_max | No | Maximum headcount (NOT employees_max) | |
| employee_min | No | Minimum headcount (NOT employees_min) | |
| eu_funds_min | No | Minimum EU funds received, EUR | |
| has_tax_debt | No | ||
| is_vat_payer | No | ||
| municipality | No | Town/city name, e.g. 'Košice' | |
| turnover_max | No | Maximum annual turnover in EUR | |
| turnover_min | No | Minimum annual turnover in EUR | |
| contracts_min | No | Minimum contract count | |
| employee_size | No | Employee size-band code | |
| has_contracts | No | Has public procurement contracts | |
| in_bankruptcy | No | ||
| is_sanctioned | No | NOT 'sanctioned' | |
| nis2_in_scope | No | NOT 'nis2_scope' | |
| terminated_to | No | Terminated on or before, ISO date | |
| updated_since | No | Only rows changed since this ISO date | |
| established_to | No | Founded on or before, ISO date YYYY-MM-DD | |
| has_financials | No | ||
| in_liquidation | No | ||
| cyber_score_min | No | ||
| terminated_from | No | Terminated on or after, ISO date | |
| credit_score_max | No | ||
| credit_score_min | No | ||
| established_from | No | Founded on or after, ISO date YYYY-MM-DD | |
| in_restructuring | No | ||
| has_critical_cves | No | ||
| has_offshore_link | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure, and it does so well. It warns that totals are capped at 5000 and that `pagination.isCapped` indicates truncation, and it explains that keys in `data.unknownFilters` were dropped, making results broader than requested. These are non-obvious behaviors that materially affect correct interpretation of results.
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 compact and front-loaded: the first clause states the purpose, then each subsequent sentence adds a critical operational caveat (cap, unknown filters, usage example). There is no redundant or filler content; every sentence earns its place.
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 high complexity (58 parameters, no annotations, no output schema), the description provides a strong broad overview and the most critical runtime caveats. It doesn't spell out every pagination mechanism or filter-combination rule, but the schema fills many gaps, making this sufficiently complete for a complex search 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 description adds only high-level parameter context, such as the `tech=` example and the analyst-style query pattern. With 58 parameters and 67% schema description coverage, the schema carries most of the parameter semantics; the description does not systematically compensate for the undocumented remainder, so this is adequate but not exceptional.
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 uses a specific verb and resource: 'Structured multi-filter company search' across a detailed list of dimensions (registry, geography, sector, size, financials, credit/distress, sanctions, NIS2, cyber, digital footprint, public money). It also states the return shape (paginated list, per-country breakdown) and gives a concrete example query, making it unmistakable what this tool does and how it differs from simpler sibling search tools.
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 gives an explicit use case: 'Use for analyst-style queries like...' and provides a concrete multi-filter example. However, it does not explicitly say when NOT to use this tool or mention alternative sibling tools such as search_companies, so it lacks the when-not/alternatives element needed for a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_complianceCompliance + sanctions checkA
Public compliance check for a Slovak company: AML/sanctions, debtor lists (SocPoist/VšZP/tax), insolvency/bankruptcy/liquidation status, RPVS (transparency-of-ownership register, zákon 315/2016), and active regulatory flags. No API key required server-side (public route), but still routed through the authenticated MCP client for traceability. SK-only today; CZ/AT compliance modules tracked in roadmap.
| Name | Required | Description | Default |
|---|---|---|---|
| ico | Yes | 6-8 digit IČO (Slovak/Czech/Estonian registry number). Leading zeros optional. This endpoint is keyed on the legacy IČO column, so markets whose identifier is not a 6-8 digit IČO are not reachable through this endpoint yet. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It reveals the public route, authentication via MCP client, and geographical limitation. It also lists the exact registries checked, providing useful operational context beyond the schema.
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?
Three sentences: first states the core purpose, second explains auth behavior, third gives market scope. Everything earns its place with no redundancy or fluff.
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?
The description provides a thorough list of check types, geographical scope, and authentication behavior. Despite lacking an output schema, it gives a strong sense of what the tool returns. Minor gaps include error handling and return format, but for a single-param tool this is quite complete.
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% for the single 'ico' parameter, which already includes detailed constraints (6-8 digits, pattern, market limitation). The description adds no param-specific details, so baseline 3 is appropriate.
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 it performs a compliance check for a Slovak company and enumerates specific data sources (AML/sanctions, debtor lists, insolvency, RPVS, regulatory flags). This distinguishes it from sibling tools like search_companies or get_financials, which serve different purposes.
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?
It provides explicit usage context: SK-only, public route with no server-side API key but routed through authenticated client, and notes CZ/AT are not yet available. It doesn't explicitly name alternatives, but the domain (compliance vs. search/details) makes the when-to-use clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_suppliersFind public-sector contracts (SK supplier)A
List public-sector contracts where the given company is the supplier. Backed by SK CRZ (Centrálny register zmlúv). Returns contract value, buyer (public-sector entity), signing date, contract subject, and CPV code where available. SK-only today (CRZ is a Slovak register). For broader EU procurement signal use the planned TED-search tool (not yet exposed). Useful for B2G exposure analysis and supplier due diligence.
| Name | Required | Description | Default |
|---|---|---|---|
| ico | Yes | 6-8 digit IČO (Slovak/Czech/Estonian registry number). Leading zeros optional. This endpoint is keyed on the legacy IČO column, so markets whose identifier is not a 6-8 digit IČO are not reachable through this endpoint yet. | |
| limit | No | Max contracts (default 50, cap 500) | |
| years | No | Restrict to recent years, e.g. '3' for the last 3 | |
| offset | No | Skip this many contracts; page with data.pagination.total |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral transparency burden. It discloses the data source (SK CRZ), return fields, and a data quality caveat ('CPV code where available'). It also honestly limits scope to SK. It does not mention pagination or error behavior, but these are covered by the schema, and the tool is clearly a read-only listing.
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 moderately long but front-loaded with the core action and resource. The additional sentences about data source, scope, and use case are valuable and not redundant. It could be slightly tighter, but each sentence earns its place.
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?
There is no output schema, so the description enumerates returned fields (contract value, buyer, signing date, subject, CPV) and provides business context. It also mentions the data source and geographic limitation, giving an agent enough context to invoke correctly. A minor gap is that it does not explicitly state the input ICO is the supplier, though that is strongly implied.
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% with detailed parameter descriptions (e.g., ICO format, limit cap, years example). The description adds no parameter-specific meaning beyond output expectations, so the baseline of 3 is appropriate. It does not need to repeat what the schema already documents.
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 uses the specific verb 'List' with a clear resource ('public-sector contracts') and relationship ('where the given company is the supplier'). It distinguishes itself from siblings by explicitly stating it is SK-only and referencing the planned TED-search tool for broader EU coverage, making its purpose unique.
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 usage guidance: for B2G exposure analysis and supplier due diligence. It also gives an explicit exclusion: for broader EU procurement signal, use the planned TED-search tool (not yet exposed), and notes the SK-only limitation, which helps an agent decide when not to choose this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_company_detailsGet full company detailsA
Fetch the full company profile by IČO: identity, registered address, NACE, legal form, status, latest financials, tech stack / website / SSL signals, security findings (CVE/CT logs), NIS2 scope, sanctions hits, and credit score / grade. Richer than lookup_company (which is identity-only). For SK↔CZ 8-digit collisions the API picks the active SK match first; use lookup_company with explicit country for deterministic disambiguation.
| Name | Required | Description | Default |
|---|---|---|---|
| ico | Yes | National registry identifier. Slovakia, Czechia and Estonia use a 6-8 digit IČO; France a 9-digit SIREN. Norway, Lithuania and Portugal 9 digits; Belgium 10; Switzerland CHE#########; Finland 0140168-2. Austria uses a Firmenbuch number like 357942k; Britain 08183069 or SC307270. Pass `country` for anything that is not a Slovak or Czech IČO. | |
| country | No | ISO 3166-1 alpha-2 code of the register, e.g. SK or FR. REQUIRED for any market whose identifier is not a 6-8 digit IČO, and the only way to disambiguate an 8-digit IČO that exists in both SK and CZ. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the disclosure burden. It reveals a specific behavioral quirk: 'For SK↔CZ 8-digit collisions the API picks the active SK match first' – useful non-obvious information. It does not mention error handling, rate limits, or explicitly state read-only, but the 'Fetch' verb and output list imply a safe read operation. The disclosed collision behavior goes beyond typical descriptions.
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 two sentences, tightly packed with essential information. The first sentence front-loads the main action and output scope; the second addresses an important caveat. No filler or redundant wording.
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?
Despite no output schema, the description comprehensively lists the categories of data returned (identity, address, NACE, finances, tech signals, security, NIS2, sanctions, credit), giving the agent a clear picture of what to expect. It also covers the disambiguation context. For a read operation with good parameter schema, this is complete enough for effective invocation.
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% with detailed parameter descriptions, so the baseline is 3. The description adds value by explaining the purpose of 'country' in disambiguating 8-digit IČO collisions and noting it is required for non-SK/CZ identifiers, complementing the schema's field-level descriptions.
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 uses a specific verb + resource: 'Fetch the full company profile by IČO' and enumerates exactly what is returned (identity, registered address, NACE, legal form, status, latest financials, tech stock/website/SSL signals, security findings, NIS2 scope, sanctions hits, credit score). It explicitly contrasts with sibling 'lookup_company (which is identity-only)', clearly distinguishing its 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?
It provides explicit when-to-use guidance by stating it is 'Richer than lookup_company' and directly advises using 'lookup_company with explicit country for deterministic disambiguation' when SK↔CZ collisions occur. This tells the agent exactly when to prefer which tool, including an alternative for a specific edge case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_company_networkGet company network (shared-officer graph)A
Company-to-company network via shared people (statutory officers / shareholders). Returns the company's current officers and, for each, the OTHER companies where that same person also holds a role — every connected company carries its IČO so the graph is walkable. This is the primary network-walk primitive: feed a returned IČO back into get_company_network to traverse another hop. Empty result means the company has no current shared-officer edges (e.g. officer data not yet ingested for that entity) — it does NOT mean the company is isolated; try get_company_relations for UBO / M&A edges. Bearer-auth + FO-gated at the API: keys without an FO addendum are refused for natural-person sole traders.
| Name | Required | Description | Default |
|---|---|---|---|
| ico | Yes | 6-8 digit IČO (Slovak/Czech/Estonian registry number). Leading zeros optional. This endpoint is keyed on the legacy IČO column, so markets whose identifier is not a 6-8 digit IČO are not reachable through this endpoint yet. | |
| purpose | No | Declared due-diligence purpose. Only needed for `full`-tier keys when the subject is a natural person (sole trader) — the API's FO gate refuses such subjects unless a recognised purpose is attested. Ignored for legal entities. Marketing/prospection is not a valid value here. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses the empty-result semantics (not isolated), the FO gate requirement for sole traders, bearer-auth requirement, and the walkable graph structure. This gives agents a realistic behavioral model.
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 detailed yet each sentence serves a purpose: functionality, usage, edge-case semantics, alternative guidance, and auth. Front-loaded with the core purpose and progressively adds nuance. No fluff.
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 complex graph-traversal tool with no output schema, the description covers return value structure, pagination-walkability, edge cases, and auth constraints. It is self-contained enough for an agent to use it correctly and know when to switch to another 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?
Even though the schema covers 100% of parameters, the description adds context beyond the schema for the 'purpose' parameter (only needed for natural-person sole traders, ignored for legal entities, marketing/prospection invalid). It also reinforces the 'ico' constraint about markets keyed on legacy IČO.
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 the tool's function: it builds a company-to-company network via shared officers/shareholders. It differentiates from siblings by explicitly positioning it as the 'primary network-walk primitive' and references get_company_relations for alternative edge types (UBO/M&A).
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 explicit when-to-use and alternatives: 'feed a returned IČO back into get_company_network to traverse another hop' and 'try get_company_relations for UBO / M&A edges'. Also clarifies the empty-result case with guidance to try another tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_company_relationsGet company relations (directors, UBO, M&A)A
Full relationship graph for one company: directors, shareholders, RPVS beneficial owners (UBO, SK register 315/2016 — persons with validity windows and a public-official flag), related companies via shared officers, corporate shareholders (counterparty IČO resolved), and M&A / succession events. Richer than get_company_network — that one is the shared-officer company graph only; this adds the UBO and M&A layers. Use get_company_network to walk company→company hops, use this to enumerate a single company's owners and officers. Bearer-auth + FO-gated at the API: keys without an FO addendum are refused for natural-person sole traders, and UBO persons are minimised (birth YEAR only).
| Name | Required | Description | Default |
|---|---|---|---|
| ico | Yes | 6-8 digit IČO (Slovak/Czech/Estonian registry number). Leading zeros optional. This endpoint is keyed on the legacy IČO column, so markets whose identifier is not a 6-8 digit IČO are not reachable through this endpoint yet. | |
| purpose | No | Declared due-diligence purpose. Only needed for `full`-tier keys when the subject is a natural person (sole trader) — the API's FO gate refuses such subjects unless a recognised purpose is attested. Ignored for legal entities. Marketing/prospection is not a valid value here. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully carries the behavioral burden. It discloses auth requirements (Bearer-auth + FO-gated), the refusal for sole traders without FO addendum, the minimization of UBO data (birth year only), the legacy IČO keying limitation, and the public-official flag. This goes well beyond what annotations would typically provide.
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 dense paragraph, but every sentence contributes (content list, sibling differentiation, auth/limitation notes). It is longer than ideal but appropriately packed for a tool with this complexity. Slightly better structure (e.g., bullets) would make it a 5.
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?
Despite no output schema, the description enumerates all return components (officers, UBO with validity windows, related companies, corporate shareholders with IČO resolution, M&A events). It also covers limitations, auth context, and parameter usage. This is complete for an agent to invoke correctly.
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 the baseline is 3. The description adds meaningful context: purpose is 'only needed for full-tier keys when the subject is a natural person', 'ignored for legal entities', and the IČO limitation is reiterated. This adds practical usage nuance beyond the schema definitions.
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 opens with 'Full relationship graph for one company' and enumerates exactly what is included (directors, shareholders, UBO, related companies, corporate shareholders, M&A events). It also explicitly contrasts with get_company_network, making the specific scope unmistakable.
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 explicit guidance: 'Use get_company_network to walk company→company hops, use this to enumerate a single company's owners and officers.' It also states when the endpoint is not reachable (non-IČO markets) and the FO-gated auth conditions, clearly indicating appropriate use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_financialsGet company financialsA
Return up to N most-recent annual financial statements (turnover, total assets, equity, profit, EBITDA, ROA, ROE) for a company. Source: SK FS / CZ Justice / AT FBW depending on jurisdiction. All money amounts are in EUR (each row carries unit); roa/roe are ratios. Implemented as a thin extractor over get_company_details — saves the LLM from parsing the full company envelope when only financials are needed.
| Name | Required | Description | Default |
|---|---|---|---|
| ico | Yes | National registry identifier. Slovakia, Czechia and Estonia use a 6-8 digit IČO; France a 9-digit SIREN. Norway, Lithuania and Portugal 9 digits; Belgium 10; Switzerland CHE#########; Finland 0140168-2. Austria uses a Firmenbuch number like 357942k; Britain 08183069 or SC307270. Pass `country` for anything that is not a Slovak or Czech IČO. | |
| years | No | How many most-recent years to return (default 5) | |
| country | No | ISO 3166-1 alpha-2 code of the register, e.g. SK or FR. REQUIRED for any market whose identifier is not a 6-8 digit IČO, and the only way to disambiguate an 8-digit IČO that exists in both SK and CZ. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the data source per jurisdiction, that amounts are in EUR with a `unit` field, that ROA/ROE are ratios, and that it is an extractor over get_company_details. It does not discuss error handling or missing data scenarios, but the core behavioral context is well covered.
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 three sentences, front-loaded with the core purpose, followed by units/source and the implementation note. Every sentence earns its place and there is no redundant or verbose language.
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?
Despite lacking an output schema, the description fully explains what is returned (list of annual statements, specific financial metrics, units, ratios). Combined with the detailed parameter schema and clear sibling differentiation, the tool context is complete for effective selection and invocation.
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 per the rubric, the baseline is 3. The description adds no parameter-specific semantics beyond what the schema already provides; it only mentions jurisdiction in the context of the data source, not the parameter meaning.
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 uses a specific verb ('Return') and resource ('most-recent annual financial statements') and enumerates the exact fields (turnover, total assets, equity, profit, EBITDA, ROA, ROE). It also distinguishes itself from siblings by branding itself as a 'thin extractor over get_company_details', which clearly separates it from the broader lookup tools.
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 explicitly states when to use this tool: 'saves the LLM from parsing the full company envelope when only financials are needed.' It also names the alternative (get_company_details) and provides jurisdictional source guidance, making the use cases clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_rankingsList companies by rankingA
Fetch a pre-computed company leaderboard by slug. Exactly four rankings exist: 'largest' (companies by turnover), 'public-contracts' (top state suppliers), 'shell-addresses' (addresses with most registered companies) and 'most-viewed' (most-viewed company profiles). Responses come from a 15-min cache, so they are millisecond-fast. Useful for 'top 100 …' style queries the LLM would otherwise try to assemble from many advanced_search calls.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Ranking slug. Supported: 'largest' (TOP 100 companies by turnover), 'public-contracts' (TOP 100 state suppliers by public-contract count), 'shell-addresses' (TOP 100 addresses with the most registered companies), 'most-viewed' (TOP 100 most-viewed companies). No other slugs exist. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the transparency burden. It discloses that responses are cached for 15 minutes and are millisecond-fast, indicating potential staleness and performance characteristics. It does not explicitly state read-only nature, but 'fetch' and 'pre-computed' imply no side effects, and the enum constrains inputs. One minor gap is the lack of info on response format, but that is not critical given the tool's simplicity.
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 three sentences, front-loaded with the action, then enumerates the slugs, and closes with a practical usage tip. Every sentence adds value with no fluff or redundancy.
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 simple single-parameter tool with no output schema, the description fully covers purpose, usage, cache behavior, and even provides a rationale for its existence. It is complete enough for an agent to select and invoke this tool correctly without further clarification.
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%, with the 'key' parameter description already explaining each enum value fully. The tool description adds no additional parameter-level semantics beyond restating the same four slugs and adding context about the top-100 nature. This meets the baseline but does not exceed it.
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 the tool fetches a pre-computed company leaderboard by slug, enumerating exactly four specific rankings. This distinguishes it from sibling search/lookup tools by highlighting that it serves pre-assembled top-N lists rather than arbitrary queries.
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?
It explicitly states when to use this tool: for 'top 100 …' style queries the LLM would otherwise assemble from many advanced_search calls. It also lists the exact four valid slugs, providing clear alternatives with advanced_search and implicitly excluding other use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_companyLook up company by national IDA
Resolve a single company by its national registry identifier with country disambiguation. Routes through the country-aware lookup so it handles all our shapes: SK/CZ/EE 6-8 digit IČO, AT Firmenbuch numbers (e.g. '187a'), SI/LV multi-digit registry numbers. Returns a single company object with core identity, address, legal form, status flags. Use this when you already know the registry number; use search_companies for name-based discovery.
| Name | Required | Description | Default |
|---|---|---|---|
| ico | Yes | National registry identifier. SK/CZ/EE: 6-8 digit IČO. AT: Firmenbuch number like '187a'. SI: 10-digit matična številka. LV: 11-digit reg number. Leading zeros are normalized server-side. | |
| country | No | ISO 3166-1 alpha-2 country code (default 'SK' for backwards compat). Required to disambiguate SK↔CZ 8-digit IČO collisions and for non-SK shapes (AT, SI, LV). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden and does so well: it reveals country-aware routing, support for multiple national ID formats, and a defined return type ('single company object with core identity, address, legal form, status flags'). It doesn't cover error/edge behavior, but the core behavior is transparent.
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 sentences, front-loaded with the main purpose, and every clause adds functional value—alternatives, shapes handled, and return contents. No filler or redundancy.
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?
Despite no output schema, the description specifies what the returned object contains and covers the main complexity (different national ID shapes and country disambiguation). For a lookup tool, this is complete enough for an agent to confidently invoke it.
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 fully documents both parameters including format examples and the SK↔CZ collision issue. The description adds context about 'all our shapes' but largely repeats schema content. The baseline of 3 applies because the description doesn't significantly augment the schema.
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 opens with a specific action—'Resolve a single company by its national registry identifier'—and explicitly scopes the tool to country-disambiguated lookups by national ID. It also differentiates from sibling tools by contrasting with search_companies for name-based discovery.
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?
It explicitly states when to use the tool: 'Use this when you already know the registry number'. It also gives an alternative: 'use search_companies for name-based discovery', which clearly directs the agent to the right sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_companiesSearch companiesA
Search European companies by name, partial name, or address. Powered by the autocomplete index for typo-tolerance + 12ms p95. Returns ranked hits with IČO, name, address, NACE code, legal form, status, and country. Use this for fuzzy 'find a company called …' queries before drilling into details with lookup_company or get_company_details. Coverage: 23 live markets (FR, GB, RO, SK, UA, GR, CZ, BE, NO, IE, FI, CH, PL, AT, CY, LT, LV, EE, SI, ES, IT, NL, HR).
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Search query (company name, partial name, address, IČO) | |
| limit | No | Max results to return (default 10) | |
| country | No | ISO 3166-1 alpha-2 country code filter (e.g. 'SK', 'CZ', 'AT'). Case-insensitive. | |
| active_only | No | If true (default), only active (non-terminated) companies |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It reveals typo-tolerance via autocomplete index, p95 latency, return fields, and market coverage. It does not explicitly state read-only status, but the tool name and 'search' semantics imply it.
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 four sentences, each providing distinct value: action, performance, return fields, use case, and coverage. It is front-loaded and free of filler, making it effectively concise.
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 no output schema and no annotations, the description adequately covers the tool's scope and return fields. It could mention result structure or pagination, but it is otherwise complete for a search 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?
Schema coverage is 100% with each parameter described. The description adds slight context by mapping q to name/partial/address, but does not provide additional semantic detail for limit, country, or active_only beyond what the schema already offers.
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 the tool searches European companies by name, partial name, or address. It distinguishes itself from sibling tools by targeting fuzzy queries and returning ranked hits with specific fields, while explicitly mentioning lookup_company and get_company_details for follow-up.
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?
Explicit guidance is provided: 'Use this for fuzzy find a company called… queries before drilling into details with lookup_company or get_company_details.' This gives both when to use and names alternatives, making the usage context very clear.
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. Dates show when Glama detected each change.
7 tool updates
v0.1.4- Changed
advanced_search1 field changed- added
Input schema / properties / countryAdded value: +{ + "description": "Alias for country_code. ISO 3166-1 alpha-2, e.g. 'SK'.", + "type": "string" +}
- Changed
check_compliance1 field changed- changed
Input schema / properties / ico / descriptionPrevious value: -"6-8 digit Slovak IČO"New value: +"6-8 digit IČO (Slovak/Czech/Estonian registry number). Leading zeros optional. This endpoint is keyed on the legacy IČO column, so markets whose identifier is not a 6-8 digit IČO are not reachable through this endpoint yet."
- Changed
find_suppliers1 field changed- changed
Input schema / properties / ico / descriptionPrevious value: -"6-8 digit Slovak IČO of the supplier company"New value: +"6-8 digit IČO (Slovak/Czech/Estonian registry number). Leading zeros optional. This endpoint is keyed on the legacy IČO column, so markets whose identifier is not a 6-8 digit IČO are not reachable through this endpoint yet."
- Changed
get_company_details5 fields changed- added
Input schema / properties / countryAdded value: +{ + "description": "ISO 3166-1 alpha-2 code of the register, e.g. SK or FR. REQUIRED for any market whose identifier is not a 6-8 digit IČO, and the only way to disambiguate an 8-digit IČO that exists in both SK and CZ.", + "maxLength": 2, + "minLength": 2, + "type": "string" +} - changed
Input schema / properties / ico / descriptionPrevious value: -"6-8 digit IČO (Slovak/Czech/Estonian registry number). Leading zeros optional."New value: +"National registry identifier. Slovakia, Czechia and Estonia use a 6-8 digit IČO; France a 9-digit SIREN. Norway, Lithuania and Portugal 9 digits; Belgium 10; Switzerland CHE#########; Finland 0140168-2. Austria uses a Firmenbuch number like 357942k; Britain 08183069 or SC307270. Pass `country` for anything that is not a Slovak or Czech IČO." - changed
Input schema / properties / ico / maxLengthPrevious value: -8New value: +32 - changed
Input schema / properties / ico / minLengthPrevious value: -6New value: +1 - changed
Input schema / properties / ico / patternPrevious value: -"^\\d{6,8}$"New value: +"^[A-Za-z0-9][A-Za-z0-9./-]{0,31}$"
- Changed
get_company_network1 field changed- changed
Input schema / properties / ico / descriptionPrevious value: -"6-8 digit IČO (Slovak/Czech/Estonian registry number). Leading zeros optional."New value: +"6-8 digit IČO (Slovak/Czech/Estonian registry number). Leading zeros optional. This endpoint is keyed on the legacy IČO column, so markets whose identifier is not a 6-8 digit IČO are not reachable through this endpoint yet."
- Changed
get_company_relations1 field changed- changed
Input schema / properties / ico / descriptionPrevious value: -"6-8 digit IČO (Slovak/Czech/Estonian registry number). Leading zeros optional."New value: +"6-8 digit IČO (Slovak/Czech/Estonian registry number). Leading zeros optional. This endpoint is keyed on the legacy IČO column, so markets whose identifier is not a 6-8 digit IČO are not reachable through this endpoint yet."
- Changed
get_financials5 fields changed- added
Input schema / properties / countryAdded value: +{ + "description": "ISO 3166-1 alpha-2 code of the register, e.g. SK or FR. REQUIRED for any market whose identifier is not a 6-8 digit IČO, and the only way to disambiguate an 8-digit IČO that exists in both SK and CZ.", + "maxLength": 2, + "minLength": 2, + "type": "string" +} - changed
Input schema / properties / ico / descriptionPrevious value: -"6-8 digit IČO"New value: +"National registry identifier. Slovakia, Czechia and Estonia use a 6-8 digit IČO; France a 9-digit SIREN. Norway, Lithuania and Portugal 9 digits; Belgium 10; Switzerland CHE#########; Finland 0140168-2. Austria uses a Firmenbuch number like 357942k; Britain 08183069 or SC307270. Pass `country` for anything that is not a Slovak or Czech IČO." - changed
Input schema / properties / ico / maxLengthPrevious value: -8New value: +32 - changed
Input schema / properties / ico / minLengthPrevious value: -6New value: +1 - changed
Input schema / properties / ico / patternPrevious value: -"^\\d{6,8}$"New value: +"^[A-Za-z0-9][A-Za-z0-9./-]{0,31}$"
10 tool updates
v0.1.0- First observed
advanced_search - First observed
check_compliance - First observed
find_suppliers - First observed
get_company_details - First observed
get_company_network - First observed
get_company_relations - First observed
get_financials - First observed
list_rankings - First observed
lookup_company - First observed
search_companies
TDQS
Each tool has a clearly distinct purpose: fuzzy name search vs structured multi-filter search, identity-only lookup vs full-profile fetch, officer-based network vs full relationship graph with UBO and M&A layers. Even overlapping tools like get_financials and get_company_details are explicitly differentiated as multi-year financial statements vs full company envelope, leaving no ambiguity.
All tool names are snake_case and most follow the verb_noun pattern (search_, lookup_, get_, check_, find_, list_). The only deviation is 'advanced_search', which uses an adjective+noun form without a verb prefix, slightly breaking the otherwise consistent convention.
With 10 tools, the server is well-scoped for a company data intelligence platform. Each tool covers a distinct feature—discovery, identity, details, financials, relationships, compliance, supplier contracts, and rankings—without redundancy or bloat.
The tool surface covers the core domain comprehensively: search, lookup, details, financials, network/relations, compliance, supplier data, and rankings. Minor gaps exist for non-SK compliance and broader EU procurement, but these are explicitly noted as roadmap items, and the main workflows are fully supported.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
CompanyLens is a remote MCP server giving AI agents instant access to official company registry data across 19 jurisdictions in Europe, the Americas, and Asia-Pacific. Eighteen read-only tools let you search companies and people, look up officers and beneficial owners, map corporate networks through shared directors, screen names against the UK disqualified directors register, find every company at a registered address, and pull filing history — all from a single connector. Visit our website: https://companylens.io
Hosted MCP server for real-world data: business registries, sanctions, companies, domains, crypto.
Remote MCP server to enrich company profiles with structured B2B data and confidence scores.
MCP server for progressive tool usage at any scale (see https://klavis.ai)
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceMCP server for Nordic company registries. Verify companies, check board members, signing authority, and financial data across Norway, Denmark, Finland, and Sweden using official public APIs. 23 tools covering search, details, roles, and batch lookups.198Apache 2.0
- AlicenseAqualityDmaintenanceMCP server for EU company and business data. 9 tools: company search (GLEIF, 2M+ entities), LEI lookup, corporate structures (parent/subsidiaries), trade register search, EU VAT validation (VIES), GDP, unemployment, inflation, and business demography (Eurostat). All APIs free, no keys required.94MIT
- FlicenseAqualityDmaintenanceAn MCP server that gives AI agents access to US business entity data, enabling searches across 9 state registries, SEC EDGAR filings, federal contracts, and lobbying disclosures.61-
- FlicenseNot gradedqualityCmaintenanceA local MCP server that exposes the UK Companies House API as tools for Claude Desktop and Cowork, enabling company search, profile retrieval, officer lookup, and document downloads.-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/juliusgerman/entyrix-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server