Benchmark № 001 — pre-registered methodology

Validation you can actually verify.

Phone, email and IP checks that name every test they ran — and every one they didn't. The public benchmark →

Credits never expire. Cancel is a button, not a support ticket.

Include the country code — try or .

SampleA real response for this input — press Verify to run it live.

+1 (650) 447-2983Valid number
Line typeFixed line or mobile
CountryUS
E.164+16504472983
National(650) 447-2983

Checked

FormatRegionLine typeAllocation

Not claimed — we won't fake it

CarrierPorted statusHLR liveness

Works with

Claude & MCP clientsnative connector, live Python & Nodeofficial SDKs on PyPI and npm Postmancollection generated from the spec Zapier · Make · n8n · Sheetsvia their HTTP step — no native app yet

The difference

Same number. Two answers.

Only one of them tells you what it actually checked.

A typical bare response

{ "valid": true }

No way to tell which checks produced it.

Boundstone

{ "valid": true, "line_type": "fixed_line_or_mobile", "checks": { "performed": ["format", "region", "line_type", "allocation"], "not_performed": ["carrier_lookup", "ported_status", "hlr_liveness"] } }

Every test named. Both lists, every call.

The left panel is a generic shape, not a quoted vendor response. Dated head-to-heads live on the compare pages.

What a wrong "valid" costs downstream:

Dead numbers still get dialed, by reps on payroll

+1 (415) 555-0000Disconnected

Ported numbers route to last year's network

+1 (415) 555-0107Ported · stale

Disposable addresses dent the whole domain's reputation

x9f2q@mailinator.comDisposable

One call. Every check named.

Four stations. The response tells you which of them ran.

+1 (650) 447-2983
  • Format

    Allocated, not merely plausible

  • Region

    Country from the numbering plan

  • Line type

    Mobile, fixed or VoIP — abstains when unclear

  • Livenessopt-in

    Real HLR dip — 5 credits, refunded on abstain

Verdict + what wasn't checked

The response, annotated

1{ "valid": true, "line_type": "fixed_line_or_mobile", "checks": { 2 "performed": ["format", "region", "line_type", "allocation"], 3 "not_performed": ["carrier_lookup", "ported_status", "hlr_liveness"] } }
  • 1
    The verdictOne field. Never a confidence score we invented.
  • 2
    checks.performedThe three that ran, on this call.
  • 3
    checks.not_performedThe one that did not. Named, never faked.
  • Send hlr:true to run the fourthIt moves up into performed. 5 credits, refunded on abstain.

Phone

+1 (650) 447-2983 Fixed line or mobile

Region, line type and E.164. Carrier and liveness are a paid opt-in.

Email

sarah@boundstone.io Valid · has MX

Syntax, live MX, disposable and role. Mailbox and catch-all: not_performed.

IP

203.0.113.7 Reserved

Validate and classify. Geolocation and proxy detection: not_performed.

Every plan gets the whole API.

No feature gates. No "call us" tier. Paid credits never expire.

Free $0 250 credits / mo No card, forever
Starter — where most teams land $79 20,000 credits · $3.95 / 1,000 Annual billing takes 20% off Start free
Growth $249 85,000 · $2.93 / 1,000
Scale $899 320,000 · $2.81 / 1,000
$0.004 per number on Starter — a 10,000-number call list is half a month.

Starter is 1Lookup's $99 tier minus $20, and where they offer a 7-day trial this free tier doesn't end (re-checked 9 August 2026). Full pricing, printed early on purpose →

The receipts

Nobody had benchmarked phone validation. So we froze one.

1,000 numbers with known ground truth, four vendors, scoring rules checksummed before a single query. Every vendor sees its results before publication.

Already done — verify it now

Published, tagged and checksummed on 25 July 2026, before a single vendor was queried. It cannot be edited to suit the results.

Read the frozen document on GitHub →

sha256

24fb254ed62b0aef493520e6
0d29652234405cb7e77a7dce
dfa1f636ee34969d

tag methodology-v1.0

VendorPublished benchmarkMeasured accuracy
1Lookupnone foundpending
Trestlenone foundpending
Twilio Lookupnone foundpending
NumVerifynone foundpending
BoundstoneWill publish — win or lose
Run № 001 status Methodology drafted Frozen & published · 2026-07-25 Dataset build Vendors queried → results
The benchmark — measured accuracy, by vendor ValidityLine typeCarrier
100% 50% 0
№ 001 results publish after the 14-day vendor dispute window — space reserved, win or lose; our column fills from the first re-run, same frozen protocol
1LookupTrestleTwilioNumVerifyBoundstone
Methodology v1.0 frozen 2026-07-25 — tag methodology-v1.0sha256 · 24fb254e…ee34969dDataset synthetic, owned & opt-in only

Promises with clause numbers.

Ours are in the Terms, not the footer — where they're enforceable.

§1Credits never expire.
§2Cancel is a button, not a support ticket.
§330-day money-back guarantee, no questions.
§4Free tier: 250 credits a month, forever.
§5Public status page and published support response times.
You have no accuracy numbers yet. Why trust you?

Correct — and we won't invent them. They arrive with Benchmark № 001: methodology frozen and checksummed before results, with our own API scored under the identical protocol, win or lose. Until then, judge the response — it tells you exactly what it did and didn't verify.

Is the free tier actually free, or a trial?

Actually free. 250 credits every month, no card, forever. Identity checks apply above the free tier, not on it.

What happens when I run out of credits?

An explicit 402 with a plain message. Nothing is silently billed as overage — topping up is always your decision.

Do you do live carrier and reachability?

Yes, as a paid opt-in: a real HLR network dip at 5 credits (hlr:true, paid plans). A dip the network can't resolve is refunded. The base response marks carrier and liveness not_performed — named, never faked.

TT
Thomas TsuiFounder — I got tired of "99% accurate" with no footnote. If we ever break one of these clauses, you'll have the receipt. Read the methodology he froze →

The full buyer's checklist — 12 questions to ask any of us →

Checksummed public methodologyOpenAPI 3.1 specLive MCP connectorSelf-serve export & deleteIETF RateLimit headers

250 credits a month. No card. Every check named.

The whole API on the free tier — and the promises that make it safe to try are Terms clauses, not marketing.

Start free now

Not ready? One email when Benchmark № 001 publishes — measured accuracy, ours included, win or lose.

The API is live — start free without waiting. This list gets benchmark № 001 the day it publishes. One email. We validate emails for a living — we're not going to spam yours.

Whole API free: email, IP & metadata phone
Every response itemized — performed + not_performed
Cancel is a button · 30-day money-back
All of it in the Terms — receipts, not promises