
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
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.
Installation
In SourceWeft
- Open Nummeropslag in the dashboard and add it to a workspace.
- 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:
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
{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
Client examples
Ready-to-run, dependency-free clients in examples/:
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:
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:
MCP calls are metered against a separate MCP quota (not your REST quota); the server sends
X-Client: mcp automatically.
Tools
Setup — via PyPI (recommended)
Add to Claude Desktop (claude_desktop_config.json) or Claude Code (.mcp.json):
Run from source instead (no PyPI)
…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:
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
0Version history
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