brreg-mcp-server
Click on "Deploy 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., "@brreg-mcp-serverSøk etter foretak med navn 'Equinor'"
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.
🏛️ Brønnøysundregistrene MCP Server
MCP-server som gir AI-agenter (Claude, GPT, Cursor, etc.) direkte tilgang til norske foretaksdata fra Enhetsregisteret.
Ingen API-nøkkel nødvendig — bruker Brønnøysundregistrenes åpne API.
Verktøy
Verktøy | Beskrivelse |
| Søk etter foretak på navn, næringskode, kommune, org.form m.m. |
| Hent detaljert info om et foretak via organisasjonsnummer |
| Hent styremedlemmer, daglig leder, revisor etc. |
| Søk etter underenheter (avdelinger/filialer) |
| Hent detaljer om en spesifikk underenhet |
Related MCP server: CompanyIQ MCP Server
Installasjon
npm install
npm run buildBruk med Claude Desktop
Legg til i claude_desktop_config.json:
{
"mcpServers": {
"brreg": {
"command": "node",
"args": ["/sti/til/brreg-mcp-server/dist/index.js"]
}
}
}Bruk med Claude Code
claude mcp add brreg node /sti/til/brreg-mcp-server/dist/index.jsEksempler
Når serveren er koblet til, kan du spørre AI-en:
"Søk etter alle AS-er i Oslo med mer enn 100 ansatte"
"Hvem sitter i styret til Equinor?"
"Finn alle bedrifter registrert siste måned innen IT-konsulentvirksomhet"
"Hent info om organisasjonsnummer 923609016"
Datakilde
All data kommer fra Brønnøysundregistrenes åpne API (Enhetsregisteret). Dataene er offentlige og fritt tilgjengelige.
Lisens
MIT
Available Tools
5 toolshent_foretakA
Hent detaljert informasjon om et norsk foretak basert på organisasjonsnummer.
| Name | Required | Description | Default |
|---|---|---|---|
| organisasjonsnummer | Yes | 9-sifret organisasjonsnummer, f.eks. '923609016' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does not state what 'detailed information' includes, whether the operation is read-only, how errors are handled, or what the response format looks like. For a retrieval tool, these omissions are significant.
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?
A single, concise sentence that front-loads the action ('Hent') and resource ('detaljert informasjon om et norsk foretak'). Every word earns its place with no redundant content.
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 lookup tool, the description establishes the core purpose but lacks information about the output structure or edge cases. The absence of an output schema makes the lack of return-value explanation more noticeable, though the sibling tool names provide some context.
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 input schema already provides complete documentation for the single parameter (9-sifret organisasjonsnummer with an example). The description merely reiterates that the tool uses the organization number, adding no additional meaning beyond 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 uses a specific verb 'Hent' (fetch) and identifies the resource 'norsk foretak' (Norwegian enterprise) with the lookup basis 'organisasjonsnummer'. This clearly distinguishes it from sibling tools like 'sok_foretak' (search) by indicating direct retrieval.
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 implies usage when an organization number is available ('basert på organisasjonsnummer'), but it does not explicitly mention alternatives, exclusions, or when to prefer this over the search tool 'sok_foretak'. No direct comparison is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hent_rollerA
Hent roller (styremedlemmer, daglig leder, revisor, etc.) for et norsk foretak.
| Name | Required | Description | Default |
|---|---|---|---|
| organisasjonsnummer | Yes | 9-sifret organisasjonsnummer |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the basic action of retrieving roles without mentioning expected output format, error behavior, access requirements, or any side effects. This is minimal transparency, especially for a tool with no annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that includes useful examples of roles and the target entity type. No redundant information, and it is front-loaded with the core action.
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?
As a simple single-parameter getter with no output schema or annotations, the description sufficiently conveys the tool's purpose and usage context. However, it would benefit from a note on what the returned roles actually represent or any limitations, but these are not critical for a straightforward retrieval 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 input schema fully describes the single parameter as a '9-sifret organisasjonsnummer' (100% coverage). The description adds context by noting it applies to a 'norsk foretak', but this does not materially extend the parameter's meaning. Baseline 3 is appropriate given the schema covers the parameter well.
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 'Hent' (get) and resource 'roller' (roles) for a Norwegian enterprise, with examples of role types (board members, general manager, auditor). This clearly distinguishes it from sibling tools that handle enterprise search, enterprise details, subunit search, and subunit details.
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 implies usage when one needs roles for a specific enterprise, especially given the required 'organisasjonsnummer' parameter. However, it does not explicitly state when to use this tool instead of siblings, nor does it provide any exclusion criteria or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hent_underenhetA
Hent detaljert informasjon om en underenhet basert på organisasjonsnummer.
| Name | Required | Description | Default |
|---|---|---|---|
| organisasjonsnummer | Yes | 9-sifret organisasjonsnummer for underenheten |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It indicates a read operation ('hent') and mentions detailed information, but does not disclose error behavior, auth needs, or response format beyond 'detaljert informasjon'.
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?
Single concise sentence front-loads the verb and resource with no filler words. Every word 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?
For a simple one-param lookup, the description is adequate but leans on schema and name. Without output schema or annotations, 'detaljert informasjon' is vague about response content, leaving some room for ambiguity.
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 has 100% coverage with a clear description for the single parameter. Description adds no extra semantics beyond restating organisasjonsnummer as the lookup key, 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?
Description uses specific verb 'Hent' (get), resource 'underenhet', and specifies detailed information based on organisasjonsnummer. Clearly distinguishes from sibling tools like hent_foretak (enterprise) and sok_underenheter (search).
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?
Clear context: use when you need detailed information about a subunit and have its organisation number. No explicit exclusions or named alternatives, but the context is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sok_foretakA
Søk etter norske foretak i Enhetsregisteret. Kan filtrere på navn, næringskode, kommunenummer, organisasjonsform, og mer.
| Name | Required | Description | Default |
|---|---|---|---|
| navn | No | Navn eller del av navn på foretaket | |
| page | No | Sidenummer (starter på 0) | |
| size | No | Antall resultater (maks 100) | |
| konkurs | No | Filtrer på om foretaket er konkurs | |
| naeringskode | No | NACE-næringskode, f.eks. '62.010' for programmeringsvirksomhet | |
| kommunenummer | No | 4-sifret kommunenummer, f.eks. '0301' for Oslo | |
| fraAntallAnsatte | No | Minimum antall ansatte | |
| tilAntallAnsatte | No | Maksimum antall ansatte | |
| fraStiftelsesdato | No | Fra stiftelsesdato (YYYY-MM-DD) | |
| organisasjonsform | No | Organisasjonsformkode, f.eks. 'AS', 'ENK', 'NUF' | |
| tilStiftelsesdato | No | Til stiftelsesdato (YYYY-MM-DD) | |
| registrertIMvaregisteret | No | Filtrer på MVA-registrering | |
| fraRegistreringsdatoEnhetsregisteret | No | Fra registreringsdato (YYYY-MM-DD) | |
| tilRegistreringsdatoEnhetsregisteret | No | Til registreringsdato (YYYY-MM-DD) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only mentions search and filtering, without addressing pagination behavior, return format, authentication requirements, or read-only nature. This is minimal disclosure for a tool with 14 parameters.
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 short sentences, front-loaded with the primary action, and contains no filler words. Every word contributes to the core purpose and the structure is easy to scan.
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 14-parameter search tool with no output schema, the description is adequate but incomplete. It gives a general sense of searchability and a few example filters but omits many available filters, pagination details, and return structure. The schema compensates for parameter specifics, so this is not severely lacking, but a more complete overview would help.
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 schema already documents all 14 parameters. The description reiterates a few filter names (navn, næringskode, etc.) but adds no new meaning beyond the generic 'og mer', so it does not exceed the schema baseline.
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 'Søk' (search) and a clear resource 'norske foretak i Enhetsregisteret', clearly distinguishing it from sibling tools like hent_foretak (retrieve specific) and sok_underenheter (search sub-units). It also lists key filter dimensions, leaving no ambiguity about its function.
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 implies a search use case but does not explicitly state when to use this tool over alternatives such as sok_underenheter or hent_foretak. No exclusions or alternative tool names are mentioned, so the agent must infer usage from the name and context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sok_underenheterA
Søk etter underenheter (avdelinger, filialer) i Enhetsregisteret.
| Name | Required | Description | Default |
|---|---|---|---|
| navn | No | Navn eller del av navn | |
| page | No | Sidenummer (starter på 0) | |
| size | No | Antall resultater (maks 100) | |
| naeringskode | No | NACE-næringskode | |
| kommunenummer | No | 4-sifret kommunenummer | |
| overordnetEnhet | No | Org.nr til overordnet enhet — finn alle avdelinger til et foretak | |
| organisasjonsform | No | Organisasjonsformkode, f.eks. 'BEDR', 'AAFY' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the purpose and does not mention pagination behavior, matching semantics, return structure, or any other operational details. The schema documents pagination parameters, but the tool description itself adds no behavioral context beyond the basic search function.
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, concise sentence that efficiently communicates the tool's purpose. It is front-loaded with the verb and resource, and the parenthetical clarification is non-redundant and helpful.
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 tool has 7 parameters and no output schema, but the schema fully documents each parameter. However, the description omits behavioral details and return-value expectations, making it adequate but not rich. Given that this is a straightforward search operation, it is minimally viable but leaves some gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, with each parameter already having a clear description (e.g., 'overordnetEnhet' explains its purpose and the parenthetical 'finn alle avdelinger til et foretak' adds value). The tool description itself does not add additional semantic meaning beyond the schema, which meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Søk' - search) and the resource ('underenheter' - sub-units) within the Enhetsregisteret, with parenthetical examples ('avdelinger, filialer') that clarify the scope. This distinguishes it from sibling tools like 'hent_underenhet' (fetch a single sub-unit) and 'sok_foretak' (search main units).
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 implies the tool is for searching sub-units, which suggests the use case, but it does not explicitly state when to prefer this over alternatives like 'hent_underenhet' or provide any exclusions. The usage is inferable from the name and verb, but no direct guidance is given.
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.
5 tool updates
v1.0.0- First observed
hent_foretak - First observed
hent_roller - First observed
hent_underenhet - First observed
sok_foretak - First observed
sok_underenheter
TDQS
Scored across 5 tools
Each tool targets a distinct resource and action: search vs. retrieve for both main entities and sub-units, and roles retrieval for a specific entity. There is no overlap or ambiguity among the five tools.
All tool names follow the same Norwegian verb_noun pattern: 'sok_' for searching and 'hent_' for retrieving, with the entity type appended. This creates a predictable and coherent naming convention across the entire set.
Five tools is a well-scoped count for a business registry lookup server, covering the two core entity types (foretak and underenheter) with both search and detail retrieval, plus a roles endpoint. It feels complete without being bloated.
The tool set covers the essential read-only operations for the domain: searching and retrieving main entities and sub-units, and fetching roles. A minor gap is the lack of a direct endpoint to list all sub-units for a given parent company, but this can be worked around via the search tool by filtering on the parent's organization number.
Maintenance
Related MCP Connectors
Agent-native API for Finnish public company data via YTJ. Pay-per-call $0.01 USDC over x402.
Compliance infrastructure API connecting AI agents to Norwegian government systems (Altinn, BRREG).
Norwegian company intelligence: ownership, roles, financials, risk, KYC/AML/PEP (multi-source)
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
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables comprehensive access to the Norwegian Business Registry API for querying company information, board members, subsidiaries, organizational data, and voluntary organizations. Provides real-time access to over 1 million registered Norwegian entities with detailed corporate structure and governance data.1558MIT
- FlicenseNot gradedqualityNot gradedmaintenanceProvides comprehensive Norwegian business intelligence through Brønnøysund and Statistics Norway APIs, enabling company search, financial analysis, ownership mapping, market research, and automated financial data extraction.-
- AlicenseBqualityDmaintenanceEnables interaction with the Norwegian Business Registry (Brønnøysundregistrene) API to search and retrieve detailed information about Norwegian companies, subunits, roles, organization forms, municipalities, and NACE industry codes.1851MIT
- AlicenseNot gradedqualityDmaintenanceProvides access to Norway's official business registry for searching companies, looking up organizational details, and identifying company roles and sub-units. It utilizes data from Brønnøysundregistrene to enable detailed queries by industry, municipality, or organization number.7MIT