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_companies | Search companies by name/orgnr/free text | Standard |
get_company | Basic information + optional ownership/financial extension | Standard |
get_company_ownership | Ownership tree up/down/both with configurable depth | Extended access |
get_company_roles | Active (+ optionally historical) board/CEO roles | Standard |
get_company_financials | Latest financials + history (5 years) | Standard |
get_regnskapsrapport | Formatted financial report (Excel/PDF) as a downloadable file — short-lived signed link, not raw data | Export add-on |
get_company_announcements | BRREG announcements for one company | Standard |
compare_companies | Side-by-side comparison of multiple companies | Standard |
get_company_ip | IP portfolio from the Norwegian Industrial Property Office (Patentstyret) — patents, trademarks and designs (totals, active counts and individual rights) | Standard |
| Person | ||
search_persons | Search role/shareholder persons (16-year limit, birth year masked) | Standard |
get_person | Person profile | Standard |
get_person_roles | Person's roles across companies | Standard |
get_person_companies | Companies the person is connected to | Standard |
| Risk / AML / KYC | ||
get_company_signals | Risk signal aggregate (KYC, distress, interim balance) | Extended access |
get_risk_score | Company'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_score | Structured AML score 0-100 with factor breakdown per key person | Compliance tier |
start_aml_report | Start async AML report → receives rapport_id immediately (no timeout for heavy calls) | Compliance tier |
get_aml_report | Poll status/result for a start_aml_report job (in progress/done/failed) | Compliance tier |
check_aml_pep | AML/PEP screening with fuzzy match. Requires signed DPA + X-FR-Purpose header | Compliance tier |
check_foretak_i_vanskeligheter | FIV assessment (undertaking in difficulty) | Standard |
confirm_risk_score_disclaimer | One-time confirmation of pre-screening disclaimer (audit logged) | Standard |
check_konkurs_eksponering | Name-based screening for bankruptcy exposure (leadership roles in companies that later went bankrupt). A hit is a review flag, not a verdict | Extended access |
get_recent_changes | Recent changes for a company | Standard |
| Bulk / portfolio | ||
check_fiv_bulk | Bulk FIV check of portfolio | Standard |
get_risk_score_bulk | Bulk risk score of portfolio | Standard |
| Industry / relation / data | ||
list_companies_in_nace | Companies in a NACE code + filters (status, municipality, employees) | Standard |
find_related_companies | Relationship graph via shared person or address | Extended access |
find_shared_connections | Cluster 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 graph | Connection analysis |
search_announcements | Cross-orgnr search in BRREG announcements | Standard |
get_konsernstotte | Group support assessment | Standard |
convert_nok | Convert NOK to foreign currency | Standard |
| Monitoring (orgnr + NACE → webhook) | ||
add_company_monitoring | Add 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_codes | Search/browse the NACE catalog (q/parent/eu) to find the right code | Company monitoring |
subscribe_nace | Subscribe to a NACE industry → webhook on announcement/status/ownership change (geo/event filters) | Company monitoring |
list_my_subscriptions | List your industry subscriptions | Company monitoring |
delete_subscription | Delete an industry subscription | Company monitoring |
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.
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
limitparameters on NACE/announcement tools to save tokens.
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.