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.
Company lookup and search
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,countryNamevia 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_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.
find_prospects
Thin wrapper over search_companies that returns sales-friendly fields, pre-sorted by size.
- Countries: NO, FI, SE, DK (
countryparameter, defaults to NO) - 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), 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).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: 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; 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 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
jobCategoryvalues for use withfind_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_reviewby 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_companyreturns 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, 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). 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.