Nummeropslag

io.github.andrey-tutPublished by GitHub account andrey-tutv1.0.2Updated Oct 24, 2026

Privacy-first Danish caller ID, CVR company lookup, operator data, and community spam signals.

Overview

AI-generated overview

Looks up Danish phone numbers for caller ID: CVR company, telecom operator, number type and spam/trust signals, plus company search by name.

What you can do
  • Look up a Danish number for its full record: CVR company, operator, spam/trust verdict and comments
  • Check a number for a compact spam or scam verdict, caller-ID style
  • Get only the telecom operator and number type for a number
  • Search Danish companies by name in the CVR register
  • Check the API key's scopes and quota usage
When to use it
Useful when an assistant needs to identify who is calling from a Danish number, screen unknown callers for spam, or find a Danish company by name or number during support, sales or research work.
Requirements
Runs locally over stdio; install from PyPI (nummeropslag-mcp), the desktop .mcpb bundle, or the public OCI image. Requires a Nummeropslag partner API key in the NUMMEROPSLAG_API_KEY environment variable, obtained from the provider's key page. Network access to the provider's API is needed, and the key's plan, scopes and quota apply.
Before you install
The API key is a paid-plan credential with scopes and a request quota; MCP calls are metered against a separate MCP quota. Each lookup sends the requested phone number or business query to the provider's first-party API. Lookups are read-only, and names of private individuals are not exposed.

Installation

In SourceWeft

  1. Open Nummeropslag in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

Nummeropslag API

[API] [OpenAPI] [Auth] [Region] [Examples] [MCP] [License]

Public Partner API + MCP server for Danish phone-number lookup, caller-ID and spam/trust signals.

Identify who is calling from a Danish number: company from the official CVR register, telecom operator, number type, and a spam/trust verdict based on anonymous user reports. Powered by official open data — not scraping. Use it from any HTTP client, or plug the MCP server straight into Claude and other AI agents.

🌐 Service: nummeropslag.dk · 🔑 Get a key: /api-noegle · 📖 API reference: Redoc · 🧪 Live sandbox: /api-reference · 🤖 MCP

This repository contains only public API docs, the OpenAPI spec, client examples and the MCP server. The backend source is private.


Authentication

All endpoints require an API key, sent in the X-API-Key header:

http
X-API-Key: npk_your_key_here

Each key has a plan, a set of scopes (lookup, spam, operator, search) and a request quota. Check your key status any time via GET /api/v1/partner/me.

Base URL: https://nummeropslag.dk/api/v1


Endpoints

MethodEndpointScopeDescription
GET/partner/lookup/{e164}lookupFull lookup — operator, CVR companies, spam/trust signals
GET/partner/spam/{e164}spamCompact spam/trust verdict only
GET/partner/operator/{e164}operatorTelecom operator + number type
GET/partner/search?q=searchSearch companies by name (CVR)
GET/partner/me—Your key status: plan, scopes, quota/usage

{e164} accepts an 8-digit Danish number or full E.164 — e.g. 33633363 or +4533633363.

Full machine-readable contract: openapi/openapi.yaml · openapi/openapi.json.


Quick start

bash
export NUMMEROPSLAG_API_KEY=npk_your_key_here
curl -H "X-API-Key: $NUMMEROPSLAG_API_KEY" \  https://nummeropslag.dk/api/v1/partner/spam/33633363

Client examples

Ready-to-run, dependency-free clients in examples/:

LanguageFileRun
Bash / curlexamples/curl.sh./curl.sh 33633363
Python (stdlib)examples/python_client.pypython3 python_client.py 33633363
Node.js 18+examples/node_client.jsnode node_client.js 33633363
PHPexamples/php_client.phpphp php_client.php 33633363

All read the key from the NUMMEROPSLAG_API_KEY environment variable.


Workflow integrations

Use Nummeropslag as native nodes and tools in popular automation and AI workflow builders:

PlatformIntegrationLocation
n8nCommunity node with five operations and AI Tool supportintegrations/n8n
DifyInstallable tool plugin for Workflows, Chatflows and Agentsintegrations/dify
LangflowCustom component with Tool Mode supportintegrations/langflow
FlowiseReady-to-paste Custom Tool functions and schemasintegrations/flowise

The integrations store the API key in each platform's credential/secret system and send queries only to https://nummeropslag.dk.


MCP server (AI agents) 🤖

Give your AI agent (Claude Desktop, Claude Code, or any Model Context Protocol client) direct access to Danish phone-number data. The server in mcp/ wraps the Partner API as MCP tools — same official data, same privacy rules (no names of private individuals).

One-click desktop installation

Download the latest nummeropslag-mcp-*.mcpb bundle from GitHub Releases, open it with a compatible desktop client, and enter your Nummeropslag API key when prompted. The bundle uses the managed uv runtime, so users do not need to install Python dependencies manually.

The canonical registry identifier is io.github.andrey-tut/nummeropslag.

Docker

The same stdio server is published as a public OCI image:

bash
docker run --rm -i \  -e NUMMEROPSLAG_API_KEY=npk_your_key_here \  ghcr.io/andrey-tut/nummeropslag-mcp:latest

MCP calls are metered against a separate MCP quota (not your REST quota); the server sends X-Client: mcp automatically.

Tools

ToolDescription
lookup_number(number)Full record: company (CVR), operator, spam/trust, comments
check_spam(number)Compact spam/scam verdict (caller-ID style)
get_operator(number)Operator + number type only (cheapest)
search_businesses(query, limit)Find Danish companies by name (CVR)
api_status()Your key's scopes + quota usage

Setup — via PyPI (recommended)

bash
pip install nummeropslag-mcp                    # or: uvx nummeropslag-mcpexport NUMMEROPSLAG_API_KEY=npk_your_key_here   # https://nummeropslag.dk/api-noeglenummeropslag-mcp                                # stdio transport

Add to Claude Desktop (claude_desktop_config.json) or Claude Code (.mcp.json):

json
{  "mcpServers": {    "nummeropslag": {      "command": "nummeropslag-mcp",      "env": { "NUMMEROPSLAG_API_KEY": "npk_your_key_here" }    }  }}
Run from source instead (no PyPI)
bash
pip install "mcp[cli]" httpxpython mcp/server.py

…and use "command": "python", "args": ["/absolute/path/to/nummeropslag-api/mcp/server.py"] in the config above.

Restart your client, then ask e.g. "Is +45 70 10 20 30 spam?" or "Who owns 33 63 33 63?".


Errors

Errors use a consistent envelope:

json
{ "error": { "code": "forbidden", "message": "…", "details": {} } }

Common codes: unauthorized (missing/invalid key), forbidden (scope not allowed), rate_limited (quota exceeded), not_found.

Data & privacy

  • Core data: official CVR (companies + production units) and the Danish number plan (SDFI, CC0).
  • Spam verdicts use k-anonymity — a public "spam" label requires several independent reports.
  • Names of private individuals are never exposed. Contacts are never uploaded (GDPR-compliant).

Privacy Policy

The MCP server sends only the phone number or business query requested by the user to the first-party Nummeropslag API. It does not read conversations, files, contacts, or call logs. See the full Nummeropslag privacy policy for data collection, use, retention, sharing, and contact information.

License

The client examples and OpenAPI spec in this repository are released under the MIT License (see LICENSE) — copy and adapt them freely. The Nummeropslag API service itself and its data are proprietary; use is governed by the terms at nummeropslag.dk.

Source: README.md at commit b8988b0

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v1.0.2LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts