Canonical
MCP tools
All 18 tools Orakel exposes over MCP — stdio and HTTP transports share the same catalog.
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.
Company lookup and search
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,countryNamevia 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_companyon rows that need full enrichment. Passcompact=falseto 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 atGET /api/companiesdefaults 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_companiesdefaults; no explicitcountryparameter on this tool) - Input:
nace,county,municipality,minEmployees,maxEmployees,minRevenue,maxRevenue,compact,limit - Returns: same shape as
search_companies— slim rows by default, passcompact=falsefor 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).grossMarginandebitdarequirevarekostnad/avskrivningto be present; they arenullfor 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; defaultfalse) - 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_companyreturns 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, orinternal.freecannot 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.
Related
- 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.