@heibergindustries/orakel-mcp
v1.4.1
Published
MCP server for Orakel — Norwegian company data, financials, and prospecting tools for Claude Code, Claude Desktop & Gemini CLI
Maintainers
Readme
@heibergindustries/orakel-mcp
MCP server for Orakel — Nordic company data (Norway + Finland + Sweden), financials, ownership, procurement, market context, and prospecting tools. Works with Claude Code, Claude Desktop, and Gemini CLI.
Supported Countries
| Country | Company data | Financials | Roles/Board | |---------|-------------|-----------|-------------| | Norway (NO) | Full Brreg registry (~1.16M companies) | Full Regnskapsregisteret XBRL | Full Brreg roles | | Finland (FI) | YTJ v3 PRH registry | Best-effort plain XBRL (~30K digital filers) | Not available (paid Virre only) | | Sweden (SE) | Full Bolagsverket + SCB bulk (~2.8M companies) — firmographics + NACE | Bolagsverket HVD iXBRL (K2/K3, 2020+, SMEs mainly — large listed companies often absent) | Not available (requires separate Företagsinformation credential) |
Pass country=FI or country=SE on any lookup_company, search_companies, or get_financials call to query Finnish or Swedish companies. Finnish business IDs use the format NNNNNNN-N (e.g., 0112038-9 for Nokia Oyj). Swedish organisationsnummer are 10 digits (e.g., 5560125790 for Volvo AB).
Denmark (DK) is planned. Follow orakel.cloud for updates.
Get Access
Self-service free-tier signup + higher-tier requests: orakel.cloud
Quick Start
ORAKEL_API_KEY=orakel_YOUR_KEY npx -y @heibergindustries/orakel-mcpSetup — Claude Code
Add to ~/.claude/settings.json:
{
"mcpServers": {
"orakel": {
"command": "npx",
"args": ["-y", "@heibergindustries/orakel-mcp@latest"],
"env": {
"ORAKEL_API_KEY": "orakel_YOUR_KEY"
}
}
}
}Setup — Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"orakel": {
"command": "npx",
"args": ["-y", "@heibergindustries/orakel-mcp@latest"],
"env": {
"ORAKEL_API_KEY": "orakel_YOUR_KEY"
}
}
}
}Setup — Gemini CLI
Add to your Gemini CLI MCP config:
{
"mcpServers": {
"orakel": {
"command": "npx",
"args": ["-y", "@heibergindustries/orakel-mcp@latest"],
"env": {
"ORAKEL_API_KEY": "orakel_YOUR_KEY"
}
}
}
}One-click connect (OAuth)
If you have an Orakel account and your AI host supports OAuth 2.1 — Claude.ai, ChatGPT, Gemini web — you can authorise Orakel in one click. No config file to edit, no API key to paste.
- Open your AI host's MCP or integrations settings
- Search for Orakel, or point it at
https://orakel.cloud - Click Connect and enter the email address on your Orakel account
- Click the magic link in the email
- Review what access is being granted and click Approve
Orakel creates a dedicated API key for that AI host automatically. The host stores it; you never handle it directly. Recommended for Claude.ai and ChatGPT web users.
OAuth discovery document: https://orakel.cloud/.well-known/oauth-authorization-server
HTTP Transport (no npm install)
If your client speaks MCP Streamable HTTP (ChatGPT Desktop, any HTTP agent, web apps), skip the npm package entirely and POST directly to:
https://orakel.cloud/api/mcp
Authorization: Bearer orakel_YOUR_KEYStateless — every request is independent. Tier rate limits and daily/monthly quotas apply exactly as they do on the REST endpoints, so budget calls accordingly.
ChatGPT Desktop config example:
{
"mcpServers": {
"orakel": {
"url": "https://orakel.cloud/api/mcp",
"headers": { "Authorization": "Bearer orakel_YOUR_KEY" }
}
}
}Tiers & Rate Limits
Your API key is associated with one of four tiers. Each tier caps requests-per-minute, daily/monthly quotas, and page sizes. Rate-limit responses (HTTP 429) include a Retry-After header.
| Tier | Rate/min | Daily | Monthly | Max page | Push | Filter required | |------|----------|-------|---------|----------|------|-----------------| | free | 20 | 500 | 5,000 | 20 | ✗ | yes | | pro | 60 | 5,000 | 50,000 | 100 | ✓ | no | | enterprise | 120 | unlimited | unlimited | 100 | ✓ | no |
"Filter required" means free-tier search requests must include at least one filter (q, nace, county, municipality, employees, revenue, etc.). Prevents bulk-scraping the whole registry.
Check your current usage from an MCP tool or directly:
curl -H "Authorization: Bearer $ORAKEL_API_KEY" https://orakel.cloud/api/keys/usageAvailable Tools
| Tool | Description |
|------|-------------|
| lookup_company | Look up a company by org number |
| search_companies | Search by name, NACE, municipality, county, employees, revenue, tech stack, ad pixels |
| get_financials | Get financial data (revenue, profit, assets, equity, debt, ratios) |
| find_prospects | Find prospects by industry, location, size — formatted for sales |
| get_corporate_group | Get parent company + subsidiaries hierarchy |
| get_shareholders | Get shareholder register with ownership percentages |
| get_ownership_network | Reverse lookup: what does a company/person own? |
| get_market_context | SSB aggregate context — municipality population, industry wage, enterprise density |
| list_municipalities | List Norwegian municipalities and county codes |
| search_inspections | Search Mattilsynet food safety inspections (smilefjes) |
| search_licenses | Search alcohol/tobacco licenses (TBR) |
| search_procurement | Search public procurement notices (Doffin) |
| enrichment_status | View domain enrichment pipeline results |
| push_to_destination | Push companies to CRM (Attio, HubSpot, webhooks) |
| list_destinations | List configured push destinations |
| manage_destination | Create/update/delete push destinations |
| check_health | Check API health, database status, sync progress |
Skills (Guided Workflows)
Five guided workflows ship embedded in the server and surface through MCP's prompts capability — any client that speaks the prompts spec (Claude Code, Claude Desktop, Cursor, Gemini CLI) picks them up automatically. No filesystem copy needed.
| Skill | Use when |
|-------|----------|
| prospect | Find and qualify Nordic prospects by industry, location, size |
| company-deep-dive | Research a single NO/FI/SE company in depth |
| market-scan | Analyze a Nordic market segment — size, players, regulatory |
| ownership-map | Trace ownership networks (NO + FI; SE shareholders not available) |
| push-to-crm | Export to Attio / HubSpot / webhook destinations |
In Claude Code you can invoke a skill with /prospect, /company-deep-dive, etc. Other clients expose them via their prompt picker.
Environment Variables
| Variable | Default | Description |
|----------|---------|-------------|
| ORAKEL_API_KEY | (required) | Your Orakel API key |
| ORAKEL_URL | https://orakel.cloud | API base URL (override for local dev) |
Examples
Once configured, ask from any project:
- "Look up Equinor" →
lookup_company - "Find 15 bars in Oslo with over 10M revenue" →
find_prospects - "What companies does Aker own?" →
get_ownership_network - "Show me IT consulting companies in Bergen" →
search_companies - "What's the market context for this municipality?" →
get_market_context - "Push these prospects to my CRM" →
push_to_destination
Data Sources & Licence
Norwegian data is sourced from public registries under NLOD 2.0 (Norwegian Licence for Open Government Data). Finnish data is sourced from PRH open data under the CC BY 4.0 licence.
- Brønnøysundregistrene — Norwegian company register, roles, financials
- PRH/YTJ v3 — Finnish company register (free open API)
- XBRL financial filings — Finnish annual report data (~30K digital filers)
- Mattilsynet — Food safety inspections (Smilefjes)
- Helsedirektoratet — Alcohol/tobacco licenses (TBR)
- Doffin — Public procurement notices
- Aksjonærregisteret — Shareholder data
- SSB — Municipality reference data + aggregate context statistics
- NORID — Domain verification
Every API response includes X-Data-Source and X-Data-License headers so downstream consumers can comply with NLOD attribution transitively.
Deployment
Orakel is hosted on EU-sovereign infrastructure (Hetzner Helsinki). All data processing, storage, and email delivery stays within the EU — no US cloud providers.
License
MIT (this package). Data is NLOD 2.0 — attribute when redistributing.
