Orakel-dokumentasjon
MCP

MCP tools

All Orakel tools exposed over MCP - stdio and HTTP transports share the same catalog.

Denne siden finnes foreløpig bare på engelsk.

Both transports - stdio via @heibergindustries/orakel-mcp and HTTP at POST /api/mcp - expose the same tool catalog. Tool descriptions are authoritative at call time; this page mirrors them.

Country support

CountryCode is "NO" | "FI" | "SE" | "DK". Most multi-country tools accept a country parameter that defaults to "NO". get_shareholders, get_ownership_network, and get_corporate_group are NO only - Swedish shareholder data requires a separate paid credential, Danish beneficial ownership requires a 6AMLD legitimate-interest justification, and Finnish shareholder data is not available via the public PRH API. See limitations and the paid-data policy.

lookup_company

Fetch a single company record with financials, roles, sub-units, and Klass labels.

  • Countries: NO, FI, SE, DK
  • Input: orgNumber (9 digits NO, 7-digit+dash FI, 10 digits SE, 8 digits DK CVR-nummer), country
  • Returns: full company record with embedded financials, roles (NO + DK), sub-units, enrichment fields, plus naceName, orgFormName, countryName via SSB Klass.

search_companies

Filter the Nordic company universe by name, industry, location, size, financials, technologies, and more.

  • Countries: NO, FI, SE, DK
  • Input: country, query, nace, orgForm, county (NO), municipality (NO), minEmployees, maxEmployees, minRevenue, maxRevenue, isBankrupt, isInGroup, hasParent, hasTechnology, hasAnyAdPixel, compact, sort, order, limit
  • Returns: paginated slim rows by default - orgNumber, name, naceCode/Name, orgFormCode/Name, employeeCount, latestRevenueNOK, country, municipality, county, status flags, primaryDomain. Designed for scanning large result sets; call lookup_company on rows that need full enrichment. Pass compact=false to get full rows including 2 latest financials, active roles, and per-field source attribution - only use when the workflow needs every row enriched and the result set is small (≤20). The REST API at GET /api/companies defaults to full rows for backwards compatibility - only the MCP tool defaults to compact.

find_prospects

Thin wrapper over search_companies that returns sales-friendly fields, pre-sorted by size.

  • Countries: NO, FI, SE, DK (country parameter, defaults to NO)
  • Input: nace, county, municipality, minEmployees, maxEmployees, minRevenue, maxRevenue, compact, limit
  • Returns: same shape as search_companies - slim rows by default, pass compact=false for full rows.

Company extras

get_financials

All financial filings Orakel has stored for a single company, newest first.

  • Countries: NO (Regnskapsregisteret; multi-year history available - see source notes), FI (best-effort via PRH/YTJ; ~30K digital filers), SE (Bolagsverket iXBRL K2/K3 filings FY 2020+; SMEs mainly), DK (plain-XBRL annual financials via CVR; 7 of 9 fields populate)
  • Input: orgNumber, country
  • Returns: an array of financial records with computed ratios (profitMargin, operatingMargin, returnOnEquity, equityRatio, grossMargin, ebitda, revenueGrowthYoY). grossMargin and ebitda require varekostnad/avskrivning to be present; they are null for filings where those fields are absent.

fetch_financial_history

Explicitly pull up to 5 years of income-statement history for a Norwegian company. Blocks until all available years are processed (~30–90 s on first call depending on filing count). Subsequent calls return immediately if data is already present.

  • Countries: NO only
  • Requires: active API key (enabled by default; contact support only if you receive a 403)
  • Input: orgNumber (9-digit NO)
  • Returns: { syncResult: { extracted, skipped, years, errors }, financials[] }

get_corporate_group

Parent and subsidiary tree for a company.

  • Countries: NO only
  • Input: orgNumber, country
  • Returns: corporate-group hierarchy.

get_shareholders

Shareholder register with computed ownership percentages.

  • Countries: NO only (Aksjonærregisteret). Swedish data requires a paid credential; Danish requires a 6AMLD justification; Finnish is unavailable via the public PRH API.
  • Input: orgNumber, country, year (optional), includePersons (optional; default false)
  • Returns: shareholders and ownership shares. Personal shareholders are hidden unless includePersons=true.

get_ownership_network

Reverse lookup - list companies owned by a specific entity.

  • Countries: NO only (same reason as get_shareholders).
  • Input: shareholderOrgNumber, country, year (optional)
  • Returns: companies where the given org number appears as a shareholder.

get_market_context

Aggregate market context for a company - municipality population and median household income, plus industry-level signals by NACE section (average monthly wage, enterprise density, startup survival rate). Sourced from each country's national statistics bureau: SSB (NO), DST (DK), StatFi (FI), SCB (SE).

  • Countries: NO, FI, SE, DK.
  • Input: orgNumber, country
  • Returns: { orgNumber, country, name, context }.

Reference data

list_municipalities

  • Countries: NO only
  • Input: county (optional, 2-digit)
  • Returns: Norwegian municipalities with codes and county codes. Use to find filter values for search_companies.

list_job_categories

  • Countries: NO only (Arbeidsplassen job postings)
  • Input: none
  • Returns: valid jobCategory values for use with find_prospects. Call this first so you pass an exact Norwegian occupation-category name.

get_valuation_estimate

Indicative valuation range based on latest financials and Damodaran industry multiples.

  • Countries: NO only
  • Input: orgNumber (9-digit NO)
  • Returns: EV/EBITDA, revenue multiple, and book-value estimates with a consensus range. Indicative only - not a formal valuation.

get_screening_results

Screen a company's directors and shareholders against PEP and international sanctions lists.

  • Countries: NO only
  • Input: orgNumber (9-digit NO)
  • Returns: any matches with match score and list source (EU, UN, OFAC, 200+ lists via OpenSanctions). Results carry status under_review by default - not automatically confirmed matches. First call blocks 30–60 s while screening runs; results are cached afterwards.

NO-only enrichment sources

search_inspections

Mattilsynet food-safety inspections (Smilefjes).

  • Countries: NO only - no Finnish or Swedish equivalent in Orakel.
  • Input: orgNumber, minRating, maxRating, postnr, fromDate, toDate, limit
  • Returns: inspection records with ratings (0 best, 3 worst).

search_licenses

Helsedirektoratet alcohol and tobacco licenses (TBR).

  • Countries: NO only.
  • Input: orgNumber, registerType, licenseTypeCode, municipalityNo, activeOnly, limit
  • Returns: license records.

search_procurement

Doffin public procurement notices.

  • Countries: NO only - HILMA (FI) and Upphandlingsmyndigheten (SE) are not integrated in Orakel.
  • Input: orgNumber, q, cpvCode, status, minValue, maxValue, deadlineAfter, limit
  • Returns: procurement notices.

Pipeline observability

enrichment_status

Domain enrichment pipeline results.

  • Countries: NO (enrichment pipeline is NO-scoped today)
  • Input: status (confirmed / ambiguous / rejected / pending), minConfidence, limit
  • Returns: confirmed, ambiguous, rejected, or pending domains with confidence scores.

check_health

  • Input: none
  • Returns: API health and database connectivity.

key_usage

Inspect the calling key's tier, rate limits, and current usage counters.

  • Input: none
  • Returns: tier, per-minute and daily and monthly limits, today and month counts.

Push

push_to_destination

Push a list of companies to a configured CRM destination.

  • Countries: all four. Destination receives whatever fields lookup_company returns for that country (so SE records won't carry role data; FI records won't carry roles; DK carries roles but not beneficial ownership).
  • Input: destinationName, orgNumbers (array of 9-digit org numbers)
  • Requires: a key tier with push access - pro, enterprise, or internal. free cannot push.
  • Returns: created / updated / failed counts.

list_destinations

  • Input: none
  • Returns: all configured push destinations.

Response shape notes

lookup_company and search_companies results include Klass labels alongside the raw codes: naceName (NACE description), orgFormName (org form description), countryName (country name). These let prompts render human-readable labels without a second lookup against SSB Klass.

  • MCP skills - the five guided workflows exposed as MCP prompts.
  • Quickstart - how to connect an MCP client.
  • API reference - the REST endpoints the tools call through to.