# Nordic Financial MCP (remote · mcp.aidatanorge.no)

Semantic search over Nordic filings, press releases, macro data and electricity prices.

- Trust score: 62/100 (medium)
- Change this week: +1
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `mcp.aidatanorge.no`: 62/100 (this document), [markdown](https://verifymcp.io/servers/aidatanordic-nordic-financial-mcp/mcp.md), [page](https://verifymcp.io/servers/aidatanordic-nordic-financial-mcp/mcp)

## Channel facts

- Endpoint: `https://mcp.aidatanorge.no/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.1.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 46/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: no authorisation is required to call this server, and 7 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
  - HTTPS not yet verified: we couldn't determine whether a plaintext access path exists.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 75/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 2773 tokens (~396/item across 7 items; 7 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http aidatanordic-nordic-financial-mcp https://mcp.aidatanorge.no/mcp
```

### Codex

```toml
[mcp_servers.aidatanordic-nordic-financial-mcp]
url = "https://mcp.aidatanorge.no/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "aidatanordic-nordic-financial-mcp": {
      "type": "remote",
      "url": "https://mcp.aidatanorge.no/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add aidatanordic-nordic-financial-mcp --url https://mcp.aidatanorge.no/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  aidatanordic-nordic-financial-mcp:
    url: "https://mcp.aidatanorge.no/mcp"
```

### Other

```json
{
  "mcpServers": {
    "aidatanordic-nordic-financial-mcp": {
      "type": "http",
      "url": "https://mcp.aidatanorge.no/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-02 (score 62, +1)

No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-08-01 (score 61, 0)

- [functional improvement] Endpoint reachability: not serving MCP → reachable

### 2026-07-31 (score 61, +49)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 12, −50)

- [security regression] Endpoint reachability: reachable → not serving MCP
- [security regression] Stability: 0.10 → unverified
- [security regression] Transport: pass → fail
- [security] Authorization: Authorisation not fully verified: no authorisation is required to connect, but we couldn't read the tool list to see what that exposes.
- [functional regression] Schema quality: 100 → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional regression] Capabilities: pass → unverified

### 2026-07-28 (score 62, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-27 (score 61, +1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-26 (score 60)

First indexed and scored.

## MCP tools (7)

### `ping` (~122 tokens)

Connectivity check that confirms the Nordic MCP server process is responding.

Use this at the start of a session to verify the server is reachable before
making other calls. Do not use as a proxy for database health — the server can
respond while the Qdrant vector database is temporarily unavailable. To confirm
data availability, call search_filings directly.

Returns:
    A greeting string: "Hello {name}! Nordic MCP server is running."

Input parameters:

- `name` (string): Arbitrary label included in the response, e.g. 'healthcheck' or 'agent-1'

Output parameters:

- `result` (string)

### `get_company_info` (~296 tokens)

Look up a company in the official business registry for Norway, Denmark or Finland.

Use this to retrieve authoritative registration data (legal name, status, address)
for a known organisation number. Do not use for Sweden (SE) — use search_filings
with country='SE' instead, as Bolagsverket integration is not yet available.
Do not use to discover tickers or ISIN codes — use search_filings for that.

Args:
    identifier: Organisation/business/CVR number. Format varies by country:
                NO: 9-digit organisation number, e.g. 923609016 (Equinor)
                DK: 8-digit CVR number, e.g. 22756214 (Maersk)
                FI: Business ID with hyphen, e.g. 0112038-9 (Nokia)
    country:    Two-letter country code: 'NO' (default), 'DK', or 'FI'.

Returns:
    Dict with company name, status and registered business address.
    Returns {'error': '<message>'} if the company is not found, the identifier
    format is invalid, or the upstream registry API is unavailable.

Input parameters:

- `country` (string): Two-letter country code: NO (default), DK, or FI
- `identifier` (string, required): Organisation number (NO: 9 digits, DK: 8 digits CVR, FI: business ID with hyphen)

### `search_filings` (~970 tokens)

Search the Nordic financial database for company filings, press releases
and macroeconomic summaries.

Use this as the primary tool for any question about Nordic listed companies,
markets or macro conditions. Do not use to retrieve a full document — results
are chunked text excerpts; use parse_pdf_to_text for the full original document.
Do not use for Swedish company registration data — use get_company_info instead.

The database contains ~1 million vectors across four Nordic markets (NO/SE/DK/FI).

COMPANY FILINGS
  Annual reports (XBRL/ESEF) and quarterly reports from ~1 500 listed companies
  across Oslo Børs, Nasdaq Stockholm, Nasdaq Helsinki, Nasdaq Copenhagen and
  First North markets. Covers 2020–present. Strong coverage for NO and SE;
  growing coverage for DK and FI.

EXCHANGE ANNOUNCEMENTS & PRESS RELEASES
  Regulatory filings, exchange announcements and press releases from listed
  companies in NO, SE, DK and FI. Covers 2020–present.

MACROECONOMIC SUMMARIES
  Quarterly macro summaries covering key indicators per country:
    Norway (NO):  policy rate, FX rates, CPI, house prices, credit growth,
                  electricity price, salmon price, GDP components
    Sweden (SE):  policy rate, house price index, household credit
    Denmark (DK): policy rate, house price index, household loans,
                  electricity price
    Finland (FI): house price index, household debt-to-income ratio,
                  electricity price
  Use report_type='macro_summary' and country='NO'/'SE'/'DK'/'FI' to filter.
  Use fiscal_year and a quarter reference in your query, e.g.
  "Norwegian housing market Q1 2024".

Args:
    query:       What you are looking for, e.g. 'net interest margin outlook',
                 'salmon price Q3', 'dividend policy', 'fleet utilization',
                 'Norwegian housing market 2024 Q1',
                 'Swedish policy rate inflation 2023'
    ticker:      Optional — filter by company ticker, e.g. 'SALM', 'EQNR', 'NDA'
    fis…

Input parameters:

- `country` (string): Filter by country: NO, SE, DK, or FI
- `fast` (boolean): Skip reranking and return results ranked by hybrid score only. Faster but less precise.
- `fiscal_year` (integer): Filter by fiscal year, e.g. 2024. Use 0 for no filter
- `limit` (integer): Number of results to return (1–20)
- `max_chunk_index` (integer): Only return chunks with chunk_index <= this value. Use 3 to target introductory sections of long documents. Use 0 for no filter.
- `query` (string, required): Natural language search query, e.g. 'Equinor dividend 2024' or 'Norwegian housing market Q3'
- `report_type` (string): Filter by type: annual_report, quarterly_report, press_release, exchange_announcement, macro_summary
- `sector` (string): Filter by sector, e.g. 'energy', 'financials', 'salmon'
- `source` (string): Filter by data source, e.g. 'xbrl_esef', 'newsweb', 'mfn_nordics', 'nasdaq_se'
- `ticker` (string): Filter by company ticker, e.g. 'EQNR', 'SALM', 'NDA'

Output parameters:

- `result` (array)

### `parse_pdf_to_text` (~240 tokens)

Download a PDF from a URL and extract all text content, page by page.

Use this to read the full text of a specific document — for example, an annual
report PDF linked from a search_filings result. Best combined with search_filings:
use search_filings to locate the document, then parse_pdf_to_text for the full text.
Do not use for PDFs that are already well-represented in the database — search_filings
is faster and returns pre-ranked, relevant excerpts.
Not suitable for scanned (image-only) PDFs without embedded text; those pages
will be returned as "(no extractable text)".

Args:
    pdf_url: Direct HTTPS URL to the PDF file, e.g. https://example.com/report.pdf.
             Must be publicly accessible; authentication-protected URLs will fail.

Returns:
    All text from the PDF with "--- Page N ---" separators between pages.
    Returns an error string if the download fails, the URL does not point to a
    valid PDF, or the document exceeds the 60-second download timeout.

Input parameters:

- `pdf_url` (string, required): Direct HTTPS URL to the PDF file

Output parameters:

- `result` (string)

### `get_current_power_price` (~366 tokens)

Fetch today's hourly day-ahead electricity spot prices for a Nordic bidding zone.

Use this for current and near-term (today/tomorrow) price queries. Do not use
for historical price analysis — use search_filings with report_type='macro_summary'
and a date reference in the query for that purpose.
Tomorrow's prices are published by NordPool around 13:00 CET; requests before
that time will return "not yet available" for the tomorrow field.

All zones return prices in EUR/kWh (NordPool day-ahead, native currency).
Norwegian zones (NO1–NO5) use hvakosterstrommen.no; all other zones use ENTSO-E.

Args:
    zone:             Bidding zone code. Options:
                      NO1 (East/Oslo), NO2 (Southwest), NO3 (Central/Trondheim),
                      NO4 (North), NO5 (West/Bergen),
                      SE1–SE4, DK1, DK2, FI.
    include_tomorrow: Set to True to also fetch tomorrow's hourly prices if
                      already published (default False).

Returns:
    Dict containing zone, date, current_hour_utc, current price, and a 'today'
    summary with min/max/avg and the full hourly list. Includes a 'tomorrow'
    key if include_tomorrow=True. Returns {'error': '<message>'} if price data
    is unavailable for the requested zone or date.

Input parameters:

- `include_tomorrow` (boolean): Also fetch tomorrow's prices if available (published after 13:00 CET)
- `zone` (string): Bidding zone: NO1–NO5, SE1–SE4, DK1, DK2, or FI

### `company_research` (~528 tokens)

Run multiple targeted searches and return raw results grouped by section.

The caller defines all sections and queries — this tool does not decide what is
relevant. Before calling, reason about which topics and data sources matter for
this specific company: financial metrics, risk factors, sector-specific macro
drivers (e.g. freight rates for shipping, power prices for aluminium smelters),
recent press releases, peer context, etc. Formulate one query per section.

Each query is run independently as a full hybrid search (dense + sparse + rerank).
Results are raw chunks — the caller is responsible for synthesis.

For a fully orchestrated due diligence report (AI-planned sections, synthesized
narrative), use the Alfred MCP server instead: alfred.aidatanorge.no/mcp

IMPORTANT — use 'ticker' on company-specific sections to avoid false positives.
Without a ticker filter, documents that merely mention the company (e.g. as a
customer or competitor) can rank above actual filings from that company. Omit
'ticker' only for sections where cross-company results are intentional, such as
sector macro context or peer comparisons.

Args:
    company:  Company name, used for metadata only (not a filter).
    sections: Up to 8 sections. Example:
              [
                {"name": "financials", "query": "Equinor revenue EBITDA operating profit 2024", "ticker": "EQNR"},
                {"name": "risk",       "query": "Equinor climate regulatory risk stranded assets", "ticker": "EQNR"},
                {"name": "macro",      "query": "Brent crude oil price energy sector Norway 2024", "limit": 3},
                {"name": "news",       "query": "Equinor press release dividend acquisition 2024", "ticker": "EQNR"}
              ]

Returns:
    Dict with 'company', 'generated_at', and 'sections' — one entry per requested
    section with its name and results (same format as search_filings).
    Sections with no results return an empty list.

Input parameters:

- `company` (string, required): Company name to research, e.g. 'Equinor', 'Norsk Hydro', 'Aker BP'
- `sections` (array, required): List of section dicts. Each must have 'name' (str) and 'query' (str). Optional: 'ticker' (str, filters results to that company), 'limit' (int, default 5, max 10). Maximum 8 sections.

### `analyze_company` (~251 tokens)

AI-powered company analysis using semantic search over Nordic financial data.

Orchestrates multiple searches internally and returns a synthesized narrative
answer with source citations. Covers annual reports, quarterly reports, press
releases and macroeconomic context for Nordic listed companies.

Use this when you want a synthesized answer rather than raw search chunks.
For raw data access, use search_filings or company_research instead.
For a full due diligence report with AI-planned sections, use the Alfred MCP
server: alfred.aidatanorge.no/mcp

Args:
    company: Company name or ticker
    question: What you want to know about the company
    model: 'haiku' (default) or 'sonnet'

Input parameters:

- `company` (string, required): Company name or ticker, e.g. 'Equinor' or 'EQNR'
- `model` (string): Model: 'haiku' (default, fast, ~$0.07/call) or 'sonnet' (more capable, ~$0.24/call)
- `question` (string, required): Question to answer, e.g. 'How did margins develop 2022-2024?' or 'What are the main risk factors?'

Output parameters:

- `result` (string)

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/aidatanordic-nordic-financial-mcp/mcp#diagnostics

## Score history

- 2026-08-03: 62
- 2026-08-02: 62
- 2026-08-01: 61
- 2026-07-31: 61
- 2026-07-30: 12
- 2026-07-29: 62
- 2026-07-28: 62
- 2026-07-27: 61
- 2026-07-26: 60

## Links

- Remote endpoint: https://mcp.aidatanorge.no/mcp
- Repository: https://github.com/AIDataNordic/nordic_financial_mcp
- Changelog RSS feed: https://verifymcp.io/servers/aidatanordic-nordic-financial-mcp/mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/aidatanordic-nordic-financial-mcp/mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/aidatanordic-nordic-financial-mcp/mcp
