# io.github.juliusgerman/entyrix-mcp

> KYB data from 23 European business registries — company briefs, financials, ownership, AML screening

- name: io.github.juliusgerman/entyrix-mcp
- version: 0.2.1
- connection class: R0 (autonomous)
- trust: 94/100
- quality: 100/100 (strong)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.juliusgerman%2Fentyrix-mcp
- tools: https://api.protogrid.dev/v1/servers/io.github.juliusgerman%2Fentyrix-mcp/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "entyrix-mcp": {
      "type": "http",
      "url": "https://entyrix.com/mcp/v1"
    }
  }
}
```


## Trust

- hygiene: 100
- liveness: 99
- freshness: 100
- provenance: 80
- drivers: +repository +namespace-matches-repo +reachable +uptime-98% +updated-12d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 100/100 (strong)

### protocol: 100 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- pass `protocol.list_ttl`: tool list is cacheable (ttlMs 300000)

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 100 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 13 of 13 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 4,557 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 100 (weight 15)

- pass `stability.changes`: 5 tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: deps.dev does not know @entyrix/mcp@0.2.1

- tools: 13, about 4,557 tokens to load them all
- tool set hash: 38ae0776b0b3d3ec0281cad6de2e058c
- tools last changed: 2026-10-13T17:24:20.943Z
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.juliusgerman/entyrix-mcp.svg)](https://protogrid.dev/servers/io.github.juliusgerman/entyrix-mcp)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-13 `advanced_search` changed (inputSchema)
- 2026-10-13 `get_company_relations` changed (description)
  - before: Direct relations of one company — statutory officers, owners, parents, subsidiaries, M&A events — without traversing the wider graph. SK M&A events: effectiveDate is the date stated by the register; when missing, derivedEffectiveDate may carry a date INFERRED from the absorbed firm's deregistration (effectiveDateSource: "derived") — present it as an estimate, never as a register fact.
  - after: Direct relations of one company — statutory officers, owners, parents, subsidiaries, M&A events — without traversing the wider graph. `shareholders` are owners only; members of the supervisory board are in `supervisoryBoard`. SK M&A events: effectiveDate is the date stated by the register; when missing, derivedEffectiveDate may carry a date INFERRED from the absorbed firm's deregistration (effectiveDateSource: "derived") — present it as an estimate, never as a register fact.
- 2026-10-13 `company_brief` changed (description)
  - before: Compact, deterministic Markdown brief of one company (≤12 KB): identity, address, industry, latest financials, credit score and recommended limit, cyber score, risk flags (insolvency, tax debt, sanctions), NIS2 status and key people where licensed. The best single call for 'tell me about company X'. Works for numeric registry IDs (6-8 digits); for other shapes use get_company_details. Every fact comes from the database — missing data is marked, never invented.
  - after: Compact, deterministic Markdown brief of one company (≤12 KB): identity, address, industry, latest financials, credit score and recommended limit, cyber score, risk flags (insolvency, tax debt, sanctions), NIS2 status and key people where licensed. The best single call for 'tell me about company X'. Accepts every registry identifier shape we carry (SK/CZ IČO, AT Firmenbuch e.g. '033209m', PL REGON, FR SIREN, …); pass `country` for anything that is not an 8-digit IČO. Every fact comes from the database — missing data is marked, never invented.
- 2026-10-09 `get_company_details` changed (description)
  - before: Full record for one company: identity, address, legal form, status flags, NACE, and the whole enrichment layer we hold (web, tech stack, NIS2, EU funds, LEI, HU de minimis state aid granted, …). Large — prefer company_brief unless you need a specific field. Natural-person fields are gated and may be withheld; a withheld field is not the same as an empty one.
  - after: Full record for one company: identity, address, legal form, status flags, NACE, and the whole enrichment layer we hold (web, tech stack, NIS2, EU funds, LEI, HU de minimis state aid granted, HU public procurement from EKR, …). Large — prefer company_brief unless you need a specific field. Natural-person fields are gated and may be withheld; a withheld field is not the same as an empty one.
- 2026-10-09 `get_company_details` changed (description)
  - before: Full record for one company: identity, address, legal form, status flags, NACE, and the whole enrichment layer we hold (web, tech stack, NIS2, EU funds, LEI, …). Large — prefer company_brief unless you need a specific field. Natural-person fields are gated and may be withheld; a withheld field is not the same as an empty one.
  - after: Full record for one company: identity, address, legal form, status flags, NACE, and the whole enrichment layer we hold (web, tech stack, NIS2, EU funds, LEI, HU de minimis state aid granted, …). Large — prefer company_brief unless you need a specific field. Natural-person fields are gated and may be withheld; a withheld field is not the same as an empty one.

Full history: https://api.protogrid.dev/v1/servers/io.github.juliusgerman%2Fentyrix-mcp/changes

## Dependencies

- npm @entyrix/mcp@0.2.1: unknown

Dependency graphs from deps.dev; advisories from OSV.dev, including the GitHub Advisory Database and the PyPI Advisory Database; all CC BY 4.0.

## Remotes

- https://entyrix.com/mcp/v1 (streamable-http, auth none, reachable true, uptime30d 0.9787234)

## Packages

- npm @entyrix/mcp@0.2.1 secrets: ENTYRIX_API_KEY

## Tools (13)

- `advanced_search`: Structured company search for portfolio building and market sizing — NOT for finding one known company (use search_companies). Filters: country, NACE prefix, status, region, turnover range (EUR), employee range, founding date range, VAT payer, tax debt, sanctions. Results are paged (limit + offset); the response says how many matched. Only the listed arguments exist — anything else is rejected, never silently ignored.
- `check_compliance`: Lightweight public compliance snapshot for one company (works without an account): sanctions screening, insolvency, debtor registers, VAT reliability. For the full KYB picture use kyb_check. A null field means WITHHELD or not measured — it does NOT mean clean.
- `company_brief`: Compact, deterministic Markdown brief of one company (≤12 KB): identity, address, industry, latest financials, credit score and recommended limit, cyber score, risk flags (insolvency, tax debt, sanctions), NIS2 status and key people where licensed. The best single call for 'tell me about company X'. Accepts every registry identifier shape we carry (SK/CZ IČO, AT Firmenbuch e.g. '033209m', PL REGON, FR SIREN, …); pass `country` for anything that is not an 8-digit IČO. Every fact comes from the database — missing data is marked, never invented.
- `find_suppliers`: Public procurement contracts this company is party to (SK CRZ + CZ Registr smluv), newest first, paged. HONEST SCOPE: this is business-to-government procurement, NOT a commercial supply chain — do not present it as one.
- `get_company_details`: Full record for one company: identity, address, legal form, status flags, NACE, and the whole enrichment layer we hold (web, tech stack, NIS2, EU funds, LEI, HU de minimis state aid granted, HU public procurement from EKR, …). Large — prefer company_brief unless you need a specific field. Natural-person fields are gated and may be withheld; a withheld field is not the same as an empty one.
- `get_company_network`: Companies connected to this one through shared officers or owners (one hop). Use for group structure and beneficial-ownership tracing. Person names are gated like everywhere else.
- `get_company_relations`: Direct relations of one company — statutory officers, owners, parents, subsidiaries, M&A events — without traversing the wider graph. `shareholders` are owners only; members of the supervisory board are in `supervisoryBoard`. SK M&A events: effectiveDate is the date stated by the register; when missing, derivedEffectiveDate may carry a date INFERRED from the absorbed firm's deregistration (effectiveDateSource: "derived") — present it as an estimate, never as a register fact.
- `get_financials`: Filed financial statements of one company, one row per fiscal year (newest first), with revenue, profit, assets, equity, liabilities and year-over-year trend. Amounts are EUR CENTS as integers (divide by 100 for euros). Use for trend and solvency questions; company_brief already carries the latest year.
- `kyb_check`: One-call Know-Your-Business summary for one company: registry status, insolvency, liquidation, sanctions screening, debarment, tax/social/health debts, VAT reliability and the overall risk verdict. Use before onboarding a customer or supplier. A null field means WITHHELD or NOT MEASURED — it does NOT mean clean; say so when you report it.
- `list_rankings`: A published ranking by its slug (e.g. largest employers, top taxpayers). Call WITHOUT a key first to list the available slugs — inventing one returns an error.
- `lookup_company`: Resolve exactly one company by its national registry identifier in a given country. Handles every identifier shape we carry (SK/CZ/EE IČO, AT Firmenbuch e.g. '187a', SI/LV registry numbers, …). Returns the core record: identity, address, legal form, status, NACE. For an LLM-ready summary prefer company_brief; for the full enrichment layer use get_company_details.
- `screen_companies`: Run kyb_check on up to 25 companies at once and get one compact row per company (status, insolvency, sanctions, debts, verdict). Use for supplier lists or portfolios. Each company counts as one API request against your rate limit. Requires an authenticated account.
- `search_companies`: Find companies by name (or name fragment) across the pan-European dataset. Returns ranked candidates with registry identifier, country, legal form and status. Use this FIRST when you only know a name; then pass the identifier + country to lookup_company or company_brief. Do not use it to filter by industry or size — that is advanced_search.
