Registeropslag Beta
Beta: i brug, men detaljer kan stadig ændre sig.
Registeropslag er i Beta. Det er en MCP-server, der lader din AI-assistent slå op i offentlige danske registre: CVR, Retsinformation, Danmarks Statistik og Folketinget. Alle værktøjer læser; ingen af dem ændrer data. Registeropslag bruger ingen AI og tæller ikke med i AI-forbruget eller organisationens månedlige loft for AI-forbrug.
Registeropslag har sin egen adresse og er ikke en del af api.komplai.dk, så det har ingen side i API-referencen. Serveren taler Model Context Protocol over Streamable HTTP.
- Adresse:
https://mcp.komplai.dk/mcp - Transport: MCP Streamable HTTP med POST, GET og DELETE på samme adresse
- Autentificering:
Authorization: Bearermed en personlig API-nøgle (kp_live_...), der har scopetmcp:read
Før du starter
- Jeres organisation har Registeropslag i aftalen, og en administrator har givet dig adgang under Organisation › Personer › Adgang til værktøjer i hubben.
- Du har en personlig API-nøgle med
mcp:read. Åbn Registeropslag (/modules/mcp) i hubben, og vælg Opret nøgle til Registeropslag, eller opret nøglen på siden API-nøgler på hub.komplai.dk/api-access. Organisationens integrationsnøgle (kp_org_...) afvises medintegration_not_permitted. - Brug kun testdata, mens Registeropslag er i beta.
Forbind VS Code
Siden Registeropslag i hubben viser den samme konfiguration med en knap til at kopiere den. Den indeholder ingen nøgle.
- Opret en personlig nøgle med
mcp:read. - Kør MCP: Open User Configuration i VS Code, og flet konfigurationen herunder ind i dine eksisterende indstillinger.
- Start serveren. VS Code spørger efter nøglen i et skjult felt, så den ikke havner i en fil.
{
"inputs": [
{
"type": "promptString",
"id": "komplai-api-key",
"description": "komplai personal API key (mcp:read)",
"password": true
}
],
"servers": {
"komplai": {
"type": "http",
"url": "https://mcp.komplai.dk/mcp",
"headers": {
"Authorization": "Bearer ${input:komplai-api-key}"
}
}
}
}Konfigurationen virker i VS Codes extension host, ikke i Agent Host-sessioner. Andre klienter virker, hvis de understøtter Streamable HTTP og en personlig Bearer-header; MCP-klienter beskriver dem.
Prøv det med curl
En MCP-klient tager disse trin for dig. Med curl kan du se hvert af dem.
Start en session med initialize. -i viser svarets headere, hvor Mcp-Session-Id indeholder sessionens id:
curl -i https://mcp.komplai.dk/mcp \
-H "Authorization: Bearer $KOMPLAI_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc": "2.0", "id": 1, "method": "initialize", "params": {"protocolVersion": "2025-03-26", "capabilities": {}, "clientInfo": {"name": "curl", "version": "1"}}}'Sæt id'et i KOMPLAI_MCP_SESSION_ID, bekræft sessionen med notifikationen initialized, og kald et værktøj. Dette søger i Retsinformation:
curl https://mcp.komplai.dk/mcp \
-H "Authorization: Bearer $KOMPLAI_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "Mcp-Session-Id: $KOMPLAI_MCP_SESSION_ID" \
-H "MCP-Protocol-Version: 2025-03-26" \
-d '{"jsonrpc": "2.0", "method": "notifications/initialized"}'
curl https://mcp.komplai.dk/mcp \
-H "Authorization: Bearer $KOMPLAI_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "Mcp-Session-Id: $KOMPLAI_MCP_SESSION_ID" \
-H "MCP-Protocol-Version: 2025-03-26" \
-d '{"jsonrpc": "2.0", "id": 2, "method": "tools/call", "params": {"name": "retsinfo_search", "arguments": {"query": "forvaltningsloven", "limit": 3}}}'Svaret kommer som en server-sent event: en data:-linje med JSON-RPC-resultatet, hvor content indeholder værktøjets resultat som JSON-tekst. Med tools/list i stedet for tools/call får du alle værktøjer med deres inputschema.
Luk sessionen, når du er færdig. At lukke en session tilbagekalder ikke nøglen.
curl -X DELETE https://mcp.komplai.dk/mcp \
-H "Authorization: Bearer $KOMPLAI_TOKEN" \
-H "Mcp-Session-Id: $KOMPLAI_MCP_SESSION_ID" \
-H "MCP-Protocol-Version: 2025-03-26"Værktøjer
| Værktøj | Register | Hvad det returnerer | Hvor opslaget sendes hen |
|---|---|---|---|
cvr_lookup | CVR | En virksomhed ud fra CVR-nummer eller navn: navn, adresse, branchekode, antal ansatte, virksomhedsform, konkursmarkering og ejere | cvrapi.dk |
retsinfo_search | Retsinformation | Love, bekendtgørelser og cirkulærer som henvisninger: titel, type, ministerium, dato og link. Ikke selve lovteksten. | retsinformation.dk |
dst_find_tables | Danmarks Statistik | Statistiktabeller ud fra et søgeord med id, indhold, enhed og periode | api.statbank.dk |
dst_describe_table | Danmarks Statistik | En tabels variable og de værdikoder, hver variabel tager imod | api.statbank.dk |
dst_get_data | Danmarks Statistik | Tal fra en tabel for de variabelkoder, du vælger | api.statbank.dk |
oda_search_cases | Folketinget | Folketingssager ud fra titlen: type, status, afgørelse og seneste opdatering | oda.ft.dk |
oda_get_entity | Folketinget | Rækker fra Folketingets åbne data: sager, dokumenter, personer og organer, afstemninger og møder | oda.ft.dk |
komplai_detect | Redact | Personoplysninger i en tekst, fundet alene med regler | I tjenesten |
komplai_redact | Redact | Teksten med betegnelser som [CPR-1] og listen over betegnelser | I tjenesten |
komplai_rehydrate | Redact | Teksten med de oprindelige oplysninger sat tilbage ud fra listen over betegnelser | I tjenesten |
list_connectors | Alle forbindelser på serveren, og hvor deres data sendes hen |
- CVR er et offentligt register, men for små virksomheder tilhører de registrerede kontaktoplysninger og ejernavne private personer. Behandl dem som personoplysninger. Når
marketing_protecteder true, har virksomheden frabedt sig brug i markedsføring. - Værktøjerne
komplai_kræver ogsåredact:detectpå samme nøgle og adgang til Redact i jeres organisation. De bruger kun regler og finder derfor ikke navne. Serveren gemmer ikke listen over betegnelser:komplai_rehydrateskal have den liste,komplai_redactreturnerede.komplai_detectogkomplai_redacttager op til 50.000 tegn pr. kald. Til navne og længere tekster bruger du Redact via API'et.
Sessioner og grænser
- Hver forespørgsel, også GET og DELETE, skal have den personlige nøgle med. En nøgle i adressen afvises: URL'en må ikke have en forespørgselsstreng.
- Den første forespørgsel er en POST med
initialize. Sessionen er bundet til jeres organisation, til dig og til nøglen; en anden nøgle kan ikke bruge den. Tilbagekaldelse, udløb og fjernet adgang kontrolleres ved hver forespørgsel og igen, når et værktøj kører. - Højst 5 sessioner pr. nøgle og 500 på serveren. En session slutter efter 30 minutter uden aktivitet.
- En body må højst fylde 4 MiB. Serveren har sin egen grænse for HTTP-forespørgsler pr. minut, og hvert værktøjskald tæller også med i kontoens grænser for kald.
Når en forespørgsel afvises
Afvisninger kommer som en JSON-body med error:
| Status | error | Hvad du kan gøre |
|---|---|---|
| 400 | query_credentials_not_supported | Fjern forespørgselsstrengen. Send nøglen i headeren Authorization. |
| 400 | initialize_required | Start en session med en POST af initialize. |
| 400 | invalid_session | Send Mcp-Session-Id én gang. |
| 401 | api_key_required | Send Authorization: Bearer med din personlige nøgle. |
| 401 | invalid_api_key | Nøglen er ukendt, udløbet eller tilbagekaldt. Opret en ny. |
| 403 | integration_not_permitted | Brug en personlig nøgle, ikke organisationens integrationsnøgle. |
| 403 | insufficient_scope | Brug en nøgle med mcp:read. |
| 403 | session_owner_mismatch | Sessionen tilhører en anden nøgle. Start en ny session. |
| 403 | origin_refused | Forespørgslen kom fra en webside på en adresse, serveren ikke tager imod. |
| 404 | unknown_session | Sessionen er slut. Start en ny med initialize. |
| 429 | session_limit | Luk sessioner, du ikke bruger, med DELETE, eller vent, til inaktive sessioner slutter. |
| 429 | rate_limited | Vent et minut, før du sender flere forespørgsler. |
| 503 | account_access_unavailable | Nøgler og adgang kunne ikke kontrolleres. Prøv igen om lidt. |
Et værktøjskald, din konto ikke må foretage lige nu, fx fordi din adgang er fjernet, eller din grænse for kald er nået, returnerer et værktøjsresultat med isError: true, hvor teksten nævner årsagen.
Hvor data sendes hen
- Søgeoplysningerne sendes til det register, du slår op i, på adressen i tabellen ovenfor. Adgangen følger din personlige nøgle.
- Serveren kører på komplais servere i Tyskland (EU). Værktøjerne
komplai_behandler tekst dér i hukommelsen. - Organisationens hændelseslog indeholder værktøjet, hvem der kaldte det, og metadata om forbruget, aldrig opslaget, teksten, listen over betegnelser eller nøglen.
- Registeropslag bruger ingen AI og tæller ikke med i AI-forbruget.
Hvor data behandles beskriver alle værktøjer.