Model Context Protocol
MCP server for Norwegian company data
Apier runs a hosted MCP server for Norwegian company data at https://www.apier.no/api/mcp over Streamable HTTP. An MCP client such as Claude, Cursor or VS Code connects to that one URL and reads live data from Brønnøysundregistrene (Brreg). Beyond company facts, the server returns the register's coded signing rules for the company, a go or no-go verification status, signed evidence packs and the change history Apier has observed. A sandbox answers without signup.
Connect your client
Every client connects to the same endpoint. Listing the tools needs no key. Calling a company tool needs an API key from the dashboard, sent as a bearer header, or the sandbox bearer described in the next section.
https://www.apier.no/api/mcpClaude Code
Run one command in a terminal. Claude Code stores the server and sends the header on every call.
claude mcp add --transport http apier https://www.apier.no/api/mcp \
--header "Authorization: Bearer apr_free_<your_key_here>"Claude (claude.ai custom connector)
The connector signs in with OAuth, so no API key is typed into Claude.
- In claude.ai, open Customize, then Connectors.
- Click Add, then Add custom connector.
- Type Apier as the name and the endpoint above as the MCP server URL, then click Continue.
- Under Authentication choose Sign in now, and under OAuth client choose Register automatically.
- Click Add, then Connect, and allow the connection on the Apier consent page.
Allowing the connection creates a dedicated key on your Apier account. Calls made through the connector are charged to that key. Step by step guide to the Claude connector.
Cursor
Add the server to the user level file ~/.cursor/mcp.json, not the file inside a project. The npm package @apier-no/mcp is a thin local proxy to the same hosted endpoint.
{
"mcpServers": {
"apier": {
"command": "npx",
"args": [
"-y",
"@apier-no/mcp"
],
"env": {
"APIER_API_KEY": "apr_free_<your_key_here>"
}
}
}
}VS Code
VS Code in agent mode connects to the endpoint directly. It asks for the key once and stores it, so the file holds no key.
{
"inputs": [
{
"type": "promptString",
"id": "apier-api-key",
"description": "Apier API key",
"password": true
}
],
"servers": {
"apier": {
"type": "http",
"url": "https://www.apier.no/api/mcp",
"headers": {
"Authorization": "Bearer ${input:apier-api-key}"
}
}
}
}Claude Desktop
Open Settings, then Developer, then Edit Config, add the block and restart Claude Desktop.
{
"mcpServers": {
"apier": {
"command": "npx",
"args": [
"-y",
"@apier-no/mcp"
],
"env": {
"APIER_API_KEY": "apr_free_<your_key_here>"
}
}
}
}Gemini CLI
Add the server to your user settings file. Gemini CLI uses the httpUrl field for a Streamable HTTP server.
{
"mcpServers": {
"apier": {
"httpUrl": "https://www.apier.no/api/mcp",
"headers": {
"Authorization": "Bearer apr_free_<your_key_here>"
}
}
}
}Keep any file that holds a key out of source control. The full client reference, including the OpenAI Agents SDK and Azure AI Foundry, is in the MCP documentation.
Try it without an account
7 tools run without an API key: get_public_obligations, get_exchange_rate, get_public_deadlines, explain_compliance_error, get_altinn_migration_guidance, get_pricing, redeem_issuance_token. None of them returns data about one company.
For the company tools, send the sandbox bearer in place of an API key. It needs no signup. Append a random suffix of your own, for example a fresh UUID, so your session does not collide with another caller.
Authorization: Bearer apier_sandbox_test_<suffix>With that bearer, 10 tools answer from synthetic companies, and every such answer is marked as sandbox data. No sandbox call reaches a government system. Use the reserved sandbox organisation numbers. The 818, 99966 and 99977 series pass the checksum the company tools require, and GET /api/v1/sandbox/fixtures lists every one of them.
curl -sS https://www.apier.no/api/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "Authorization: Bearer apier_sandbox_test_<suffix>" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get_company_authority","arguments":{"org_number":"818000006"}}}'Tools
The server lists 20 tools. The table is generated from the same registry the server answers tools/list from, so it matches what your client sees.
| Tool | What it answers | API key | Price per call |
|---|---|---|---|
get_company_summary | Which obligations and deadlines apply to this company, in one call. | Key or sandbox bearer | Metered, 50 øre |
get_public_obligations | Which obligations apply to a legal form such as AS or ENK. | No key | No charge |
get_exchange_rate | Norges Bank's exchange rate for a currency against the Norwegian krone. | No key | No charge |
get_company_profile | The structured company profile the register holds for an organisation number. | Key or sandbox bearer | Metered, 50 øre |
get_company_context | The company's register identity: legal form, status and registration facts. | Key or sandbox bearer | Metered, 50 øre |
get_company_deadlines | When this company's filings fall due. | Key or sandbox bearer | Metered, 50 øre |
get_company_obligations | Which registered obligations apply to this company. | Key or sandbox bearer | Metered, 50 øre |
get_public_deadlines | The general Norwegian filing calendar for a year. | No key | No charge |
explain_compliance_error | What an Apier error code means and how to correct the call. | No key | No charge |
search_companies | Which organisation numbers match a company name. | Key or sandbox bearer | No charge |
get_company_verification | Whether the company is registered and active: pass, warn, fail or unknown, with the flags behind the status. | Key or sandbox bearer | Metered, 50 øre |
get_company_authority | The register's coded signing rules for the company: signaturrett and prokura. | Key or sandbox bearer | Metered, 50 øre |
get_company_accounts | The latest annual accounts snapshot: filing status and key figures. | Key or sandbox bearer | Metered, 50 øre |
get_company_evidence_pack | One signed record of what Apier observed about the company. | Key or sandbox bearer | Metered, 50 øre |
get_company_history | The state Apier had observed for the company on a date, or the changes it observed in a period. | Key or sandbox bearer | Metered, 50 øre |
list_changes | Which changes Apier has detected in the sources it polls, since a date. | Key or sandbox bearer | No charge |
get_altinn_migration_guidance | Which Altinn 3 resource replaced an Altinn 2 service or role code. | No key | No charge |
get_pricing | What each metered call costs. | No key | No charge |
get_credit_balance | How much prepaid credit the account has left. | Key or sandbox bearer | No charge |
redeem_issuance_token | Exchanges a one-time token from the account owner for the agent's own API key. | No key | No charge |
Example prompts
You ask in plain language. The model reads the tool list and chooses the calls. These prompts usually lead to the tool chains shown.
- Find the organisation number for Nordic Widgets AS and tell me how the company signs.
search_companies→get_company_context→get_company_authority - Is the company with organisation number 818000006 registered and active?
get_company_verification - Check that 818000006 is active, then show the signing rule and the prokura holders.
get_company_verification→get_company_authority - Give me a signed record of what the register shows for this company today.
get_company_evidence_pack - What did you observe for this company on 1 October, and what has changed since?
get_company_history - What will these lookups cost, and how much credit is left?
get_pricing→get_credit_balance
Signing authority through MCP
get_company_authority takes an organisation number and returns the register's coded signing rules for the company: signaturrett (the general authority to bind the company) and prokura (a narrower authority for its day-to-day operation), as Brønnøysundregistrene hold them. This is the call for the sandbox company 818000006.
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_company_authority",
"arguments": {
"org_number": "818000006"
}
}
}{
"classification": "joint",
"summary": "Selskapet signeres av flere roller i fellesskap.",
"combinations": [
{
"kombinasjons_id": "SANDBOX-KOMB-DAGL-STYRL-FELLES",
"description": "Daglig leder og styrets leder i fellesskap.",
"role_codes": [
"DAGL",
"STYRL"
]
},
{
"kombinasjons_id": null,
"description": "Prokura tildelt rollen PROKU.",
"role_codes": [
"PROKU"
]
}
]
}The classification joint means the registered combination names two roles that sign together. In production the description is the register's own wording, returned as data. Run get_company_verification first: the signing answer does not look at bankruptcy or dissolution. Every field of the answer, and the same call over REST.
Data sources and licence
The server reads sources that publish open data, and each answer names the sources it was built from.
- Brønnøysundregistrene, Enhetsregisteret: company facts and role holders.
- Brønnøysundregistrene, Fullmakttjenesten: coded signaturrett and prokura per organisation.
- Brønnøysundregistrene, Regnskapsregisteret (open tier): filing status and key figures.
- Norges Bank: daily exchange rates, with Norges Bank named as source.
- GLEIF: LEI records used in the company checks. Source: GLEIF Global LEI Index (CC0 1.0).
Data from Brønnøysundregistrene is reused under NLOD 2.0 (Norsk lisens for offentlige data) with this attribution:
Inneholder data under Norsk lisens for offentlige data (NLOD) tilgjengeliggjort av Brønnøysundregistrene.
The registers do not endorse Apier. Tool answers built from a licensed source carry the licence and attribution in metadata.source_licences. All data sources and licences.
Pricing and limits
Company reads are metered. Each metered tool call draws 50 øre (NOK 0.50) from a prepaid wallet in Norwegian kroner. There is no subscription. You top up from NOK 50 to NOK 10,000 at a time, and unused credit expires 12 months after purchase.
The table above marks each metered tool. The keyless tools, company name search, the change archive and your own credit balance are not charged. Sandbox calls use synthetic data and are not charged.
Calls without a key share one limit of 100 requests per hour per IP address. With a key, the first level allows 30 requests per minute on company data. Prices, top-ups and every rate limit.
What the server does not do
- It reports the register's coded signing rules and never rules on whether a person may sign a given document. Your own process applies the rules.
- It has no Altinn authorisation, fullmakt (delegated authority) or acting capacity tools. Those tools were withdrawn on 2026-10-21, and a call that names one answers CAPABILITY_WITHDRAWN.
- It has no filing history tool and no VAT submission. Apier does not submit filings to government.
- It does not verify the identity of a person and is not a screening service.
- It covers companies in the Norwegian registers.
Frequently asked questions
- Is there an MCP server for Brreg data?
- Yes. Apier hosts one at https://www.apier.no/api/mcp. It reads open data from Brønnøysundregistrene (Brreg) and lists 20 tools. Apier is an independent service, and the registers do not endorse it.
- Does the MCP server need an API key?
- Not to connect or to list the tools. 7 public tools also run without a key. The company tools need an API key, or the sandbox bearer if you want synthetic data without signup.
- Which MCP clients work with it?
- Any client that speaks Streamable HTTP, among them Claude Code, the claude.ai custom connector, VS Code and Gemini CLI. Claude Desktop and Cursor can use the @apier-no/mcp package, a local proxy to the same endpoint.
- Does it return signaturrett and prokura?
- Yes. get_company_authority returns the register's coded signing rules for the company: the signaturrett and prokura combinations with the register's wording and role codes. It does not decide whether a person may sign a specific document.
- What does the MCP server cost?
- A metered company read costs 50 øre from a prepaid wallet, with no subscription. The keyless tools, company name search and sandbox calls are not charged.
- Where does the data come from?
- From Brønnøysundregistrene (Enhetsregisteret, Fullmakttjenesten and the open tier of Regnskapsregisteret) under NLOD 2.0, from Norges Bank for exchange rates, and from GLEIF for LEI records.
- Is there a Norwegian version?
- Yes. This page has a bokmål version, and the tool list carries bokmål descriptions next to the English ones.
Related pages
- MCP client configuration and tool reference: every client block, authentication and protocol versions.
- Brreg signing authority API: the signing rules as JSON over REST, field by field.
- Norwegian company authority for AI agents: what an agent needs before it acts.
- Know Your Business Agent (KYBA): the company layer when an agent acts for a company.
- Sandbox: try the endpoints in the browser.
- Pricing: the price per metered read and the rate limits.
- Guide: How do I connect Claude or Cursor to Norwegian company data using MCP?
- Guide: How do I integrate an AI agent with Apier over MCP?
- Guide: How do I connect apier.no to Claude?
Get started
Try a tool call in the sandbox, or read the full client configuration.