registry-mcp — national company registries
PYPI · REGISTRY-MCP · 3 COMPONENTS · SCANNED SEP 21
The company registry MCP: brreg orgnr, Companies House, Bolagsverket organisationsnummer.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security50
- Malware scan not yet available for this package.Unverified
- No known CVEs affecting this package version or its production dependencies.Pass
- Runs hatchling.build at install time, a recognised native-build step with no shell scripting around it. View diagnostics → Pass
- 1 of 29 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency48
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 10 days ago).Pass
- Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability75
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 4301 tokens (~430/item across 10 items; 7 tools + 3 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management53
- Stability observed for 16 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 7 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 9 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
How do I install the registry-mcp — national company registries server?
registry-mcp — national company registries runs locally as a PyPI package, launched with uvx registry-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
pypi · registry-mcp
claude mcp add foretak-registry-mcp -- uvx registry-mcp
{
"mcpServers": {
"foretak-registry-mcp": {
"command": "uvx",
"args": [
"registry-mcp"
]
}
}
} {
"servers": {
"foretak-registry-mcp": {
"command": "uvx",
"args": [
"registry-mcp"
]
}
}
} codex mcp add foretak-registry-mcp -- uvx registry-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"foretak-registry-mcp": {
"type": "local",
"command": [
"uvx",
"registry-mcp"
],
"enabled": true
}
}
} openclaw mcp add foretak-registry-mcp --command uvx --arg registry-mcp
mcp_servers:
foretak-registry-mcp:
command: "uvx"
args: ["registry-mcp"] {
"McpServers": {
"foretak-registry-mcp": {
"Transport": "stdio",
"Command": "uvx",
"Arguments": [
"registry-mcp"
]
}
}
} assistant mcp add foretak-registry-mcp -t stdio -c uvx -a registry-mcp
{
"mcpServers": {
"foretak-registry-mcp": {
"command": "uvx",
"args": [
"registry-mcp"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 20 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 50 to 53. That category is still filling its 30-day observation window: 15 days of observed history at the previous scan, 16 at this one. The score rises as the window fills, whether or not the server changes.
- 18 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 43 to 47. That category is still filling its 30-day observation window: 13 days of observed history at the previous scan, 14 at this one. The score rises as the window fills, whether or not the server changes.
- 17 Sept 26 −15
- Malware scan: pass → unverified ▼ security
- 16 Sept 26 +16
- Malware scan: unverified → pass ▲ security
- 14 Sept 26 −14
- Malware scan: pass → unverified ▼ security
- 12 Sept 26 +16
- Malware scan: unverified → pass ▲ security
- 10 Sept 26 −14
- Malware scan: pass → unverified ▼ security
- Package version: 0.4.1 → 0.4.2 functional
- 9 Sept 26 0
- Tool safety: pass → unverified ▼ security
- Stability: 0.13 → unverified ▼ security
- Malware scan: pass → unverified ▼ security
- Schema quality: 394 → 597 ▼ functional
- Capabilities: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- Schema quality: 100 → unverified ▼ functional
- Package version: 0.3.0 → 0.4.1 functional
- Package version: 0.3.0 → 0.4.0 functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 20 Sept 2026 · Analysed pypi/registry-mcp@0.4.2
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | pypi |
Background: How many MCP packages publish verified provenance →
Install scripts 1 script
| Hook | Tier | Command |
|---|---|---|
| build_backend | allowlisted | hatchling.build |
Background: Why install scripts are a supply-chain risk →
Dependencies 29 packages
| Packages resolved | 29 |
|---|---|
| Stale | 1 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
company_deadlines Statutory filing deadlines for a company ~849
Give the next occurrence of each statutory filing deadline a company faces. `country="NO"` covers the Norwegian calendar (Regnskapsregisteret, Skatteetaten) for a company looked up by organisasjonsnummer (orgnr, org.nr) in Brønnøysundregistrene / Enhetsregisteret (brreg): årsregnskap, generalforsamling, skattemelding, aksjonærregisteroppgaven, mva-melding, a-melding. `country="GB"` covers the two Companies House obligations for a company number (CRN): the annual accounts filing and the confirmation statement (CS01). `country="SE"` covers the two Swedish obligations of an aktiebolag (AB) or ekonomisk förening (EK) looked up by organisationsnummer at Bolagsverket: the ordinary general meeting (ordinarie bolagsstämma / årsstämma) at six months from the financial year end, and the annual report (årsredovisning) at seven, where the late-filing fee (förseningsavgift) begins. Pass `today` (`YYYY-MM-DD`) for a reproducible answer; it defaults to the server's current UTC date. Quote `due_date`, not `statutory_date`, and quote each deadline's `applies_because` rather than presenting a date as unconditional fact — that sentence carries the legal form or flag the date rests on, its statute, any assumption still in it, and for the UK whether it is Companies House's own figure or one computed here. `days_until` goes negative for a filing Companies House still shows as overdue. Swedish dates assume a financial year ending 31 December unless you pass `include=["filings"]`, which substitutes the year end of the last filed annual report where Bolagsverket's document list holds one; the filing date is an outer limit regardless, since a company whose general meeting was earlier must file earlier. An empty `deadlines` list is a real answer — a bankrupt, deleted or compulsorily-liquidated entity, a branch/sub-unit, or any company whose status is not active — and `notes` explains why. `registry://rules/{country}` carries each country's full deadline rules, roll-forward treatment and le…
| Name | Type | Req | Description |
|---|---|---|---|
| country | string | – | ISO-3166-1 alpha-2 — NO Norway, GB United Kingdom, SE Sweden. UK is not a country code here and is rejected. Call list_countries for the live set. |
| id | string | yes | The company's national identifier, normalised for you — a Norwegian organisasjonsnummer (orgnr), a Companies House company number (CRN), or a Swedish organisationsnummer or personnummer. Spaces, dots… |
| include | array | – | Attachment names that can change a *computed* deadline — narrower than lookup_company's include. Today only 'filings': one extra upstream request for the entity's filing history, supplying a real fin… |
| today | – | – | Date to compute deadlines from, YYYY-MM-DD; defaults to the server's current UTC date. Anything else is a bad_request naming the format. |
| Name | Type | Req | Description |
|---|---|---|---|
| company_id | string | yes | Canonical national identifier the deadlines were computed for. |
| company_name | – | – | Registered name, so the caller can echo it back to a user. |
| country | string | yes | ISO-3166-1 alpha-2, upper-case. |
| deadlines | array | – | One entry per obligation kind, always the next occurrence, sorted by due_date. An empty list is a real answer, not an error — read `notes` for why. |
| notes | array | – | Caveats to surface to the user, carried over from the company report: why the list is empty, an unclassified legal form, a status that suspends filing. |
| registry | string | yes | Registry slug, e.g. 'brreg'. |
| rules_last_reviewed | string | yes | The date this country's deadline rules — the statutes and their day-count arithmetic — were last checked against the law; a deadline computed long after this date should be re-verified before anyone… |
| today | string | yes | The date 'next occurrence' was computed from, inclusive. Echoed back so the answer is reproducible and an agent can tell a cached answer from a fresh one. |
No examples provided.
fetch Fetch one company record (ChatGPT connector alias for lookup_company) ~130
ChatGPT connector alias; other clients should prefer `lookup_company` plus `company_deadlines`, which return the CompanyReport and DeadlineReport shapes directly. Takes one `id` from `search` — "{COUNTRY}:{identifier}", e.g. "NO:923609016" — and returns that company's register record and statutory filing deadlines as readable text, both full JSON documents in `metadata`.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | An `id` from a `search` result: '{COUNTRY}:{identifier}', e.g. 'NO:923609016' or 'GB:00445790'. |
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | – |
| metadata | object | – | – |
| text | string | yes | – |
| title | string | yes | – |
| url | string | yes | – |
No examples provided.
list_countries List supported national company registries ~135
List every national company registry this service can answer for right now, with each one's identifier scheme, source URL, licence, `supported_includes`, and whether the upstream register needs a credential (`requires_api_key`, `api_key_env`). Call it before your first lookup in a country you have not used here, whenever a user names a country you are unsure of, or before guessing an `include` value — never hard-code a country list of your own, since it grows as modules are added. Stub modules are hidden; only registries that actually answer are listed. No error mode.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| countries | array | – | One row per registry that can answer right now, sorted by country code. |
No examples provided.
lookup_company Look up a company in a national business register ~1,264
Look up a company by its national identifier and get the full CompanyReport — legal form, status, address, VAT registration where the register publishes it, board and accounts duties, employees, and more. `country="NO"` is the norway company lookup for the norwegian business registry: Brønnøysundregistrene / Enhetsregisteret (brreg), by organisasjonsnummer (orgnr, org.nr). `country="GB"` is the uk company lookup at Companies House, by company number (company registration number, CRN) — "UK" is not a country code here. `country="SE"` is the swedish company lookup at Bolagsverket, by organisationsnummer or a sole trader's (enskild näringsidkare) personnummer, and by identifier only, since Bolagsverket's free API has no name search. `include=[...]` attaches seven second fetches, each with its own provenance and `null` unless you ask: `filings` (filing history — do they file, and on time), `charges` (registered mortgages and security interests), `insolvency` (winding-up and administration), `financials` (annual accounts — turnover, operating result, profit, balance sheet: the solvency question), `lei` (the GLEIF Legal Entity Identifier), `parents` (direct and ultimate parent — this entity's group — from GLEIF) and `peppol` (whether an e-invoice would reach them, ahead of Norway's 1 January 2027 EHF duty). The `include` argument explains each: what it returns, which countries declare it, how to read its nulls. Use it once you have the identifier — from the user, an invoice, a contract, or a `search_company` hit's `id`. Read the returned `notes` before acting: it carries caveats such as bankruptcy, dissolution, a deleted entity, an unclassified legal form, or an attachment whose own fetch failed. This tool does not perform sanctions, PEP or adverse-media screening, and it does not verify bank account details — it returns identity and filing data from the national register only, never a compliance clearance or a confirmed payment detail. Errors are the `{"error": {"c…
| Name | Type | Req | Description |
|---|---|---|---|
| country | string | – | ISO-3166-1 alpha-2 — NO Norway, GB United Kingdom, SE Sweden. UK is not a country code here and is rejected. Call list_countries for the live set. |
| id | string | yes | The company's national identifier, normalised for you — a Norwegian organisasjonsnummer (orgnr), a Companies House company number (CRN), or a Swedish organisationsnummer or personnummer. Spaces, dots… |
| include | array | – | Attachment names to fetch alongside the base report; empty by default, which costs exactly one upstream request. Each is a second, independent fetch attached at that name with its own provenance, nul… |
| Name | Type | Req | Description |
|---|---|---|---|
| activity | – | – | Free-text description of actual activity. |
| advertising_protected | – | – | Whether the register marks this entity as protected against direct-marketing use (Danish CVR-loven § 19 'reklamebeskyttelse', Swedish 'reklamspärr'). True: the register marks it. False: the register… |
| bankruptcy_date | – | – | Date bankruptcy was opened. |
| business_address | – | – | Visiting/registered office. |
| business_register_registered_at | – | – | Date entered in the commercial/business register, where that is separate. |
| cached | boolean | – | True when served from our cache rather than a live fetch. |
| charges | – | – | Registered charges (mortgages / security interests) against this entity. `None` unless `charges` was passed in `include=[...]` — and, even then, `None` if that fetch failed (see `notes` for which att… |
| confidence | number | – | How sure we are this record is the entity the caller meant (D-005). |
| confidence_basis | – | – | Why that confidence, e.g. 'exact identifier lookup'. |
| country | string | yes | ISO-3166-1 alpha-2, upper-case, e.g. 'NO'. |
| deregistered_at | – | – | Date the entity was deleted from the register. |
| – | – | Contact email as registered. | |
| employees | – | – | Registered number of employees. None = not reported. |
| employees_reported | – | – | Whether the registry holds an employee figure at all (distinguishes 0 from unknown). |
| euid | – | – | European Unique Identifier (EUID, Commission Implementing Regulation (EU) 2021/1042 Article 9), where the register publishes one, e.g. Finland's 'FIFPRO.0112038-9'. None for a register that does not… |
| fetched_at | – | – | UTC timestamp of the live fetch this record came from. |
| filings | – | – | What this entity has filed with its register, and when. `None` unless `filings` was passed in `include=[...]` — and, even then, `None` if that fetch failed (see `notes` for which attachment and why).… |
| financials | – | – | Key figures from this entity's filed annual accounts. `None` unless `financials` was passed in `include=[...]` — and, even then, `None` if that fetch failed (see `notes` for which attachment and why)… |
| founded_at | – | – | Incorporation / foundation date. |
| has_annual_accounts_duty | – | – | True when this legal form must file annual accounts with the state. |
| has_board_duty | – | – | True when this legal form must have a registered board. |
| id | string | yes | Canonical national identifier, digits/letters only, no spaces or dots. |
| id_formatted | – | – | The identifier as a local would write it, e.g. '923 609 016'. |
| id_scheme | – | – | Name of the identifier scheme, e.g. 'organisasjonsnummer'. |
| in_business_register | – | – | Listed in the commercial register (Norway: Foretaksregisteret). |
| in_group | – | – | Part of a corporate group. |
| industry_codes | array | – | Industry classifications, primary first. |
| insolvency | – | – | Insolvency proceedings the register publishes against this entity. `None` unless `insolvency` was passed in `include=[...]`, or that fetch failed. A *present* block with `cases: []` means the registe… |
| is_active | boolean | – | Convenience mirror of `status == active`, so agents need no enum table. |
| is_subunit | boolean | – | True when this record is a branch/sub-unit, not a legal entity. |
| last_annual_accounts_year | – | – | Most recent financial year for which accounts were filed. |
| legal_form | – | – | English label, e.g. 'Private limited company'. |
| legal_form_code | – | – | National legal-form code, e.g. 'AS', 'ASA', 'ENK'. |
| legal_form_local | – | – | Local label, e.g. 'Aksjeselskap'. |
| lei | – | – | This entity's Legal Entity Identifier record, from GLEIF — not a national register (D-026(c), D-045(e)). `None` unless `lei` was passed in `include=[...]` — and, even then, `None` if that fetch faile… |
| license | – | – | Licence of the upstream data, e.g. 'NLOD 2.0'. |
| limited_liability | – | – | True when owners are not personally liable for debts. |
| name | string | yes | Current registered name. |
| notes | array | – | Caveats an agent should surface to the user, plain English, one per item. |
| parent_id | – | – | Identifier of the parent/owning entity, if any. |
| parents | – | – | Corporate parents from GLEIF Level 2 — accounting consolidation, not shareholding (see `ParentBlock`'s own docstring). `None` unless `parents` was passed in `include=[...]` — and, even then, `None` i… |
| peppol | – | – | Whether this entity can be reached over the Peppol e-invoicing network. `None` unless `peppol` was passed in `include=[...]` — and, even then, `None` only if the attachment could not be built at all… |
| phone | – | – | Contact phone as registered. |
| postal_address | – | – | Postal address. |
| previous_names | array | – | Former registered names, newest first. |
| published_deadlines | array | – | Filing dates the upstream register publishes for this entity itself, carried verbatim. Empty for a register that publishes none — most of them. This is the input `Registry.deadlines(report, today)` n… |
| purpose | – | – | Statutory purpose / objects clause, joined into one string. |
| registered_at | – | – | Date first entered in the central register. |
| registers | object | – | Other national sub-registers this entity is or is not in, keyed by a lower-case slug, e.g. {'stiftelsesregisteret': false}. |
| registry | string | yes | Registry slug, e.g. 'brreg'. |
| sector | – | – | Institutional sector description. |
| sector_code | – | – | Institutional sector code. |
| share_capital | – | – | Registered share capital. |
| share_capital_currency | – | – | ISO-4217 code for `share_capital`. |
| source | – | – | Human-readable source name, e.g. 'Enhetsregisteret (brreg.no)'. |
| source_url | – | – | Direct URL of the upstream record, for citation. |
| status | string | – | Normalised lifecycle status. |
| status_detail | – | – | One sentence in English explaining the status and the flag it came from. |
| vat_number | – | – | VAT identifier if it differs from `id` (Norway: id + 'MVA'). |
| vat_registered | – | – | Registered for VAT (Norway: Merverdiavgiftsregisteret). |
| vat_registered_at | – | – | Date of VAT registration. |
| website | – | – | Website as registered. |
No examples provided.
search Find a company (ChatGPT connector alias for search_company) ~108
ChatGPT connector alias; other clients should prefer `search_company`, which takes an explicit `country` and returns the full SearchResult. One free-text query — a name, an identifier, or either plus a country — across Norway, the United Kingdom and Sweden. Returns {"results": [{"id", "title", "url"}]}; pass a result's `id` to `fetch`.
| Name | Type | Req | Description |
|---|---|---|---|
| query | string | yes | A company name, a national identifier, or either plus a country. |
| Name | Type | Req | Description |
|---|---|---|---|
| results | array | – | – |
No examples provided.
search_company Search a national company register by name ~546
Search a national company register by name, when you have a name rather than an identifier. `country="NO"` searches Brønnøysundregistrene / Enhetsregisteret (brreg) — the norway company lookup for the norwegian business registry when the organisasjonsnummer (orgnr, org.nr) is not yet known; `country="GB"` is the uk company search at Companies House, returning each hit's company number (company registration number, CRN). **Sweden cannot be searched by name.** Bolagsverket's free API has four operations and none takes a company name, so `country="SE"` raises `not_implemented` — a fact about the register, not a temporary gap, and it will not start working. Sweden supports lookup by identifier only: call `lookup_company` with the ten-digit organisationsnummer (or a sole trader's twelve-digit personnummer), or `validate_company_id` first to check the shape for free. Bolagsverket publishes the whole register as bulk downloadable files for callers who must search by name. Then call `lookup_company` with the `id` of the right hit for the full report — a search hit is deliberately thin (name, legal form, status, city) and must not be acted on directly. Hits arrive in the register's own relevance order, so read each hit's `confidence` rather than assuming the first row is best. Zero hits is not an error, and `hint` says what to try next — Norwegian names are registered upper-case and often carry an 'AS', 'ASA' or 'NUF' suffix, UK names a 'LIMITED', 'LTD', 'PLC' or 'LLP' one, worth dropping before concluding a company does not exist. Errors are the `{"error": {"code", "message", "hint"}}` envelope this server's instructions set out code by code; `hint` names the next call. Call `list_countries` if you are unsure a country is supported.
| Name | Type | Req | Description |
|---|---|---|---|
| country | string | – | ISO-3166-1 alpha-2 — NO Norway, GB United Kingdom, SE Sweden. UK is not a country code here and is rejected. Call list_countries for the live set. |
| limit | integer | – | Maximum hits to return, 1-100; default 10. Outside that range is a bad_request, not a silent clamp. |
| name | string | yes | Company name to search for, free text — not an identifier. Use lookup_company once you have the id of the right hit. |
| Name | Type | Req | Description |
|---|---|---|---|
| cached | boolean | – | Served from cache. |
| country | string | yes | ISO-3166-1 alpha-2, upper-case. |
| fetched_at | – | – | UTC timestamp of the fetch. |
| hint | – | – | What to do next, e.g. 'call lookup_company with the id of the right hit'. |
| hits | array | – | Best matches, best first: always sorted by `confidence` descending. Hits that score equally keep the order the upstream register returned them in. |
| query | string | yes | The name that was searched for. |
| registry | string | yes | Registry slug. |
| total | integer | – | Total matches upstream, which may exceed len(hits). |
| truncated | boolean | – | True when `total` exceeds the returned hits. |
No examples provided.
validate_company_id Validate a company identifier (no network call) ~547
Check whether a national company identifier is well-formed — no network call. `country="NO"` checksum-checks a Norwegian organisasjonsnummer (orgnr, org.nr) for Brønnøysundregistrene / Enhetsregisteret (brreg) — the cheap norway company lookup pre-check for the norwegian business registry. `country="GB"` shape-checks and normalises a UK company number (company registration number, CRN) for Companies House ('445790' → '00445790', 'oc303675' → 'OC303675'); a CRN has no check digit, so a GB `valid: true` means the shape is right and nothing more. `country="SE"` shape-checks and normalises a Swedish organisationsnummer for Bolagsverket ('556016-0680' and 'SE556016068001' both become '5560160680') and accepts a sole trader's twelve-digit personnummer; Sweden's check digit is **not** enforced here (`registry://rules/SE` says why), so an `SE` `valid: true` means the shape is right, `reason` may carry a caveat, and the register's own verdict arrives on the lookup. It is the cheapest way to tell a ten-digit Swedish organisationsnummer from a nine-digit Norwegian organisasjonsnummer. Use it on user input or a spreadsheet column before spending a real `lookup_company` call, since it is instant and free. Returns a ValidationResult and never raises for a malformed identifier: `valid: false` comes with `reason` and `hint` rather than a tool error — this tool answers a question, it does not fail on bad input (D-010). A valid identifier does not mean the entity exists; follow it with `lookup_company` if you need facts. The only error it raises is `unsupported_country`, in the usual `{"error": {"code", "message", "hint"}}` envelope — call `list_countries`.
| Name | Type | Req | Description |
|---|---|---|---|
| country | string | – | ISO-3166-1 alpha-2 — NO Norway, GB United Kingdom, SE Sweden. UK is not a country code here and is rejected. Call list_countries for the live set. |
| id | string | yes | The company's national identifier, normalised for you — a Norwegian organisasjonsnummer (orgnr), a Companies House company number (CRN), or a Swedish organisationsnummer or personnummer. Spaces, dots… |
| Name | Type | Req | Description |
|---|---|---|---|
| country | string | yes | ISO-3166-1 alpha-2, upper-case. |
| formatted | – | – | The identifier as a local would write it, e.g. '923 609 016'. None when invalid. |
| hint | – | – | What to do next when `valid` is false — the same hint the invalid_id error carries. None when valid: the next call is simply lookup. |
| id_scheme | – | – | Name of the identifier scheme, e.g. 'organisasjonsnummer'. |
| input | string | yes | The identifier exactly as the caller supplied it. |
| normalized | – | – | Canonical form to pass to lookup, e.g. '923609016'. None when invalid. |
| reason | – | – | One English sentence saying why it is valid, or what failed. |
| registry | string | yes | Registry slug, e.g. 'brreg'. |
| valid | boolean | yes | True when the identifier passes this country's format and checksum. |
No examples provided.
What is the registry-mcp — national company registries server?
registry-mcp — national company registries is listed in the public MCP registry as io.github.foretak/registry-mcp. The company registry MCP: brreg orgnr, Companies House, Bolagsverket organisationsnummer. This page covers its PyPI package (registry-mcp).
Is the registry-mcp — national company registries server safe to use?
registry-mcp — national company registries scores 64 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the registry-mcp — national company registries server expose?
registry-mcp — national company registries exposes 7 tools: lookup_company, search_company, company_deadlines, validate_company_id, list_countries, and 2 more. Their descriptions and schemas cost roughly 3,579 tokens of context every time the server is loaded.
Is the registry-mcp — national company registries server still maintained?
registry-mcp — national company registries is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the registry-mcp — national company registries server under?
registry-mcp — national company registries declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.