Norric

Official registry Health

Swedish B2B intelligence for AI agents: insolvency risk, procurement, BRF health and more.

Install

Add this to your client's MCP configuration (Claude Desktop: claude_desktop_config.json; Cursor: .cursor/mcp.json; VS Code and others use the same "mcpServers" shape).

Remote (streamable-http)
Claude Code
claude mcp add --transport http norric 'https://mcp.norric.io/mcp'
JSON configuration (Claude Desktop, Cursor, VS Code)
{
    "mcpServers": {
        "norric": {
            "type": "http",
            "url": "https://mcp.norric.io/mcp"
        }
    }
}

Documentation

From the project's README on GitHub, refreshed weekly. Links open on GitHub.

Contents
  1. Norric Intelligence MCP Server
  2. Authentication
  3. Pricing
  4. Connect
  5. Tools
  6. Response envelope
  7. Two-step handshake
  8. Current status
  9. Deploy to Railway
  10. Registry
  11. Norric · Solo founder · Edgar Mutebi · Malmö · 2026

Norric Intelligence MCP Server

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 Functions: 25 registered functions; availability varies by function


Authentication

Every request to /mcp requires an API key — including the initialize handshake. Anonymous discovery is not supported.

Send the key in one of two headers (server accepts both; Authorization wins when both are present):

X-Norric-Key:  <key>
Authorization: Bearer <key>

Working curl against the initialize endpoint:

curl -si https://mcp.norric.io/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "X-Norric-Key: nrc_your_api_key" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize",
       "params":{"protocolVersion":"2025-03-26","capabilities":{},
                 "clientInfo":{"name":"my-client","version":"1"}}}'
# → HTTP/1.1 200 OK
# → mcp-session-id: <id>     (use this header on subsequent calls in the session)

Missing key returns 401 {"error": "Missing API key…"}. Wrong key returns 401 {"error": "Invalid API key…"}.

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


Pricing

TierToolsDaily limitPrice
Freenorric_status_v1 only10 calls/month; 5/minuteFree
StandardAll registered toolsNo monthly cap in current backend policyContact
ComplianceStandard + audit-log accessNo monthly cap in current backend policyContact

Standard and Compliance tiers are issued direct — email edgar@norric.io for qualification, pricing, and ToS. Public self-serve for paid tiers is paused pending kreditupplysningslagen (KuL) review for the Kreditvakt offering.


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 (registered, inactive)
ToolDescription
signal_score_municipality_v1Placeholder score; pipeline not connected
signal_weekly_call_list_v1Empty list until a live source is connected
signal_municipality_briefing_v1Empty briefing; ingestion not live
signal_contract_expiry_alerts_v1No results; contract database not connected
signal_sweden_pulse_v1Placeholder value; ingestion not live
Norric Kreditvakt — Insolvency intelligence
ToolDescription
kreditvakt_score_company_v1risk_score 0–20 + risk_band (1–5) + risk_tier (HEALTHY…CRITICAL)
kreditvakt_batch_score_v1Portfolio scoring, max 500 orgnrs
kreditvakt_debt_signals_v1Skatteverket restanslängd data
kreditvakt_bankruptcy_status_v1Bolagsverket konkurs status
kreditvakt_contagion_v1Ownership-network contagion signals
Registry verification & changes — Sweden + Denmark (paid, x402)
ToolDescription
swedish_company_verify_v1Verify a Swedish company: identity, legal status, insolvency flags, cited evidence
swedish_company_changes_v1Source-backed Swedish registry changes, 1–30 day window
danish_company_verify_v1Verify a Danish company against CVR: identity (virksomhedsform, address, industry), legal status, cited evidence
danish_company_changes_v1Source-backed Danish CVR registry changes, 1–30 day window
norwegian_company_verify_v1Verify a Norwegian organisation against Brønnøysund Enhetsregisteret
norwegian_company_changes_v1Source-backed Norwegian registry changes, 1–30 day window
finnish_company_verify_v1Verify a Finnish company against official PRH/YTJ open data
finnish_company_changes_v1Source-backed Finnish PRH/YTJ snapshot changes, 1–30 day window

Paid per call over x402 (Base Sepolia testnet USDC): verify tools $0.002, changes tools $0.02. Anonymous wallet-only access, no account or API key. HTTP mirrors: /x402/company/* (Sweden), /x402/dk/company/* (Denmark), /x402/no/company/* (Norway), /x402/fi/company/* (Finland). Danish pipeline: docs/denmark-cvr.md. Norwegian pipeline: docs/norway-brreg.md.

Norric Vigil — Company lifecycle detection (registered, inactive)
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 (registered, inactive)
ToolDescription
siteloop_pipeline_status_v1Funnel status by city
siteloop_submit_lead_v1Inject lead into pipeline (Vigil integration point)
Sigvik — BRF property intelligence (partial)
ToolDescription
sigvik_score_brf_v1BRF financial health score
sigvik_brf_avgift_v1Empty data; avgift pipeline not connected
sigvik_brf_flags_v1Empty data; flag pipeline not connected
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
norric_score_v1Consolidated company risk score
norric_search_v1Company search by name or orgnr
norric_contagion_map_v1Ownership-network contagion view

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 (auth required)
SESSION=$(curl -si \
  -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" \
  -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

All functions are registered and callable for authorized tiers, but availability varies. Kreditvakt and the main Sigvik score are live; SIGNAL, Vigil, SiteLoop, Sigvik avgift, and Sigvik flags return empty or placeholder data until their pipelines are connected.

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 · Solo founder · Edgar Mutebi · Malmö · 2026

Frequently asked questions

What is Norric?

Swedish B2B intelligence for AI agents: insolvency risk, procurement, BRF health and more.

How do I install Norric?

It runs as a remote server. In Claude Code: claude mcp add --transport http norric 'https://mcp.norric.io/mcp'. For other clients, paste the JSON configuration from this page into their MCP settings.

Does Norric need an API key?

Its registry entry lists no required key or secret. Some features may still need an account with the service it connects to.

Is Norric open source?

Its code is public on GitHub, but the repository does not declare a standard license.

Who maintains Norric?

It is published by gucceed. AI.tn lists it but does not maintain or endorse it.

From the official MCP Registry. Listing is not an endorsement: review a server's code and permissions before giving it access to your data.