Swedish intelligence API
for AI agents.
21 tools covering insolvency risk and early-warning signals, municipal procurement, and BRF renovation intelligence — exposed as a single MCP server. Connect in 60 seconds via Claude Code, Cursor, or Windsurf.
https://norric-mcp-production.up.railway.app/mcpTransport: Streamable HTTP · FastMCP 3.2.3 · Protocol 2024-11-05
Tools: 21 live across Kreditvakt, SIGNAL, Sigvik, Infrastructure
Coverage: All Swedish companies (290,000+ aktiebolag) · 290 municipalities · 33,710 BRFs (289 of 290 kommuner)
Quick start
Get access to 21 Swedish intelligence tools in under 60 seconds.
Step 1 — Get an API key
Request free sandbox access at norric.io/api-keys. Sandbox keys are issued immediately and include 100 free calls.
Step 2 — Claude Code (recommended)
claude mcp add norric https://norric-mcp-production.up.railway.app/mcp \
--header "Authorization: Bearer YOUR_API_KEY"
Then use any tool directly in Claude Code:
# Score a Swedish company for insolvency risk
mcp__norric__kreditvakt_score_company_v1(orgnr="556012-3456")
# Get this week's procurement call list
mcp__norric__signal_weekly_call_list_v1(vertikal="aldreomsorg", limit=10)
# Check pipeline freshness before acting
mcp__norric__norric_data_freshness_v1()
Step 3 — Claude Desktop
Edit ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"norric": {
"url": "https://norric-mcp-production.up.railway.app/mcp",
"transport": "streamable-http",
"headers": { "Authorization": "Bearer YOUR_API_KEY" }
}
}
}
Step 4 — Cursor or Windsurf
Edit .cursor/mcp.json:
{
"mcpServers": {
"norric": {
"url": "https://norric-mcp-production.up.railway.app/mcp",
"headers": { "Authorization": "Bearer YOUR_API_KEY" }
}
}
}
Authentication
All requests require a Bearer token passed via the Authorization header.
Authorization: Bearer nrk_your_key_here
Get a key: norric.io/api-keys
Key tiers
| Prefix | Plan | Calls / month |
|---|---|---|
| nrk_free_ | Sandbox | 100 |
| nrk_std_ | Professional | 5,000 |
| nrk_pro_ | Konsult | 20,000 |
| nrk_ent_ | Enterprise | Unlimited |
Missing or invalid key returns:
{
"error": "Invalid API key. Get yours at norric.io/api-keys"
}
Connect your agent
Claude Code and Claude Desktop handle the MCP handshake automatically. For direct HTTP calls, a two-step session initialization is required.
https://norric-mcp-production.up.railway.app/mcpTransport: Streamable HTTP (FastMCP 3.2.3)
Protocol version: 2024-11-05
Direct curl — two-step handshake
# Step 1 — Initialize and capture session ID
SESSION=$(curl -si https://norric-mcp-production.up.railway.app/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{
"protocolVersion":"2024-11-05",
"capabilities":{},
"clientInfo":{"name":"curl","version":"1.0"}
}}' \
| grep -i "mcp-session-id" | awk '{print $2}' | tr -d '\r')
# Step 2 — Call a tool
curl -s https://norric-mcp-production.up.railway.app/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "mcp-session-id: $SESSION" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{
"name":"kreditvakt_score_company_v1",
"arguments":{"orgnr":"556012-3456"}
}}'
Health check
curl https://norric-mcp-production.up.railway.app/health
# → {"status":"ok","tools":21,"version":"2.0.0"}
Tools reference
21 tools across 4 products. All tools accept Swedish organisation numbers (orgnr) in format XXXXXX-XXXX.
Kreditvakt — Insolvency scoring live
9–10 month warning lead time. 6× lift vs naïve base rate. Covers all Swedish aktiebolag from four independent signal sources: Skatteverket restanslängd, Kronofogden betalningsförelägganden, Bolagsverket ärenden (pre-registration leading indicator), and Bolagsverket konkursregister. Early-warning tier includes F-skatt registration, building permits, and Bolagsverket ownership velocity sensors.
| Tool | Description | Key params |
|---|---|---|
| kreditvakt_score_company_v1 | Insolvency score 0–100 + full 4-source signal breakdown. Accepts orgnr or company name. | orgnr |
| kreditvakt_batch_score_v1 | Score up to 100 companies in one call. Returns portfolio risk summary. | orgnrs[] |
| kreditvakt_debt_signals_v1 | Skatteverket and Kronofogden debt signals only. | orgnr |
| kreditvakt_bankruptcy_status_v1 | Bolagsverket konkurs status and pending ärenden. | orgnr |
Example response — kreditvakt_score_company_v1:
{
"insolvency_score": 74,
"company_name": "Byggfirman Svensson AB",
"verdict": "Förhöjd riskprofil — aktiva signaler från tre oberoende källor.",
"f_skatt_active": false,
"skuld_sek": 340000,
"betalning_count": 6,
"kronofogden_escalated": true,
"arende_ankommet_datum": "2026-04-08",
"arende_kanal": "Papperspost",
"konkurs_filed": false,
"onset_days": 180,
"median_days_to_konkurs": 285,
"signal_count": 4,
"confidence": "hög"
}
SIGNAL — Municipal procurement live
4–8 week lead time before RFP publication. 13 signal sources across all 290 Swedish municipalities.
| Tool | Description | Key params |
|---|---|---|
| signal_score_municipality_v1 | Composite procurement readiness score 0–100 for a municipality × vertical. | kommunkod, vertikal |
| signal_weekly_call_list_v1 | Monday ranked call list for sales and SDR agents. | vertikal, limit |
| signal_municipality_briefing_v1 | Full Swedish call briefing with talking points. | kommunkod, vertikal |
| signal_contract_expiry_alerts_v1 | Upcoming contract renewals — displacement windows. | vertikal, days_ahead |
| signal_sweden_pulse_v1 | National procurement activity index 0–100. | vertikal (optional) |
Verticals: aldreomsorg · skola · it_digital · fastighet · hr · bygg · annat
Municipalities: 4-digit kommunkod, e.g. 1280 (Malmö), 0180 (Stockholm), 1480 (Göteborg).
Sigvik — BRF renovation intelligence live
Renovation intent scoring for Swedish housing cooperatives (BRFs). National coverage: 33,710 BRFs across 289 of 290 Swedish municipalities. EU 2033 energy class deadline flag included.
| Tool | Description | Key params |
|---|---|---|
| sigvik_score_brf_v1 | Financial health and renovation risk score 0–100. | brf_id |
| sigvik_brf_avgift_v1 | Monthly fee history, trend, and year-on-year delta. | brf_id |
| sigvik_brf_flags_v1 | Active risk flags: renovation, economic stress, EU 2033 deadline. | brf_id |
Infrastructure tools
| Tool | Description |
|---|---|
| norric_company_profile_v1 | Unified Kreditvakt company profile with early-warning signals. |
| norric_explain_score_v1 | EU AI Act Article 9 provenance chain for any score. |
| norric_data_freshness_v1 | Ingestion freshness per source registry. Run before consequential workflows. |
| norric_status_v1 | Live status of all products and data pipelines. |
NorricResponse envelope
Every tool returns a standard envelope. Agents parse structure, not narrative.
{
"success": true,
"tool": "kreditvakt_score_company_v1",
"source": ["skatteverket", "kronofogden", "bolagsverket"],
"confidence": 0.87,
"data": { /* tool-specific payload */ },
"error": null,
"cached": false,
"ts": "2026-04-26T18:00:00Z",
"provenance": [
{
"source_agency": "skatteverket",
"source_document_ref": "orgnr:556012-3456/restanslangd/2026-04",
"ingested_at": "2026-04-26T06:00:00Z",
"confidence": 1.0,
"schema_version": "1.0"
}
]
}
Field reference
| Field | Type | Description |
|---|---|---|
| success | boolean | False on error — always check before reading data. |
| confidence | float 0–1 | Weakest-link minimum across all provenance records. |
| data | object | Tool-specific payload. Null on error. |
| provenance | array | Per-record data lineage to originating Swedish registry. EU AI Act Article 9. |
| ts | ISO 8601 | UTC timestamp of response generation. |
norric_data_freshness_v1 before any consequential workflow (credit approval, sales outreach, procurement bid). If any source is older than 7 days, note this in your output.
Error codes
| Code | Meaning | What to do |
|---|---|---|
| 401 | Missing or invalid API key | Get key at norric.io/api-keys |
| 404 | Company or entity not found | Verify orgnr format: XXXXXX-XXXX (10 digits) |
| 429 | Rate limit exceeded | Wait 60 seconds, retry with exponential backoff |
| 503 | Data source temporarily unavailable | Retry after 5 minutes |
All errors use the NorricResponse envelope:
{
"success": false,
"error": "Invalid API key. Get yours at norric.io/api-keys",
"data": null
}
Pricing
All plans include access to all 21 tools. Rate limits are per API key per month.
Changelog
v2.0.0 — April 2026
- Added
NORRIC_API_KEYSauthentication — all 401 errors point tonorric.io/api-keys - Added
/healthendpoint returning status, tool count, and version - Added Bolagsverket ärenden leading-indicator signal (
arende_ankommet_datum,arende_kanal) - Kreditvakt warning horizon extended to 9–10 months (median 285 days)
- Fixed all
norric.sereferences →norric.io - Kreditvakt signal engine: deterministic 4-source scoring, 1000-company consistency validation
- Batch scoring (
kreditvakt_batch_score_v1) now returns full portfolio risk summary norric_company_profile_v1wired to Kreditvakt engine
v1.1.0 — April 2026
- Added
norric_explain_score_v1— EU AI Act Article 9 provenance chain - Added
norric_data_freshness_v1— per-registry ingestion freshness - Added provenance layer to NorricResponse (21 tools total)
- Supabase provenance table wired to
provenance_records
v1.0.0 — April 2026
- Initial release: 19 tools across SIGNAL, Kreditvakt, and Sigvik
- FastMCP 3.2.3 Streamable HTTP transport
- Railway deployment with nixpacks builder
- NorricResponse envelope with confidence, TTL, and source tracing