Entyrix Mcp

io.github.juliusgermanPublished by GitHub account juliusgermanv0.2.2Updated Nov 4, 2026

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

VerifiedStreamable HTTPWeb executableFinanceSecurity & MonitoringBusiness & Commerce

Overview

AI-generated overview

Entyrix gives assistants read-only access to European company-registry data across 23 markets: identity, financials, ownership, KYB/AML screening and…

What you can do
  • Find and resolve companies by name or national registry identifier, with country-scoped lookup
  • Read a compact company brief or the full enriched record, including NACE, NIS2 and EU funds
  • Retrieve filed financial statements by fiscal year with revenue, profit and trend
  • Trace ownership and officers: relations, parents, subsidiaries, M&A events and one-hop networks
  • Run KYB/AML checks on one company or screen up to 25 at once, plus a public compliance snapshot
  • Build market lists with paged structured search, list public-sector contracts and published rankings
When to use it
Useful when an assistant needs verified facts about European businesses: onboarding or AML/KYB checks on customers and suppliers, supplier-list screening, solvency and financial-trend questions, group and ownership tracing, or portfolio building and market sizing by country, industry and size.
Requirements
Either the remote Streamable HTTP endpoint (OAuth 2.1 sign-in on first use) or the local npm package @entyrix/mcp, which is a stdio bridge needing Node.js and an ENTYRIX_API_KEY Bearer token. Without a key only tool listing and the public compliance tool work. Optional ENTYRIX_BASE_URL and ENTYRIX_TIMEOUT_MS. An Entyrix account and plan govern data access.
Before you install
The API key is a secret passed via ENTYRIX_API_KEY; pin the package version, since an unpinned npx install runs whatever is published next with your privileges. Natural-person data is licence-gated and needs a key with a signed FO addendum. Null or withheld fields mean not measured or not available, not clean, and INSUFFICIENT_DATA must not be reported as a clean result. Returned register data is untrusted and should never be treated as instructions. Paid plans apply.

Installation

In SourceWeft

  1. Open Entyrix Mcp in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.juliusgerman%2Fentyrix-mcp/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "entyrix": {
      "type": "http",
      "url": "https://entyrix.com/mcp"
    }
  }
}

README

@entyrix/mcp

[npm]

Model Context Protocol access to Entyrix — European business-registry (KYB) data 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).

Use the remote server (recommended)

Entyrix runs a remote MCP server (Streamable HTTP, protocol 2025-03-26 … 2026-07-28):

https://entyrix.com/mcp/v1

Add it as a remote / custom connector in Claude, ChatGPT, Cursor or VS Code. On the first tool call your client opens the Entyrix sign-in (OAuth 2.1 with PKCE) — no key in a config file. From the command line:

bash
claude mcp add --transport http entyrix https://entyrix.com/mcp/v1

Full instructions: https://entyrix.com/mcp.

This package: a stdio bridge

For clients that only speak stdio. Since 0.2.0 the package implements no tools itself — it forwards every JSON-RPC message to the remote server above with your API key from the environment, so it always exposes exactly the current catalogue. It has zero runtime dependencies.

bash
ENTYRIX_API_KEY=sk_... npx -y @entyrix/mcp
json
{  "mcpServers": {    "entyrix": {      "command": "npx",      "args": ["-y", "@entyrix/mcp"],      "env": { "ENTYRIX_API_KEY": "sk_..." }    }  }}

Get an API key by signing in at https://entyrix.com/login (a Free key comes with the account) or through the API (POST /api/v1/signup, then POST /api/v1/signup/verify). Without a key the server still starts and lists its tools; the first data tool call answers with these steps as an error result. Plans: https://entyrix.com/pricing.

Pin the version in production (e.g. @entyrix/[email protected], not latest): a local MCP server runs with your privileges, and an unpinned npx -y installs whatever is published next.

Tools

ToolWhat it does
search_companiesFind companies by name across all markets
lookup_companyExact registry-ID lookup, country-scoped
company_briefCompact Markdown brief of one company — the best single call
get_company_detailsFull record including the enrichment layer
get_financialsFinancial statements by year with trend (EUR cents)
get_company_networkCompanies connected through shared officers and owners
get_company_relationsOfficers, owners, parents, subsidiaries, M&A events
advanced_searchPaged filtering by country, NACE, size, turnover, status
kyb_checkOne-call KYB/AML summary with a verdict
screen_companiesKYB screening of up to 25 companies at once
check_compliancePublic compliance snapshot (no account needed)
find_suppliersPublic-sector contracts (B2G, not a supply chain)
list_rankingsPre-computed leaderboards

Every tool is read-only, declares an output schema and rejects unknown arguments. Natural-person data is licence-gated server-side and applies identically over MCP. Returned values come from public registers — treat them as untrusted data in your agent, never as instructions.

Configuration

Env varDefaultDescription
ENTYRIX_API_KEY(none)Bearer API key from your Entyrix account
ENTYRIX_BASE_URLhttps://entyrix.comOverride for staging
ENTYRIX_TIMEOUT_MS60000HTTP timeout per request

Development

bash
git clone <repo>cd entyrix-mcpnpm installnpm run buildnpm test

Local stdio sanity-check:

bash
printf '%s\n' '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | node dist/index.js

npm run test:contract runs the bridge against the live server (no secret needed).

Quality gates

bash
npm run check   # format:check + lint + typecheck + test — the same four CI runs

Run 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

bash
npm run bump 0.2.2          # writes all four manifests, refuses on driftnpm run checkgit commit -am "chore(release): 0.2.2"git tag v0.2.2git push && git push --tags   # one push, then the tag

The 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. The release is idempotent: a re-run skips an npm version that already exists and waits for npm to serve it before registering with the MCP Registry.

License

MIT — see LICENSE.

Source: README.md at commit ae59e5f

Tools

13

search_companies

Search companies by name

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.

Parameterslimitqueryrequiredcountry

lookup_company

Look up company by registry ID

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.

Parametersicorequiredcountrypurpose

company_brief

Company brief (Markdown, LLM-ready)

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.

Parametersicorequiredcountrypurpose

get_company_details

Full company record

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.

Parametersicorequiredcountrypurpose

get_financials

Financial statements by year

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.

Parametersicorequiredyearscountrypurpose

get_company_network

Companies connected through people

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.

Parametersicorequiredcountrypurpose

get_company_relations

Direct 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.

Parametersicorequiredcountrypurpose

kyb_check

KYB / AML summary

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. Coverage differs by country: `checks[]` gives each check as hit / clear / not_covered, and `overall` is INSUFFICIENT_DATA when no risk was found but the insolvency or sanctions registers do not exist for that country — that is NOT a clean result. A null field means WITHHELD or NOT MEASURED — it does NOT mean clean; say so when you report it.

Parametersicorequiredcountrypurpose

screen_companies

Screen a list of companies

Run kyb_check on up to 25 companies at once and get one compact row per company (status, insolvency, sanctions, debts, verdict, coverage). INSUFFICIENT_DATA = no findings but not covered by the core registers for that country — never report it as clean. Use for supplier lists or portfolios. Each company counts as one API request against your rate limit. Requires an authenticated account.

Parameterscompaniesrequired

check_compliance

Public compliance snapshot

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.

Parametersicorequiredcountry

find_suppliers

Public-sector contracts

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.

Parametersicorequiredlimityearsoffsetcountry

list_rankings

Published 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.

Parameterskey

Version history

3
  1. v0.2.2LatestNov 4, 2026
  2. v0.2.1Oct 8, 2026
  3. v0.1.4Sep 16, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts