Helpers — Naming, Quota & Lookups
The small utility procedures: registrable-apex and public-suffix tests, top-ASN ranking, Tor and TLS-fingerprint lookups, and reading your quota.
Helpers — Naming, Quota & Lookups Documentation
Beyond the investigation and identity procedures, WhisperGraph ships a handful of small utilities — the naming, ranking, lookup, and quota calls you reach for inside a larger query. None of them need a deep traversal; each answers one focused question.
Public-suffix functions
The PSL functions apply the Public Suffix List so you can find the registrable apex of a hostname or test whether a label is itself a public suffix. They are the reliable way to reduce a messy hostname to the domain you actually want to anchor on.
CALL whisper.psl.tldPlusOne("mail.google.co.uk") YIELD apex RETURN apex
| Function | Argument | Returns |
|---|---|---|
whisper.psl.tldPlusOne(host) | a hostname | the registrable apex (mail.google.co.uk → google.co.uk) |
whisper.psl.isPublicSuffix(label) | a label | true if the label is itself a public suffix |
whisper.psl.affiliation(host) | exactly one host | the affiliation group for the host |
whisper.psl.affiliation() takes exactly one argument; passing more returns a 400. Use tldPlusOne before an anchored lookup when your input might be a subdomain — anchoring on the apex is usually what you want.
whisper.topAsnsByPrefixCount(n)
Rank the autonomous systems announcing the most prefixes — a quick way to find the largest networks without scanning the ASN label.
CALL whisper.topAsnsByPrefixCount(10) YIELD asn, prefixCount
RETURN asn, prefixCount ORDER BY prefixCount DESC
Tor & TLS-fingerprint lookups
Two direct lookups check whether an IP is a known Tor relay or emits a known TLS fingerprint, without composing the underlying edges yourself.
CALL whisper.lookupTorRelay("185.220.101.1") YIELD indicator, found
RETURN indicator, found
| Procedure | Argument | Answers |
|---|---|---|
whisper.lookupTorRelay(ip) | an IP | whether the IP operates a Tor relay |
whisper.lookupTlsFingerprint(ip) | an IP | whether the IP presents a known JA3/JARM fingerprint |
TLS-fingerprint coverage is still seeding, so treat an empty result as no data rather than a negative finding.
whisper.quota()
Read the plan a request runs at and the caps that apply. It never counts against your quota.
CALL whisper.quota() YIELD key, value RETURN key, value
It yields plan, isAnonymous, hourlyLimit, hourlyUsed, hourlyRemaining, dailyLimit, maxQueryDepth, and maxResponseLimit. Read it any time you need to know your remaining budget or why a deep query was rejected — the caps here are the ones the Errors & Rate Limits page describes.
Schema introspection
The db.* calls describe the live schema and are also quota-free: db.labels(), db.relationshipTypes(), db.propertyKeys(), and db.schema(). They are covered on the Graph Schema pages and in the Procedures overview.