MCP Hub
Back to servers

Norric

Swedish B2B intelligence: insolvency risk, BRF health & procurement signals from govt registries.

Registry
Updated
May 8, 2026

Norric Intelligence MCP Server

MCP

Sweden's B2B intelligence infrastructure — exposed as a single MCP server.

Products: Norric SIGNAL · Norric Kreditvakt · Norric Vigil · SiteLoop · Sigvik Framework: FastMCP 3.2.3 · Streamable HTTP transport Tools: 21 tools across 5 products


Authentication

Every tool call requires an API key. The initialize handshake is open (no key needed for that step).

# Option 1 — Authorization header
Authorization: Bearer nrc_your_api_key

# Option 2 — Norric header
X-Norric-Key: nrc_your_api_key

Get a key: https://norric.io/api


Pricing

TierToolsDaily limitPrice
Freenorric_status_v1, norric_explain_score_v1, norric_data_freshness_v1100 calls/dayFree
StandardAll 21 tools10,000 calls/day2,900 SEK/month
ComplianceAll 21 tools + audit rightsUnlimited9,900 SEK/month

Annual plans: Standard 29,000 SEK/year · Compliance 99,000 SEK/year


Connect

Claude Code (CLI)

claude mcp add norric https://mcp.norric.io/mcp \
  --header "Authorization: Bearer nrc_your_api_key"

Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json)

{
  "mcpServers": {
    "norric": {
      "url": "https://mcp.norric.io/mcp",
      "transport": "streamable-http",
      "headers": {
        "Authorization": "Bearer nrc_your_api_key"
      }
    }
  }
}

Cursor / Windsurf (.cursor/mcp.json)

{
  "mcpServers": {
    "norric": {
      "url": "https://mcp.norric.io/mcp",
      "headers": {
        "Authorization": "Bearer nrc_your_api_key"
      }
    }
  }
}

Local development

python server.py
# Server starts at http://localhost:8080/mcp
claude mcp add norric http://localhost:8080/mcp \
  --header "Authorization: Bearer nrc_your_api_key"

Tools

Norric SIGNAL — Municipal procurement intelligence

ToolDescription
signal_score_municipality_v1Score a municipality × vertical 0-100
signal_weekly_call_list_v1Monday call list, ranked by score
signal_municipality_briefing_v1Full Swedish call briefing
signal_contract_expiry_alerts_v1Expiring contracts = displacement windows
signal_sweden_pulse_v1National procurement temperature

Norric Kreditvakt — Insolvency intelligence

ToolDescription
kreditvakt_score_company_v10-100 insolvency score, 9-month accuracy
kreditvakt_batch_score_v1Portfolio scoring, max 500 orgnrs
kreditvakt_debt_signals_v1Skatteverket restanslängd data
kreditvakt_bankruptcy_status_v1Bolagsverket konkurs status

Norric Vigil — Company lifecycle detection

ToolDescription
vigil_lifecycle_stage_v1early / growth / scaling / distress
vigil_new_companies_v1New F-skatt registrations by municipality
vigil_ownership_velocity_v1Ownership change rate (distress signal)

SiteLoop — Website pipeline

ToolDescription
siteloop_pipeline_status_v1Funnel status by city
siteloop_submit_lead_v1Inject lead into pipeline (Vigil integration point)

Sigvik — BRF property intelligence

ToolDescription
sigvik_score_brf_v1BRF financial health score
sigvik_brf_avgift_v1Monthly fee history and trend
sigvik_brf_flags_v1Renovation risk, energy class deadline flags

Cross-portfolio

ToolDescription
norric_company_profile_v1Unified profile: Kreditvakt + Vigil in one call
norric_status_v1Live status of all products and data pipelines
norric_explain_score_v1EU AI Act provenance chain for any score
norric_data_freshness_v1Data freshness per source registry

Response envelope

Every tool returns the same structure:

{
  "data": { ... },
  "metadata": {
    "response_id": "nrsp_abc123",
    "tool": "tool_name_v1",
    "source": ["skatteverket", "bolagsverket"],
    "fetched_at": "2026-04-26T10:00:00Z",
    "confidence": 0.91,
    "cache_ttl_seconds": 3600
  },
  "signals": [
    {
      "key": "skuld_published",
      "label": "Skatteskuld publicerad",
      "value": true,
      "weight": 0.45,
      "direction": "risk",
      "source": "skatteverket"
    }
  ],
  "warnings": []
}

metadata.confidence (0-1): how much to trust the data metadata.cache_ttl_seconds: how long before re-fetching signals[]: always present, empty list if not applicable


Two-step handshake

MCP requires initializing a session before calling tools:

# Step 1: Initialize (no auth required)
SESSION=$(curl -si \
  -X POST https://mcp.norric.io/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1"}}}' \
  | grep -i "mcp-session-id" | awk '{print $2}' | tr -d '\r')

# Step 2: Call a tool (auth required)
curl -s -X POST https://mcp.norric.io/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "Authorization: Bearer nrc_your_api_key" \
  -H "mcp-session-id: $SESSION" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"norric_status_v1","arguments":{}}}'

Current status

Tools are live and callable. Ingestion pipelines are the next build step — connect each product's data source to activate live scoring.

Check live status: call norric_status_v1.


Deploy to Railway

# MCP server service (existing — daring-adaptation or similar):
# Start command: python server.py
# Env vars:
#   PORT=8080
#   NORRIC_API_KEYS=<hash:tier:label lines>
#   SUPABASE_URL=<your supabase url>
#   SUPABASE_KEY=<your supabase anon key>

# Key issuance service (separate Railway service):
# Start command: uvicorn issuance.main:app --host 0.0.0.0 --port $PORT
# Env vars: STRIPE_SECRET_KEY, STRIPE_WEBHOOK_SECRET, STRIPE_PRICE_*,
#           SENDGRID_API_KEY, RAILWAY_API_TOKEN, RAILWAY_SERVICE_ID

Registry

  • mcp.so listing: registry/mcpso_listing.md
  • Anthropic connector directory: registry/anthropic_connector_submission.md

Norric AB · Malmö · 2026

Reviews

No reviews yet

Sign in to write a review