Nightly data refresh in progress – the site may feel a little slower than usual.
The service is starting up and loading data – the site may feel a little slower for the next 30–60 seconds.
Agentic flow

Use Firmaradar from agents and automation

Firmaradar exposes two integration patterns for agentic work: MCP tools for AI agents (Claude, ChatGPT, Cursor) that call out, and webhook-based plugins for event-driven flow where Firmaradar pushes data into your own system. Building on the Microsoft stack? Firmaradar is also listed in Microsoft's official connector catalog for Power Automate, Power Apps, Logic Apps and Copilot Studio.

Model Context Protocol

MCP — for AI agents

MCP (Model Context Protocol) is an open standard for how AI models connect to external data tools. Firmaradar's MCP server exposes 36 tools that let your agent look up companies, people, ownership structures, financials, announcements, risk/AML — and subscribe to industry monitoring — all with structured JSON responses and full type definitions.

All 36 tools

Tool What it does Access requirement
Company
search_companiesSearch companies by name/orgnr/free textStandard
get_companyBasic information + optional ownership/financial extensionStandard
get_company_ownershipOwnership tree up/down/both with configurable depthExtended access
get_company_rolesActive (+ optionally historical) board/CEO rolesStandard
get_company_financialsLatest financials + history (5 years)Standard
get_regnskapsrapportFormatted financial report (Excel/PDF) as a downloadable file — short-lived signed link, not raw dataExport add-on
get_company_announcementsBRREG announcements for one companyStandard
compare_companiesSide-by-side comparison of multiple companiesStandard
get_company_ipIP portfolio from the Norwegian Industrial Property Office (Patentstyret) — patents, trademarks and designs (totals, active counts and individual rights)Standard
Person
search_personsSearch role/shareholder persons (16-year limit, birth year masked)Standard
get_personPerson profileStandard
get_person_rolesPerson's roles across companiesStandard
get_person_companiesCompanies the person is connected toStandard
Risk / AML / KYC
get_company_signalsRisk signal aggregate (KYC, distress, interim balance)Extended access
get_risk_scoreCompany's financial health 0-100 (financials/BRREG/FIV). Not a personal credit check; sole proprietorships (ENK) and Norwegian-registered foreign enterprises (NUF) blocked (credit information rules)Standard
get_aml_scoreStructured AML score 0-100 with factor breakdown per key personCompliance tier
start_aml_reportStart async AML report → receives rapport_id immediately (no timeout for heavy calls)Compliance tier
get_aml_reportPoll status/result for a start_aml_report job (in progress/done/failed)Compliance tier
check_aml_pepAML/PEP screening with fuzzy match. Requires signed DPA + X-FR-Purpose headerCompliance tier
check_foretak_i_vanskeligheterFIV assessment (undertaking in difficulty)Standard
confirm_risk_score_disclaimerOne-time confirmation of pre-screening disclaimer (audit logged)Standard
check_konkurs_eksponeringName-based screening for bankruptcy exposure (leadership roles in companies that later went bankrupt). A hit is a review flag, not a verdictExtended access
get_recent_changesRecent changes for a companyStandard
Bulk / portfolio
check_fiv_bulkBulk FIV check of portfolioStandard
get_risk_score_bulkBulk risk score of portfolioStandard
Industry / relation / data
list_companies_in_naceCompanies in a NACE code + filters (status, municipality, employees)Standard
find_related_companiesRelationship graph via shared person or addressExtended access
find_shared_connectionsCluster analysis across 2-10 companies at once — shared board members, address, owners, auditor and circular ownership, returned with weighted risk indicators and a node/edge graphConnection analysis
search_announcementsCross-orgnr search in BRREG announcementsStandard
get_konsernstotteGroup support assessmentStandard
convert_nokConvert NOK to foreign currencyStandard
Monitoring (orgnr + NACE → webhook)
add_company_monitoringAdd an organization number to the monitoring list — alerts on announcements, status changes, ownership changes and new public grants (optionally also IP changes)Company monitoring
list_nace_codesSearch/browse the NACE catalog (q/parent/eu) to find the right codeCompany monitoring
subscribe_naceSubscribe to a NACE industry → webhook on announcement/status/ownership change (geo/event filters)Company monitoring
list_my_subscriptionsList your industry subscriptionsCompany monitoring
delete_subscriptionDelete an industry subscriptionCompany monitoring
Skill for Claude: We also publish an Agent Skill — norwegian-company-intelligence — that teaches the agent which firmaradar_* tool to use for a given need, in the correct order and with the correct code formats (orgnr, NACE, municipality number). It lives in the public MCP repo (Tiwas/firmaradar-mcp, folder skills/norwegian-company-intelligence/) and covers both Norwegian primary users and international workflows where Norway is one leg in a multi-jurisdictional compliance view.
Tip: Full B2B pre-screening = get_risk_score (company financials) + get_aml_score (the people behind). For extended KYC you also include check_aml_pep for sanctions and PEP hits per name. Firmaradar is based on publicly available information about companies, roles and ownership — the service does not offer personal credit assessment or personal tax/income data.

Step 1 — Get the MCP server

The Firmaradar MCP server is published as Tiwas/firmaradar-mcp on GitHub (Apache 2.0). The MCP server is not yet published on PyPI / npm (not to be confused with n8n-nodes-firmaradar which is on npm — that is a separate n8n community node, not the MCP server). Clone the repo, create a venv, and install editable:

# Clone the public repo:
git clone https://github.com/Tiwas/firmaradar-mcp.git
cd firmaradar-mcp/python

# Create and activate a venv (PEP 668 blocks system pip on Debian/Ubuntu 23+):
python3 -m venv .venv
source .venv/bin/activate

# Install the package editable (pulls mcp/httpx/pydantic deps automatically):
pip install -e .

# Verify the console script is on PATH:
which firmaradar-mcp
# → ~/firmaradar-mcp/python/.venv/bin/firmaradar-mcp

Important: Note the absolute path that which firmaradar-mcp returns — you will use it in the MCP config below (not just python or firmaradar-mcp), because the agent client does not know about your venv without an absolute path.

If you see externally-managed-environment (Debian/Ubuntu 23+, PEP 668): the venv above solves this. Do not use --break-system-packages — the agent client may get confused about which Python is active.

Prefer to skip the local install? Remote MCP at mcp.firmaradar.no/mcp exposes the same tools over HTTP with OAuth — no Python, venv or absolute path to keep track of. Your client only needs the URL; see Step 3.

Step 2 — Create API key

Generate a key at My API keys. It is only shown once — copy it to a safe place before closing the dialog. Both env variables are required:

  • FIRMARADAR_API_KEY — the key from the previous step
  • FIRMARADAR_API_BASE — https://firmaradar.no (prod) or stage URL for testing

Step 3 — Register the server in your agent client

MCP is client-agnostic. The config snippet looks slightly different per client, but registers the same: a command that starts the stdio server with the correct env variables.

Claude Desktop (Anthropic)

Edit the config file — on macOS: ~/Library/Application Support/Claude/claude_desktop_config.json, on Linux: ~/.config/claude/claude_desktop_config.json, on Windows: %APPDATA%\Claude\claude_desktop_config.json.

Replace <ABSOLUTT-STI> with the path which firmaradar-mcp gave you in Step 1:

{
  "mcpServers": {
    "firmaradar": {
      "command": "<ABSOLUTT-STI>/firmaradar-mcp",
      "env": {
        "FIRMARADAR_API_KEY": "<din-nøkkel>",
        "FIRMARADAR_API_BASE": "https://firmaradar.no"
      }
    }
  }
}

Restart Claude Desktop. The tools appear under the «🔌» icon in the chat.

Claude Code CLI

Recommended — JSON form (most robust): sends the entire config as one JSON object, no flag-ordering errors:

claude mcp add-json firmaradar '{
  "command": "<ABSOLUTT-STI>/firmaradar-mcp",
  "env": {
    "FIRMARADAR_API_KEY": "<din-nøkkel>",
    "FIRMARADAR_API_BASE": "https://firmaradar.no"
  }
}'

Alternative — flag form: the server name must come right after add (BEFORE -e flags), otherwise the parser interprets the name as an env value:

claude mcp add firmaradar \
    -e FIRMARADAR_API_KEY=<din-nøkkel> \
    -e FIRMARADAR_API_BASE=https://firmaradar.no \
    -- <ABSOLUTT-STI>/firmaradar-mcp

# Verify the server is added + read:
claude mcp list
claude mcp get firmaradar

Default scope is local (per project). Add -s user between add and the server name to make the server available in all Claude Code projects on your machine.

Gotcha: --env (long form) does NOT work — use -e (short form). Similarly: python -m firmaradar_mcp.server only works if the Python environment matches your venv. Use the absolute path from which firmaradar-mcp.

Cursor

Settings → Features → Model Context Protocol → “Add server”, or edit ~/.cursor/mcp.json manually. Use absolute path from which firmaradar-mcp:

{
  "mcpServers": {
    "firmaradar": {
      "command": "<ABSOLUTT-STI>/firmaradar-mcp",
      "env": {
        "FIRMARADAR_API_KEY": "<din-nøkkel>",
        "FIRMARADAR_API_BASE": "https://firmaradar.no"
      }
    }
  }
}

OpenAI Codex CLI

Codex uses TOML config in ~/.codex/config.toml. Add a [mcp_servers.firmaradar] segment with absolute path to the console script:

[mcp_servers.firmaradar]
command = "<ABSOLUTT-STI>/firmaradar-mcp"
env = { FIRMARADAR_API_KEY = "<din-nøkkel>", FIRMARADAR_API_BASE = "https://firmaradar.no" }

Gemini CLI (Google)

Gemini CLI reads MCP servers from ~/.gemini/settings.json (or per-project .gemini/settings.json):

{
  "mcpServers": {
    "firmaradar": {
      "command": "<ABSOLUTT-STI>/firmaradar-mcp",
      "env": {
        "FIRMARADAR_API_KEY": "<din-nøkkel>",
        "FIRMARADAR_API_BASE": "https://firmaradar.no"
      }
    }
  }
}

Step 4 — Verify the setup

Start a new agent session and ask «what Firmaradar tools do you have available?» The client should list 36 tools (all prefixed with firmaradar.). Then test one simple lookup, for example:

«Fetch basic information about Equinor (orgnr 923609016).»

If the client cannot find the server: check that the python package is installed in the same environment the client runs from (typical pyenv/conda problem), and that the log output from python -m firmaradar_mcp.server in the terminal shows «Server started».

Differences between clients

All supported clients use the MCP 1.0 protocol, so tool schemas and behaviour are identical. The practical differences are in:

  • Where the config file is located (see the snippets above).
  • Where the tools appear in the UI — Claude Desktop has the «🔌» icon, Cursor has its own MCP panel, Codex and Gemini CLI show them in the list at startup.
  • Approval flow — Claude Desktop asks for consent per tool call by default. Cursor and Codex have configurable trust levels per server. Gemini CLI allows the entire server after the first «yes».
  • Token budget — all 36 tools send structured JSON responses, but the context-window effect varies per model. Use filters and limit parameters on NACE/announcement tools to save tokens.
MCP spec

MCP is an open standard from Anthropic (modelcontextprotocol.io). Firmaradar's implementation follows the 1.0 protocol and is compatible with all MCP clients that support stdio transport.

Microsoft Power Platform

Power Automate, Power Apps, Logic Apps and Copilot Studio

Firmaradar is published in Microsoft's official connector catalog as Firmaradar (Independent Publisher). So there is no custom connector to import yourself — Firmaradar sits in the standard connector list, and you connect with your own API key. It uses the same operation contract as the MCP server and the REST API, so a flow you build here returns the same fields an agent sees.

Availability and licensing

Service Classification
Power AutomatePremium
Power AppsPremium
Copilot StudioPremium
Azure Logic AppsStandard

Premium means the user needs a license that covers premium connectors. The connector is available in all ordinary Power Platform and Logic Apps regions, but not in US Government (GCC and GCC High), US Department of Defense (DoD) or China Cloud operated by 21Vianet.

Step 1 — Get your API key

The connector authenticates with an API key — not OAuth. Microsoft only permits no-auth, Basic or API-key authentication for Independent Publisher connectors. The key is sent as the X-API-Key header on every call, exactly as against the REST API.

  1. Create an account and sign in to Firmaradar.
  2. Go to My page → My API keys and generate a new key. It is shown only once.
  3. Store the key in a password vault or in Azure Key Vault — it grants the same access as your account.

Step 2 — Add Firmaradar to a flow

  1. Open Power Automate (or Power Apps, Logic Apps or Copilot Studio) and create a new flow.
  2. Choose “New step” and search for “Firmaradar” in the connector list.
  3. Pick an action — for example Get full company profile.
  4. The first time round you are asked to create a connection: paste the API key into the “Firmaradar API key” field and click “Create”.
  5. Enter the organization number, for example 923609016 (Equinor ASA), and run the flow.

The response is structured JSON you can use straight away in the next step: post a risk alert to Teams, write a KYC record to Dataverse, or enrich a lead in your CRM. The fields are identical across MCP, n8n, Make and Power Platform, so a flow survives a change of platform.

What the connector covers

Area Actions in the catalog
CompanyFull company profile, ownership tree up/down/both, board and signatory roles, multi-year financial history, announcements and recent changes, company search and side-by-side comparison
PersonPerson search with fuzzy name matching, full role history and share portfolio per person
RiskAggregated risk signals, a transparent 0-100 risk score with component breakdown, statutory distress assessment (foretak i vanskeligheter) and cross-company search in announcements
Industry and relationsCompanies within a NACE industry code with municipality and employee filters, plus related companies via shared role-holders or address
AMLAML and PEP screening plus a structured AML score. Requires a signed data processing agreement and a per-call purpose header, and is audit-logged for 60 months.
Group subsidiesPublic grants and support aggregated up through the ownership chain — used in due diligence on public-sector exposure

The catalog is expanded continuously, and an extension of the operation set is currently in review with Microsoft. The list in force at any time — with parameters and response schemas — is on the connector's Microsoft Learn page.

Documentation

The connector reference lives with Microsoft: learn.microsoft.com/connectors/firmaradar. Questions about the connector definition itself go to microsoft/PowerPlatformConnectors; questions about data, rate limits and account access go to Firmaradar support.

Webhook plugins

Plugins — event-driven flow

"Plugin" in Firmaradar terminology is a webhook integration where we push data into your own system as soon as something happens (15-min cadence). You don't need to poll — Firmaradar notifies you when event types you have subscribed to hit.

Two subscription types

Orgnr monitoring

Subscribe to specific organisation numbers. Get notified on bankruptcy, ownership change, board changes, financial filing, announcements, KYC signals.

NACE industry monitoring

Subscribe to entire industries (e.g. section "A — Agriculture" or specific subgroup "47.110 — Retail trade") with optional geography filter (region/county/municipality).

CRUD API for programmatic management

Both subscription types can be created/listed/updated/deleted via JSON API (authenticated with the same API key as the REST API):

# Create a NACE subscription (monitor section A in Oslo county)
curl -X POST -H "X-API-Key: $FIRMARADAR_API_KEY" \
     -H "Content-Type: application/json" \
     -d '{
       "nace_code": "A",
       "fylke_filter": ["03"],
       "aggregation_mode": "real_time",
       "url": "https://din-server.no/firmaradar-webhook"
     }' \
     "https://firmaradar.no/api/v1/nace/subscriptions"

# List your subscriptions
curl -H "X-API-Key: $FIRMARADAR_API_KEY" \
     "https://firmaradar.no/api/v1/nace/subscriptions"

# Pause a subscription
curl -X PATCH -H "X-API-Key: $FIRMARADAR_API_KEY" \
     -H "Content-Type: application/json" \
     -d '{"aktivert": false}' \
     "https://firmaradar.no/api/v1/nace/subscriptions/42"

Webhook delivery

  • Firmaradar POSTs JSON to your url with Content-Type: application/json
  • Optional signing (NACE): when the subscription has a signing_secret, every delivery is signed with X-Firmaradar-Signature (HMAC-SHA256 over the raw body, keyed with the signing_secret). Without a signing_secret, and for orgnr monitoring, deliveries are sent unsigned.
  • Optional Authorization: Bearer <token> if you have set bearer_token
  • Orgnr monitoring: up to 3 attempts on non-2xx responses, network errors or timeouts, with a few seconds' increasing pause between attempts. If all fail, the delivery is dropped and the monitoring's email recipients are notified (at most once a day).
  • NACE industry monitoring: delivered at-least-once, digests included. Every request carries the header X-Firmaradar-Delivery-Id — stable per event and subscription (per batch for digests) and identical on every retry. Deduplicate on it, and respond quickly with a 2xx.
    • Failed attempts (non-2xx, timeout) are retried for as long as the subscription stays active and unchanged, with exponential backoff from 1 minute up to 6 hours. If we cannot connect, the delivery is retried in the next delivery round (about every 15 minutes, hourly for digests). Each attempt has a 30-second time budget, and redirects are not followed.
    • Pausing, deleting, or changing filters or aggregation stops pending deliveries. Events from before the subscription was created or re-enabled are not delivered retroactively.
    • Email digests enter a durable send queue after a final subscription check. The queue attempts delivery up to 8 times over about 36 hours. An email already queued is not withdrawn if the subscription is later paused or changed.
  • 15-min cadence — you receive notification within 15 minutes after the event is registered at BRREG

Available event types

NACE subscriptions: created, updated, deleted, status_changed. Specify events: [...] in the subscription to restrict, or leave empty for all. Orgnr subscriptions have no event filter of their own — they receive the changes your monitoring detects for the company.

Decision support

When do you use what?

Use case Recommended pattern Why
Interactive chat bot for customer service MCP Pull-on-request, sub-second response, the agent controls the flow
"Notify me when someone in my customer portfolio goes bankrupt" Plugin (webhook) Event-driven, no polling, no wasted compute
KYC report at customer onboarding MCP check_aml_pep Point-in-time screening with signed DPA + audit trail
"Build a sales list of all shops in Vestland" MCP list_companies_in_nace One-time batch extraction with cursor pagination
"Follow an entire industry for cross-sell opportunities" Plugin (NACE subscriptions) Get notifications on new companies, growth signals, announcements
Automated competitor analysis Combination Plugin for signals + MCP for deep dive when something triggers
Security

Security + compliance

  • API keys are created per user, can be revoked at any time, and are rate-limited per tier.
  • HMAC signing is optional for NACE webhooks: with a signing_secret, every delivery is signed (SHA-256 over the body). Orgnr deliveries are unsigned — verify them with the delivery_key (Bearer).
  • Per-call DPA confirmation for AML/PEP screening — header X-FR-Purpose is required per call, and the audit log is retained for 60 months (Anti-Money Laundering Act § 30).
  • Rate limits are enforced per key + per endpoint (e.g. AML screening is stricter: 50 calls / 30 min).
  • PII tiering: standard / extended / compliance — see pricing for tier details.
Onboarding

Getting started

  1. Create an account + log in at Firmaradar.no.
  2. Choose tier on the pricing page.
  3. Generate API key under My API keys.
  4. For MCP: connect to mcp.firmaradar.no/mcp (OAuth) or clone Tiwas/firmaradar-mcp, set env vars, register in your agent client.
  5. For plugins: create webhook subscriptions via UI (orgnr or NACE) or via JSON API.
  6. Test against a known orgnr (e.g. 911 287 369 — BRREG) before going to prod.

Questions? Contact support or read the REST API documentation for endpoint details.