orakel
Docs navigation

Canonical

MCP tools

All 18 tools Orakel exposes over MCP — stdio and HTTP transports share the same catalog.

Updated 2026-04-25

Orakel exposes 18 tools over MCP. Both transports — stdio via @heibergindustries/orakel-mcp@1.4.0 and HTTP at POST /api/mcp — are backed by lib/mcp/register-tools.ts, so the catalog is identical. Tool descriptions are authoritative at call time; this page mirrors them.

Country support

CountryCode is "NO" | "FI" | "SE". Most multi-country tools accept a country parameter that defaults to "NO". Two tools explicitly reject SE — get_shareholders and get_ownership_network — because Swedish shareholder data sits behind Bolagsverket's paid «Företagsinformation» credential and Orakel has not applied for it. 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
  • Input: orgNumber (9 digits NO, 7-8 digits FI, 10 digits SE), country
  • Returns: full company record with embedded financials, roles (NO only), 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
  • 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. Added 2026-04-25 via MCP v1.4.0 (stdio) / v1.5.0 (HTTP).

find_prospects

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

  • Countries: default NO (inherits search_companies defaults; no explicit country parameter on this tool)
  • 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)
  • 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: PDF financial history enabled for the calling key (contact support)
  • Input: orgNumber (9-digit NO)
  • Returns: { syncResult: { extracted, skipped, years, errors }, financials[] }

get_corporate_group

Parent and subsidiary tree for a company.

  • Countries: NO, FI, SE (tree may be empty for FI/SE if the upstream registry doesn't expose the relation)
  • Input: orgNumber, country
  • Returns: corporate-group hierarchy.

get_shareholders

Shareholder register with computed ownership percentages.

  • Countries: NO (full parity via Aksjonærregisteret), FI (best-effort via PRH). Not supported for SE.
  • 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, FI. Not supported for SE (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 SSB market context for a Norwegian company — municipality population and median household income after tax, plus industry-level signals by NACE section (average monthly wage, enterprise density, 5-year startup survival rate, ICT-specialist employment share as a digital-maturity proxy).

  • Countries: NO only. Statistics Finland and SCB equivalents exist but are not integrated in Orakel yet.
  • Input: orgNumber (9-digit Norwegian)
  • Returns: { orgNumber, 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.

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 three. Destination receives whatever fields lookup_company returns for that country (so SE records won't carry shareholder or role data; FI records won't carry roles).
  • 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). Added 2026-04-21 via MCP v1.3.0. 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.