Norric MCP Server · v1.0

Swedish business intelligence
for humans and agents.

The Norric MCP server exposes Swedish economic intelligence — credit risk, procurement signals, BRF data, and company lifecycle signals — through a single Model Context Protocol endpoint. Built for Claude Code, Cursor, Windsurf, and any MCP-compatible agent runtime.

Base URL: https://norric-mcp-production.up.railway.app/mcp
Protocol: Streamable HTTP (MCP 2026 standard) · FastMCP 3.2.3
Tools: 19 live · 4 in development
Coverage: Sweden · expanding to Denmark + Norway (2027)
Post-AGI ready: Every tool returns a versioned NorricResponse envelope with confidence, ttl, suggested_action, and data_freshness_seconds — fields designed for autonomous agent decision loops, not just human dashboards.

Quickstart

1. Add to Claude Code (~/.claude.json)

{
  "mcpServers": {
    "norric": {
      "type": "http",
      "url": "https://norric-mcp-production.up.railway.app/mcp",
      "headers": {
        "X-Norric-Key": "nk_prod_signal_YOUR_KEY_HERE"
      }
    }
  }
}

2. Call your first tool

# Score a Swedish company for payment risk
curl -X POST https://norric-mcp-production.up.railway.app/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "X-Norric-Key: nk_prod_kreditvakt_YOUR_KEY" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
      "name": "kreditvakt_score_company_v1",
      "arguments": {
        "org_nr": "556714-7916",
        "include_graph": false
      }
    }
  }'

3. Get this week's SIGNAL call list

mcp__norric__signal_weekly_call_list_v1(
    vertikal="aldreomsorg",
    limit=10
)

Authentication

Norric uses capability-scoped API keys. Each key grants access to specific product verticals. Keys are passed via the X-Norric-Key header or as a Bearer token.

Key format

nk_{environment}_{capabilities}_{random}

# Examples
nk_prod_signal_a7f3k9x2          # SIGNAL tools only, production
nk_prod_kreditvakt_m2p8q1z4      # Kreditvakt tools only, production
nk_prod_all_b5r7n3w9             # All tools, production
nk_sandbox_all_c4t6y8v2          # All tools, sandbox (free tier)
ScopeTools includedPricing track
signalsignal_weekly_call_list_v1, signal_score_municipality_v1, signal_municipality_briefing_v1, signal_contract_expiry_alerts_v1, signal_sweden_pulse_v1SIGNAL plans
kreditvaktkreditvakt_score_company_v1, kreditvakt_batch_score_v1, kreditvakt_debt_signals_v1, kreditvakt_bankruptcy_status_v1Kreditvakt plans
sigviksigvik_brf_lookup_v1, sigvik_brf_score_v1, sigvik_energiklass_v1Sigvik plans
allAll toolsEnterprise / institutional

Response format

Every tool returns the universal NorricResponse envelope. This is non-negotiable — no tool deviates from this schema. Agents can rely on it unconditionally.

NorricResponse { success: bool # True if tool executed without error tool: str # Tool name + version e.g. "kreditvakt_score_company_v1" source: list[str] # Data sources used e.g. ["skatteverket", "bolagsverket"] confidence: float # 0.0–1.0. Below 0.7 = treat with caution ttl: int # Cache TTL in seconds. Agent should not re-call before expiry. data: dict # Tool-specific payload (see per-tool schemas below) metadata: dict # Tool, source, confidence, ttl echoed for auditability signals: list # Key signals driving the result warnings: list[str] # Non-fatal issues e.g. stale data suggested_action: str|null # Agent-interpretable next step (post-AGI field) data_freshness_secs: int|null # Seconds since underlying data was fetched }
Agent design note: Always check confidence before acting on a result. If confidence < 0.7, treat the result as advisory only. If warnings is non-empty, inspect before escalating to a human action.

SIGNAL tools

Municipality procurement intelligence. 13 signal sources across 290 Swedish municipalities. Operates at procurement step 1 — intent signals — vs Mercell/Opic which operate at step 4.

signal_weekly_call_list_v1
v1 · live
Returns this week's ranked municipality call list for a vertical. The Monday morning brief for sales teams and autonomous SDR agents. Sorted by composite procurement score descending.
Live SIGNAL
# Parameters
vertikal: str      # aldreomsorg | skola | it_digital | fastighet | hr | bygg | annat
limit:    int      # 1–50, default 10

# Returns
entries: [{
  rank:            int
  kommunkod:       str         # 4-digit Swedish municipality code
  municipality_name: str
  composite_score: float       # 0–100. Malmö 87.8, Stockholm 85.0
  urgency:         str         # hot | warm | quiet
  components:      list        # 7-component score breakdown
}]
signal_score_municipality_v1
v1 · live
Deep score for a single municipality × vertical pair. Returns 7-component breakdown: agenda signals, IVO decisions, awarded contracts, Kolada metrics, demographics, election results, and NLP classifier output.
LiveSIGNAL
signal_municipality_briefing_v1
v1 · live
Generates a full Swedish-language call briefing: what happened (facts), why it matters commercially, optimal call window, 3 talking points, and incumbent risk flag. Designed for autonomous SDR agents before dialling.
LiveSIGNAL
signal_contract_expiry_alerts_v1
v1 · live
Returns contracts expiring in the next 90/180/365 days by municipality and vertical. Primary trigger for proactive outreach before re-procurement begins.
LiveSIGNAL
signal_sweden_pulse_v1
v1 · live
National pulse — aggregate procurement activity across all 290 municipalities for a vertical. Week-on-week trend. Used for macro signal detection and quarterly planning.
LiveSIGNAL

Kreditvakt tools

Swedish B2B payment risk engine. Reads Kronofogden enforcement cases, Skatteverket debt trajectory, and Bolagsverket filings. Backtest validated: 6x lift factor, 9-month median warning, 80% bankruptcy coverage.

kreditvakt_score_company_v1
v1 · live
Primary credit risk tool. Two-stage scoring: hard gates (Kronofogden enforcement, bankruptcy petition, escalating tax debt) then weighted signal assessment. Returns GREEN/AMBER/RED with plain-Swedish recommendation.
LiveKreditvakt
org_nr:         OrgnrStr    # Swedish format: XXXXXX-XXXX
include_graph:  bool        # Include ownership chain (default false)

# Returns
signal:         str         # GREEN | AMBER | RED
recommendation_sv: str      # Plain Swedish action e.g. "Kräv förskottsbetalning"
hard_gate_fired: bool
reason_codes:   list[str]
confidence:     float
kreditvakt_batch_score_v1
v1 · live
Batch scoring for factoring companies reviewing credit exposure at scale. Up to 500 org_nr per call. Returns ranked risk list with aggregate portfolio statistics.
LiveKreditvakt
kreditvakt_debt_signals_v1
v1 · live
Raw Skatteverket debt signal with trajectory analysis. Returns current quarter debt, previous quarter, trajectory (ESCALATING/STATIC/NONE), and threshold breach flags.
LiveKreditvakt
kreditvakt_bankruptcy_status_v1
v1 · live
Binary verification — use score_company_v1 for predictive risk. This tool confirms whether a formal bankruptcy or liquidation petition is registered at Bolagsverket right now.
LiveKreditvakt

Roadmap tools

These tools are in development and will be available in Q3 2026. Architecture is defined. Data pipeline is being connected.
norric_entity_deep_score
Q3 2026
Entity score + full ownership chain traversal + enforcement history + counterparty network risk. Single call replaces 3 current tool calls. Designed for due diligence agents.
Roadmap
norric_watchlist_diff
Q3 2026
Pass a list of org_nr and a since_timestamp. Returns only entities where signals changed. Designed for nightly monitoring agents — zero redundant data transfer.
Roadmap
norric_sector_brief
Q4 2026
Market entry intelligence. Pass an SNI code and municipality codes. Returns aggregate signal summary for that sector/geography. Designed for market entry agents and institutional analysts.
Roadmap

Agent patterns

Norric tools are designed for autonomous agent workflows. Here are the four canonical patterns.

Pattern 1: Due diligence agent

# Before onboarding a new B2B customer
result = mcp__norric__kreditvakt_score_company_v1(org_nr="556714-7916")

if result.data["signal"] == "RED":
    # Agent flags for human review, does not proceed
    escalate(result.data["recommendation_sv"])
elif result.data["signal"] == "AMBER":
    # Agent adjusts payment terms automatically
    set_payment_terms(days=14, upfront=0.5)
else:
    # GREEN — proceed with standard 30-day terms
    proceed_standard()

Pattern 2: Procurement monitoring agent

# Runs nightly — Monday generates the week's call list
call_list = mcp__norric__signal_weekly_call_list_v1(
    vertikal="aldreomsorg",
    limit=10
)

for municipality in call_list.data["entries"]:
    if municipality["urgency"] == "hot":
        briefing = mcp__norric__signal_municipality_briefing_v1(
            kommunkod=municipality["kommunkod"],
            vertikal="aldreomsorg"
        )
        schedule_call(municipality, briefing.data["talking_points"])

Pattern 3: Portfolio monitoring agent (nightly)

# Runs at 02:00 CET — silent unless exception threshold crossed
watchlist = load_customer_org_nrs()  # Your customer portfolio

changes = mcp__norric__norric_watchlist_diff(  # Q3 2026
    org_nr_list=watchlist,
    since_timestamp=yesterday_midnight
)

for entity in changes.data["changed"]:
    if entity["severity"] == "high":
        alert_account_manager(entity)  # Only escalates material changes

TTL and caching

Every NorricResponse includes a ttl field in seconds. Agents must respect this. Do not re-call a tool before the TTL expires — data will not have changed and you will waste call quota.

Tool categoryTTLReason
kreditvakt_score_*43,200s (12h)Nightly data refresh from Skatteverket/Bolagsverket
signal_weekly_call_list_v143,200s (12h)Weekly score — refreshed Monday 06:00 CET
signal_municipality_briefing_v186,400s (24h)NLP briefing cached per municipality/vertical/day
kreditvakt_bankruptcy_status_v13,600s (1h)Hard confirmation — checked more frequently
norric_watchlist_diff0sAlways live — diff from timestamp provided

Pricing — Human tier

Now → 2026 · SMB and consultant access
Human era · pre-AGI

Priced for Swedish SMBs, redovisningskonsulter, and sales teams. Flat monthly subscriptions. No per-call complexity. Works like any SaaS tool.

Starter
0 kr
/ month · sandbox only
100 tool calls/month
Sandbox data (not live)
All tool schemas
No live Kreditvakt scores
No SIGNAL call list
No support
Konsult
499 kr
/ month · up to 50 clients
10,000 tool calls/month
All product scopes
Client management portal
Bulk Kreditvakt checks
Weekly SIGNAL digest
White-label option (+199 kr)
Per-check pricing alternative: 0.50 kr per Kreditvakt call · 1.00 kr per SIGNAL municipality score. Available on the Starter plan for low-volume use. Billed monthly via Autogiro.

Pricing — Agent tier

2026–2027 · Autonomous agent access
Agent era · transitional

Priced per call, not per seat. Agents don't churn, don't need onboarding, and call at scale. A single agent deployment can call Norric 10,000 times per month — pricing reflects this asymmetry. Agents that work don't get changed.

Developer
0.50 kr
/ call · billed monthly
All tools, live data
Sub-100ms cached responses
Versioned API (v1 → stable forever)
Machine-readable error codes
suggested_action field on all responses
10k calls/month minimum

Agent-specific pricing for watchlist monitoring

Use caseToolPriceAgent value
Due diligence per entitykreditvakt_score_company_v12 kr/call (deep) · 0.50 kr (standard)Agent checks every new customer automatically
Portfolio monitoringnorric_watchlist_diff10 kr/entity/monthAgent monitors 200 customers for 2,000 kr/mo
Procurement scansignal_weekly_call_list_v1Included in SIGNAL plansAgent generates SDR call list every Monday
Market entry briefnorric_sector_brief5,000 kr/briefAgent generates full sector intelligence on demand
Why agents pay more per call than humans: An agent that has been configured to call Norric on every invoice creation calls indefinitely at scale without a renewal conversation. The switching cost is a code change that requires human justification. Lifetime value of an agent customer is 5–10x a human SaaS customer at the same monthly price. Pricing reflects this.

Pricing — Institutional tier

2027+ · Banks, factoring, insurance, PE
Institutional era · data asset monetisation

At this tier, Norric is not selling software. It is licensing a proprietary Swedish economic intelligence dataset that accumulates daily and cannot be replicated. Pricing is annual contract, not monthly SaaS.

BuyerWhat they buyPricing modelExample contract
Factoring companies (Svea, Resurs, Hoist)Invoice pre-qualification scores on their portfolio0.1% of invoice face value scored · min 50,000 kr/moSvea scores 500 MSEK/mo = 500,000 kr/mo
Banks (Swedbank, Handelsbanken)SMB lending early warning signals — portfolio distress monitoring200,000–500,000 kr/year per institutionOne bank = 300,000 kr ARR
Insurance (Atradius, Coface)Trade credit underwriting dataPer-policy pricing · custom contractTBD via pilot
Private equityPortfolio company distress monitoring5,000 kr/company/month40-company portfolio = 200,000 kr/mo
Consultancies, investorsNorric intelligence platform access50,000–200,000 kr/yearFull platform = top tier
Pilot program (starting now): 3 factoring companies get 90 days of free access to Kreditvakt API scores on their existing portfolio. They observe signal accuracy against their own outcome data. At day 90, they either sign or don't. Contact edgar@norric.io to join the pilot.

Pricing roadmap

How Norric's pricing evolves as the AI economy matures. The model shifts from human SaaS → agent-native → data licensing.

Now — Q4 2026
Human SaaS + early agent access
299 kr/month flat rate. 0.50 kr/check pay-per-use. Fortnox marketplace. Konsult channel. Agent sandbox free. Per-call developer pricing introduced. First institutional pilot conversations started.
Q1–Q2 2027
Agent tier dominant · usage-based billing
Per-call metering live on all tools. Webhook stream product launched. Watchlist monitoring (norric_watchlist_diff) in production. First institutional data license signed. Pricing shifts: most revenue is per-call, not per-seat. MRP (monthly recurring per-call) replaces MRR as primary metric.
Q3 2027 — 2028
Data licensing dominant · model API launched
Norric intelligence model fine-tuned on 18 months of outcome data. Model API licensed to Swedish fintechs. Institutional contracts with 2+ banks. Pan-Nordic expansion begins (Denmark CVR, Norway Brønnøysund). Pricing: human SaaS becomes the acquisition channel, institutional licensing is the revenue.
2028–2030
Norric intelligence platform · Nordic data infrastructure
Full platform: 290 municipalities, company graph, property, procurement, enforcement. 50,000–200,000 kr/year institutional subscription. Strategic acquisition conversations begin. Target: 2–5 GSEK valuation. Norric becomes the canonical Nordic business intelligence layer for the AI agent ecosystem.

Rate limits

Sandbox (free)
100 / month
Professional (299 kr)
1,000 / month
Konsult (499 kr)
10,000 / month
Developer (per-call)
Unlimited · 0.50 kr/call
Institutional
Custom SLA
Burst rate limit: 60 requests/minute per API key regardless of plan. Exceeding this returns HTTP 429. Agent loops should implement exponential backoff: wait 1s, 2s, 4s, 8s before retrying.

Error codes

All errors return a machine-readable error_code alongside a human message. Agents should branch on error_code, not on the message string.

CodeHTTPMeaningAgent action
ORG_NOT_FOUND404Organisationsnummer not in BolagsverketVerify format XXXXXX-XXXX, retry once. If still 404, flag for human review.
ORG_NR_FORMAT400Invalid org_nr formatStrip spaces and dashes, reformat to XXXXXX-XXXX, retry.
LOW_CONFIDENCE200Score returned but data is stale or incompleteCheck data_freshness_secs. If > 86400, treat result as advisory only.
CACHE_MISS200Org_nr not yet in cache — async fetch triggeredWait 30s and retry. Result will be available after ingestion run.
RATE_LIMITED429Too many requestsExponential backoff: 1s, 2s, 4s, 8s.
SCOPE_DENIED403API key does not have permission for this toolDo not retry. Alert human — wrong key scope.
INGESTION_ERROR200Upstream data source temporarily unavailableReturn cached value if available. Set warnings flag. Retry next cycle.

Changelog

April 2026 · v1.0
Initial release
19 tools across 5 products. FastMCP 3.2.3, Streamable HTTP transport. Universal NorricResponse envelope. Capability-scoped API keys. Canonical Swedish types (OrgnrStr, KommunkodStr, VertikalEnum). Immutable audit trail for mutating tools. Global Claude Code connection via ~/.claude.json.
Coming · Q2 2026
signal_weekly_call_list_v1 live data
munisignal ingestion pipeline connected. Live municipality scoring active. 10 pilot municipalities, 60 vertical pairs, nightly rescore.
Coming · Q3 2026
norric_entity_deep_score + norric_watchlist_diff
Graph engine live. Ownership chain traversal. Watchlist diff API for agent monitoring loops. Per-call metering on all tools.

Norric AB · MCP Developer Docs · April 2026 · norric.io · edgar@norric.io