Brreg
pro.publifyePublished by publifye.prov1.0.0Updated Oct 24, 2026
Norway's company register (Enhetsregisteret) for AI: lookup, search, name resolution, key financials
Overview
Hosted MCP server giving an assistant structured access to Norway's company register: lookup by organisation number, name resolution, filtered search, location,
- What you can do
- Look up an organisation by organisasjonsnummer with checksum validation, or resolve a name into ranked candidates marked unique, ambiguous or unresolved, with optional financials, filings, address point, parcel and buildings fields. Search the register with AND-combined filters such as legal form, municipality, NACE code, sector, employee range and registration dates, plus regular-expression terms over name, address, email, phone or website. Find organisations registered within a radius of a point or of another company, and measure straight-line distances between up to 50 places. Retrieve key financial figures, filed years and an industry benchmark from Statistics Norway, and request a filed
- When to use it
- Useful when an assistant needs to answer questions about Norwegian organisations: identifying a company from a number or name, screening companies by industry, size or location, checking who is registered nearby, or pulling key figures and filing history. It is a read-only reference source, not a substitute for the official register.
- Requirements
- Remote Streamable HTTP endpoint; no local install. Requires a Publifye account and a paid Brreg plan (Personal, Business or Self-hosted), with OAuth 2.1 plus PKCE sign-in in the browser on first use; no API keys. Network access to the hosted service is needed.
Installation
In SourceWeft
- Open Brreg in the dashboard and add it to a workspace.
- Connect the required credentials. They are stored privately and never shown on public pages.
- 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/pro.publifye%2Fbrreg/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.Other MCP clients
Add this to your client's mcpServers config. The client completes OAuth sign-in on first connect.
{
"mcpServers": {
"brreg": {
"type": "http",
"url": "https://brreg.publifye.com/mcp"
}
}
}README
Brreg — Norwegian company register MCP server for Claude, Cursor and any MCP client
Brreg gives an AI assistant Brønnøysundregistrene's Enhetsregisteret as structured data: look an organisation up by organisasjonsnummer, turn a name into candidates without a silent pick, search with filters, regular expressions or a point and a radius, find who is registered near a place and how far apart two are, and see how organisations belong together — with key financials from Regnskapsregisteret, and an industry benchmark from Statistics Norway, when you ask for them. It runs as a hosted MCP server over HTTPS.
Connect
Claude Code: claude mcp add --transport http brreg https://brreg.publifye.com/mcp, then /mcp to
sign in.
The OAuth flow runs in the browser on first use, with a Publifye account. Access is granted through that sign-in only; there is no API key to create, copy or rotate. The discovery chain is the same as for the other servers: ../../docs/connect.md.
The register
The edition the live service was serving on 2026-09-29, acquired that morning from Brønnøysundregistrene's bulk files:
The register is rebuilt from the full files every week. An entry Brønnøysundregistrene removes from
open data is dropped within 24 hours. snapshot_status returns the age and counts of whichever
edition is current, and every successful result names the edition it came from.
A number is exact; a name is not
entity_lookup takes an organisasjonsnummer, checks its checksum, and is never fuzzy.
entity_resolve takes a name and returns candidates, with resolution set to unique,
ambiguous or unresolved and the order of the candidates stated. It never claims the first
candidate is the organisation. Norwegian spellings are compared through one documented key — æ, ø
and å folded, legal forms such as AS and ASA stripped, former names matched — so the comparison can
be checked rather than trusted.
No language model is involved in answering a call. Every successful result carries the licence attribution and names the edition it came from, so an answer can be traced back to its source.
What the tools do
Every tool is documented with its exact description, annotations and input schema —
9 in all, generated from the service's own tools/list, never written by hand.
Machine-readable: tools.json carries all 9 callable tools (9 capability, 0 session/cache) with full JSON Schema, plus every excluded bucket listed by name so the count is auditable.
All nine are read-only. Two are marked open-world: entity_lookup, which with live=true checks
the entry against data.brreg.no, and entity_financials, which goes to Regnskapsregisteret for
figures the service does not yet hold.
Four ways to narrow a search
entity_search takes at least one of query, address, website, match or a filter, and
everything you give is AND'ed together.
Filters. kind, org_form, municipality, postcode, city, nace, sector, status,
public_body, vat_registered, parent_orgnr, employees_min/max, registered_from/to. The
values come from code_list, so a filter is a code you looked up, not a guess.
Regular expressions. match takes 1 to 4 {field, pattern} terms over activity, address,
city, email, name, phone or website. A pattern is RE2, at most 200 bytes, matched
case-insensitively against the normalised field value — NFC, lower-cased, whitespace-collapsed and
truncated to 256 bytes, so a pattern anchored deep into a long activity text may find nothing — and
you anchor it yourself: ^post matches at the start, an unanchored pattern matches anywhere,
and . tests that the field is present at all. One pattern per field; an invalid, over-long,
over-complex or empty-string-matching pattern rejects the whole call with invalid_filter before
any work is done. snapshot_status lists the fields the installed edition can match, in
match_fields.
A point and a radius. lat, lon and radius_km — all three or none — list the organisations
whose registered address falls inside the circle, nearest first, each with distance_km and the
address point it was measured from. Give a name query as well and the order stays relevance, with
the radius acting as a filter. The radius is at most 10 km on its own, or 50 km together with
another filter, and the centre must fall within latitude 57.5 to 81.5 and longitude 4 to 32.
The point is the Kartverket address point of the registered address — the business address for a main unit, the location address for a sub-unit. It is not a building footprint and not necessarily where the work is done. Sharing a point is the norm rather than the exception — an accountant's office, a shared business park — so each result says how many records share its point. Addresses given as c/o, post boxes, foreign addresses and addresses that do not match the address register get no point and never appear in a radius search.
Cursor. Paging has no depth limit: follow the cursor to the end of the result set. offset is a
first-call convenience only, capped at 10,000.
Near a place, and how far
entity_nearby lists the organisations registered within a radius of a point, nearest first. The
centre is either lat and lon or an orgnr — that organisation's own registered address, so
"who is near this company" is one call; the anchor itself is left out of its results. The same caps
apply as for a radius search: 10 km on its own, 50 km with another filter.
entity_distance measures from one place to up to 50 others and answers nearest first. A place is
an orgnr or a lat/lon pair. The number is the straight-line distance between two
registered address points — not a driving or walking distance and not a travel time; across a fjord
the road can be many times longer. A place with no usable point is still answered, with
located: false and the reason, never silently dropped.
Money: entity_financials
entity_financials is the tool for figures. include chooses key_figures (the default),
filings — the years actually filed, which also answers for banks and insurers, whose key figures
Regnskapsregisteret does not serve — and sector_benchmark, which sets the figures against
Statistics Norway's statistics for the industry and size band. The benchmark is per industry, never
per company, and names the level that answered. Figures are fetched from Regnskapsregisteret only
when this tool asks, then stored; a year already held is not fetched again. document_year hands
over that year's filed accounts as an expiring link (see below).
What a lookup can add
entity_lookup returns the register entry. Ask for more in fields — financials and filings
are still accepted here, fetched only when asked for, though entity_financials is the front door
for them:
document_year returns that year's filed annual accounts as an expiring private link — a
scanned image with no text layer, not structured figures, and not a second route to them. The
filing itself never travels in an MCP response: what comes back is a link, a size, a checksum and
an expiry.
unit and buildings describe the parcel and the buildings at the registered address. They are
not a statement about property the organisation owns or occupies, and there is no owner data
anywhere in the service.
What it does not do
- No roles or persons — no board members, managing directors or owners.
- Not the authoritative register. Brreg is operated by Publifye AS and is not affiliated with Brønnøysundregistrene. For anything legally binding, use the official record at https://virksomhet.brreg.no.
- Not a reidentification tool. It is a register of organisations and cannot be used to look people up; there are no address-only lookups of individuals.
- No bulk export. A search answers a page at a time, followed by cursor; there is no download of the register.
- Sole proprietorships are held back. E-mail and phone numbers, former names and activity text
are not shown; they get no map point, no parcel and no buildings; and a search without a name
never lists them. A
matchterm cannot reach one either — personal-data records contribute no values to the fieldsmatchreads. - No structured annual accounts. Key figures and the list of filed years are structured data; the accounts themselves are not. A filed year can be handed over as a scanned copy on request, and a scan is where it ends — there are no machine-readable notes, line items or auditor's reports.
- No property ownership. Nothing from grunnboken; the parcel is the one at the registered address.
Data and licence
PROVENANCE.md records each dataset, how it reaches the service, how fresh it is, and what is withheld. Two licences apply, and a result carries the ones its own content needs.
Enhetsregisteret and Regnskapsregisteret are open data from Brønnøysundregistrene under the Norwegian Licence for Open Government Data (NLOD 2.0). Every successful result carries the attribution the licence asks for:
Inneholder data under Norsk lisens for offentlige data (NLOD) tilgjengeliggjort av Brønnøysundregistrene.
Address points, parcels and buildings come from Kartverket's Matrikkelen under Creative Commons Attribution 4.0 (CC BY 4.0). A result that carries a coordinate or a distance carries the Kartverket attribution too, and says what Publifye changed — the points were matched to each organisation's registered address and do not show where a business physically operates. A result that carries a parcel or buildings also carries the private-register notice that utleveringsforskriften § 5 tenth paragraph requires:
Opplysningene utleveres fra et privat register (utleveringsforskriften § 5 tiende ledd).
The same regulation's third paragraph forbids using information from grunnboken and matrikkelen for advertising or marketing without the consent of the party it concerns. That applies to you as a caller, not only to us.
Industry benchmarks come from Statistics Norway (SSB) tables 12910 and 12936 under CC BY 4.0. A result that carries a benchmark carries SSB's attribution block beside the NLOD one.
Your questions
See DATA-HANDLING.md for what is logged about a call — never its arguments — and what leaves the service on your behalf.
Limits
Plans
Access needs a Brreg plan on a Publifye account. The current plans:
Payment is by card at checkout, through Stripe. Plans and prices can change; the current ones are always on https://brreg.publifye.com, and where this page and the site differ, the site is right.
Source: services/brreg/README.md at commit 2d654d5
Tools
0Version history
1- v1.0.0LatestSep 23, 2026
Score
85% 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 listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts