Nordic Financial MCP
by AIDataNordic · remote · no sign-in to list tools · v1.1.0 · published by GitHub user AIDataNordic
Semantic search over Nordic filings, press releases, macro data and electricity prices.
7 tools: 2 change things and 5 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone0Claude Code: ask
- Changes things2Claude Code: ask: see these tools
- Only reads5Claude Code: allow: see these tools
2 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http nordic-financial https://mcp.aidatanorge.no/mcpFindings
Matches of fixed checks, with the text they matched.
- Warncompany_research
The server marks "company_research" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"openWorldHint":false}; The description's first verb is "run": a word for a change.
- Infosearch_filings
The description is 3,110 characters long, over the 2,000 this check looks for.
What this check looks forMatched text
description ends: "...evant results are found or if the Qdrant database is temporarily unreachable."
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
7 tools
Changes things 2Claude Code: ask
company_researchRun multiple targeted searches and return raw results grouped by section.1 finding
Why it is in this group
- The description's first verb is "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "company_research" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"openWorldHint":false}; The description's first verb is "run": a word for a change.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
parse_pdf_to_textDownload a PDF from a URL and extract all text content, page by page.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
Only reads 5Claude Code: allow
analyze_companyAI-powered company analysis using semantic search over Nordic financial data.No findings
Why it is in this group
- The name "analyze_company" says "analyze": a word for reading.
Description, as the server wrote it 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
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
get_company_infoLook up a company in the official business registry for Norway, Denmark or Finland.No findings
Why it is in this group
- The name "get_company_info" says "get": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
get_current_power_priceFetch today's hourly day-ahead electricity spot prices for a Nordic bidding zone.No findings
Why it is in this group
- The name "get_current_power_price" says "get": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
pingConnectivity check that confirms the Nordic MCP server process is responding.No findings
Why it is in this group
- The name "ping" says "ping": a word for reading.
Description, as the server wrote it 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."
Annotations the server declares
- readOnlyHint: true
search_filingsSearch the Nordic financial database for company filings, press releases and macroeconomic summaries.1 finding
Why it is in this group
- The name "search_filings" says "search": a word for reading.
Findings
- Info
The description is 3,110 characters long, over the 2,000 this check looks for.
What this check looks forMatched text
description ends: "...evant results are found or if the Qdrant database is temporarily unreachable."
Description, as the server wrote it 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' fiscal_year: Optional — filter by year, e.g. 2024 report_type: Optional — one of: 'annual_report' – Nordic XBRL/ESEF annual reports 'quarterly_report' – Quarterly/interim reports 'press_release' – Exchange announcements and press releases 'macro_summary' – Quarterly macroeconomic summaries sector: Optional — filter by sector: 'seafood' – seafood companies 'energy' – energy / oil & gas 'shipping' – shipping companies country: Optional — filter by country code: 'NO', 'SE', 'DK' or 'FI' limit: Number of results after reranking (default 5, max 20) Returns: List of relevant text excerpts with metadata, reranked by relevance. Each result includes rerank_score, hybrid_score, vector_score, company, ticker, country, fiscal_year, report_type, period, filing_date and the full text chunk. Returns an empty list if no relevant results are found or if the Qdrant database is temporarily unreachable.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.1.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http nordic-financial https://mcp.aidatanorge.no/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__nordic-financial__ping",
"mcp__nordic-financial__get_company_info",
"mcp__nordic-financial__search_filings",
"mcp__nordic-financial__get_current_power_price",
"mcp__nordic-financial__analyze_company"
],
"ask": [
"mcp__nordic-financial__parse_pdf_to_text",
"mcp__nordic-financial__company_research"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as nordic-financial. Review it before you use it.
