The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Numbers Online — phone intelligence listing page.
A hosted, read-only Model Context Protocol server that gives an AI voice agent phone intelligence in a single call: who is this inbound caller, and is this outbound number one to think twice about dialing — before it burns agent minutes.
POST https://numbers.online/api/v1/mcp (Streamable HTTP, JSON-RPC 2.0)Authorization: Bearer <api_key> for tool calls; discovery is public.Positioning. Every output is an advisory, low-confidence supplementary signal. The calling agent keeps every routing and dialing decision and remains responsible for compliance. Nothing here asserts that a call is lawful, unlawful, "safe", or "spam".
Four read-only tools (all annotated readOnlyHint, idempotentHint). Discover them
live with tools/list (no auth required).
| Tool | Returns | Billed |
|---|---|---|
phone_lookup | Full bundle — validity, formatting, line type, range carrier, country, caller name (CNAM where available), STIR/SHAKEN verstat, a labeled spam signal, first-party DNC signal, signed receipt | bundled per-call |
caller_risk | Spam signal + verstat + first-party DNC signal + receipt (no name dip) | bundled per-call |
line_type | Deterministic only — validity, line type (mobile / fixed line / VoIP / …), carrier, country, formatting | free |
dnc_check | First-party do-not-contact signal + signed receipt | free |
The DNC signal is first-party, consent-first: it reflects a do-not-contact preference registered and verified by the number's own owner inside Numbers Online. It is not a copy, mirror, or replica of any government or licensed do-not-call registry. The values:
SUPPRESS — the owner registered a do-not-contact preference for this channel.NO_MATCH — no suppression preference on record (absence of suppression is not consent).UNKNOWN — the number couldn't be evaluated.Treat it as a supplementary input to your own TCPA process, never a verdict that a call is
lawful. (Reassigned-number status is inherently a carrier/FCC dataset and is intentionally
not offered as a first-party signal — there's no reassigned_check tool.)
Add a remote server pointing at the endpoint. Example mcp.json fragment:
A key needs the mcp use case. initialize, ping, and tools/list work without auth
(capability discovery); tools/call is fail-closed and requires the key.
Register Numbers Online as an MCP tool — the transport literal is shttp
(see integrations/mcp/vapi-mcp-tool.json).
A Vapi custom-function-tool alternative lives at
integrations/vapi/numbers-online-tool.json.
Point your agent's call_inbound webhook at the drop-in config in
integrations/retell/inbound-webhook.json.
It always returns HTTP 200 within Retell's budget (fail-open) so a slow lookup never
keeps the caller ringing.
Full walkthrough: docs/ai-voice-agents.md.
Runnable reference clients (zero-dependency) are in examples/ —
Node and Python.
Every billable answer can carry a receipt_id and an Ed25519 response_signature.
Fetch the receipt later — no API key required, the id is the capability:
No raw phone number is stored — only number_hash = sha256(E.164). Verify with the
public key at GET https://numbers.online/api/v1/publickey. A receipt is verifiable
evidence that a status was checked at a point in time — not proof that dialing was
lawful. Treat a receipt id as sensitive (a phone number is a small keyspace, so the hash
is bindable to a candidate number).
Raw phone numbers are never logged or stored; they are hashed (sha256). The MCP path is
read-only and stateless. Privacy policy: https://numbers.online/privacy
The full bundle is metered as one bundled per-call dip (validation + line type + risk +
first-party DNC in a single call). line_type and dnc_check are free. See
https://numbers.online for current rates.
Developer: Evergrow · Product: Numbers Online · Contact: contact@numbers.online · License: MIT