{
  "markdown": "# Norric Intelligence MCP Server\n\n[![MCP](https://img.shields.io/badge/MCP-Streamable_HTTP-blue)](https://mcp.norric.io/mcp)\n\nSweden's B2B intelligence infrastructure — exposed as a single MCP server.\n\n**Products:** Norric SIGNAL · Norric Kreditvakt · Norric Vigil · SiteLoop · Sigvik\n**Framework:** FastMCP 3.2.3 · Streamable HTTP transport\n**Tools:** 21 tools across 5 products\n\n---\n\n## Authentication\n\n**Every** request to `/mcp` requires an API key — including the `initialize`\nhandshake. Anonymous discovery is not supported.\n\nSend the key in one of two headers (server accepts both; `Authorization` wins\nwhen both are present):\n\n```\nX-Norric-Key:  <key>\nAuthorization: Bearer <key>\n```\n\nWorking curl against the initialize endpoint:\n\n```bash\ncurl -si https://mcp.norric.io/mcp \\\n  -H \"Content-Type: application/json\" \\\n  -H \"Accept: application/json, text/event-stream\" \\\n  -H \"X-Norric-Key: nrc_your_api_key\" \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"initialize\",\n       \"params\":{\"protocolVersion\":\"2025-03-26\",\"capabilities\":{},\n                 \"clientInfo\":{\"name\":\"my-client\",\"version\":\"1\"}}}'\n# → HTTP/1.1 200 OK\n# → mcp-session-id: <id>     (use this header on subsequent calls in the session)\n```\n\nMissing key returns `401 {\"error\": \"Missing API key…\"}`.\nWrong key returns `401 {\"error\": \"Invalid API key…\"}`.\n\n**Get a key:** https://norric.io/api\n\n---\n\n## Pricing\n\n| Tier | Tools | Daily limit | Price |\n|------|-------|-------------|-------|\n| **Free** | `norric_status_v1`, `norric_data_freshness_v1` | 100 calls/day | Free |\n| **Standard** | All product tools (SIGNAL · Kreditvakt · Vigil · SiteLoop · Sigvik) + `norric_company_profile_v1` | 10,000 calls/day | Contact |\n| **Compliance** | Standard + `norric_explain_score_v1` (EU AI Act provenance) | Unlimited | Contact |\n\nStandard and Compliance tiers are issued direct — email `hej@norric.io` for qualification,\npricing, and ToS. Public self-serve for paid tiers is paused pending kreditupplysningslagen\n(KuL) review for the Kreditvakt offering.\n\n---\n\n## Connect\n\n### Claude Code (CLI)\n```bash\nclaude mcp add norric https://mcp.norric.io/mcp \\\n  --header \"Authorization: Bearer nrc_your_api_key\"\n```\n\n### Claude Desktop (`~/Library/Application Support/Claude/claude_desktop_config.json`)\n```json\n{\n  \"mcpServers\": {\n    \"norric\": {\n      \"url\": \"https://mcp.norric.io/mcp\",\n      \"transport\": \"streamable-http\",\n      \"headers\": {\n        \"Authorization\": \"Bearer nrc_your_api_key\"\n      }\n    }\n  }\n}\n```\n\n### Cursor / Windsurf (`.cursor/mcp.json`)\n```json\n{\n  \"mcpServers\": {\n    \"norric\": {\n      \"url\": \"https://mcp.norric.io/mcp\",\n      \"headers\": {\n        \"Authorization\": \"Bearer nrc_your_api_key\"\n      }\n    }\n  }\n}\n```\n\n### Local development\n```bash\npython server.py\n# Server starts at http://localhost:8080/mcp\nclaude mcp add norric http://localhost:8080/mcp \\\n  --header \"Authorization: Bearer nrc_your_api_key\"\n```\n\n---\n\n## Tools\n\n### Norric SIGNAL — Municipal procurement intelligence\n| Tool | Description |\n|------|-------------|\n| `signal_score_municipality_v1` | Score a municipality × vertical 0-100 |\n| `signal_weekly_call_list_v1` | Monday call list, ranked by score |\n| `signal_municipality_briefing_v1` | Full Swedish call briefing |\n| `signal_contract_expiry_alerts_v1` | Expiring contracts = displacement windows |\n| `signal_sweden_pulse_v1` | National procurement temperature |\n\n### Norric Kreditvakt — Insolvency intelligence\n| Tool | Description |\n|------|-------------|\n| `kreditvakt_score_company_v1` | `risk_score` 0–20 + `risk_band` (1–5) + `risk_tier` (HEALTHY…CRITICAL) |\n| `kreditvakt_batch_score_v1` | Portfolio scoring, max 500 orgnrs |\n| `kreditvakt_debt_signals_v1` | Skatteverket restanslängd data |\n| `kreditvakt_bankruptcy_status_v1` | Bolagsverket konkurs status |\n\n### Norric Vigil — Company lifecycle detection\n| Tool | Description |\n|------|-------------|\n| `vigil_lifecycle_stage_v1` | early / growth / scaling / distress |\n| `vigil_new_companies_v1` | New F-skatt registrations by municipality |\n| `vigil_ownership_velocity_v1` | Ownership change rate (distress signal) |\n\n### SiteLoop — Website pipeline\n| Tool | Description |\n|------|-------------|\n| `siteloop_pipeline_status_v1` | Funnel status by city |\n| `siteloop_submit_lead_v1` | Inject lead into pipeline (Vigil integration point) |\n\n### Sigvik — BRF property intelligence\n| Tool | Description |\n|------|-------------|\n| `sigvik_score_brf_v1` | BRF financial health score |\n| `sigvik_brf_avgift_v1` | Monthly fee history and trend |\n| `sigvik_brf_flags_v1` | Renovation risk, energy class deadline flags |\n\n### Cross-portfolio\n| Tool | Description |\n|------|-------------|\n| `norric_company_profile_v1` | Unified profile: Kreditvakt + Vigil in one call |\n| `norric_status_v1` | Live status of all products and data pipelines |\n| `norric_explain_score_v1` | EU AI Act provenance chain for any score |\n| `norric_data_freshness_v1` | Data freshness per source registry |\n\n---\n\n## Response envelope\n\nEvery tool returns the same structure:\n\n```json\n{\n  \"data\": { ... },\n  \"metadata\": {\n    \"response_id\": \"nrsp_abc123\",\n    \"tool\": \"tool_name_v1\",\n    \"source\": [\"skatteverket\", \"bolagsverket\"],\n    \"fetched_at\": \"2026-04-26T10:00:00Z\",\n    \"confidence\": 0.91,\n    \"cache_ttl_seconds\": 3600\n  },\n  \"signals\": [\n    {\n      \"key\": \"skuld_published\",\n      \"label\": \"Skatteskuld publicerad\",\n      \"value\": true,\n      \"weight\": 0.45,\n      \"direction\": \"risk\",\n      \"source\": \"skatteverket\"\n    }\n  ],\n  \"warnings\": []\n}\n```\n\n`metadata.confidence` (0-1): how much to trust the data\n`metadata.cache_ttl_seconds`: how long before re-fetching\n`signals[]`: always present, empty list if not applicable\n\n---\n\n## Two-step handshake\n\nMCP requires initializing a session before calling tools:\n\n```bash\n# Step 1: Initialize (no auth required)\nSESSION=$(curl -si \\\n  -X POST https://mcp.norric.io/mcp \\\n  -H \"Content-Type: application/json\" \\\n  -H \"Accept: application/json, text/event-stream\" \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"initialize\",\"params\":{\"protocolVersion\":\"2024-11-05\",\"capabilities\":{},\"clientInfo\":{\"name\":\"test\",\"version\":\"1\"}}}' \\\n  | grep -i \"mcp-session-id\" | awk '{print $2}' | tr -d '\\r')\n\n# Step 2: Call a tool (auth required)\ncurl -s -X POST https://mcp.norric.io/mcp \\\n  -H \"Content-Type: application/json\" \\\n  -H \"Accept: application/json, text/event-stream\" \\\n  -H \"Authorization: Bearer nrc_your_api_key\" \\\n  -H \"mcp-session-id: $SESSION\" \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":2,\"method\":\"tools/call\",\"params\":{\"name\":\"norric_status_v1\",\"arguments\":{}}}'\n```\n\n---\n\n## Current status\n\nTools are live and callable. Ingestion pipelines are the next build step —\nconnect each product's data source to activate live scoring.\n\nCheck live status: call `norric_status_v1`.\n\n---\n\n## Deploy to Railway\n\n```bash\n# MCP server service (existing — daring-adaptation or similar):\n# Start command: python server.py\n# Env vars:\n#   PORT=8080\n#   NORRIC_API_KEYS=<hash:tier:label lines>\n#   SUPABASE_URL=<your supabase url>\n#   SUPABASE_KEY=<your supabase anon key>\n\n# Key issuance service (separate Railway service):\n# Start command: uvicorn issuance.main:app --host 0.0.0.0 --port $PORT\n# Env vars: STRIPE_SECRET_KEY, STRIPE_WEBHOOK_SECRET, STRIPE_PRICE_*,\n#           SENDGRID_API_KEY, RAILWAY_API_TOKEN, RAILWAY_SERVICE_ID\n```\n\n---\n\n## Registry\n\n- mcp.so listing: `registry/mcpso_listing.md`\n- Anthropic connector directory: `registry/anthropic_connector_submission.md`\n\n---\n\n## Norric AB · Malmö · 2026\n",
  "bytes": 7483,
  "sha": "2f5f34a582c4cf9161ea5f26310bceec7450dab74144a19b5db7dd8f7bf5f08a",
  "repo_slug": "gucceed/norric-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_gucceed_norric_mcp_493448a1/readme"
}