LayerCall

com.layercallPublished by layercall.comOfficial publisherv1.0.0Updated Oct 24, 2026

Score an IP, email, phone, domain or device for fraud in one call, with the signals behind it.

VerifiedStreamable HTTPWeb executableSecurity & MonitoringBusiness & Commerce

Overview

AI-generated overview

LayerCall is a remote fraud-scoring service that lets an assistant risk-score IPs, emails, phones, domains, devices and whole signups with verdicts.

What you can do
  • Score IP addresses for VPN, proxy, Tor, datacenter hosting, geolocation and ASN
  • Verify emails for syntax, MX, disposable providers, role accounts and domain age
  • Validate phone numbers worldwide and return line type and risk
  • Profile domains for RDAP age, registrar, MX/SPF/DMARC and risky TLDs
  • Judge browser fingerprints and verify Web Bot Auth agent signatures
  • Score a whole signup from combined IP, email, phone and domain signals
When to use it
Useful when an assistant needs to assess fraud risk during signup review, abuse triage or trust decisions, and you want the underlying signals and an allow/review/block verdict rather than a bare guess.
Requirements
A remote Streamable HTTP endpoint; nothing to install. Requires a LayerCall API key sent as a bearer token in the Authorization header. A free key covers 1,000 lookups a month; test-mode keys return synthetic data.
Before you install
Lookups are billed against your API key, and the signup-scoring tool costs more than single-value checks. Values you submit (IPs, emails, phones, domains, fingerprints) go to a third-party service. Treat null fields such as newly_registered as unknown, not as a negative finding, and prefer step-up challenges over automatic rejection.

Installation

In SourceWeft

  1. Open LayerCall in the dashboard and add it to a workspace.
  2. Connect Authorization token credentials. They are stored privately and never shown on public pages.
  3. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/com.layercall%2Ftrust-api/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "layercall": {
      "type": "http",
      "url": "https://www.layercall.com/api/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_TOKEN>"
      }
    }
  }
}

README

LayerCall SDKs

[npm] [PyPI] [License] [Dependencies]

Official clients for LayerCall — score an IP, email, phone number, domain, or a whole signup for fraud in a single call.

InstallDocs
Node / TypeScriptnpm i layercallnode/README.md
Pythonpip install layercallpython/README.md
CLInpx layercall ip 8.8.8.8below

Both clients have zero dependencies. A trust check sits on your signup path, which is the worst place in an application to introduce a dependency tree.

Get a free API key — 1,000 lookups a month, no card required, no daily cap.

Try it without installing anything

bash
export LAYERCALL_API_KEY=tl_live_...npx layercall ip 8.8.8.8npx layercall email [email protected]npx layercall domain example.comnpx layercall user --ip 1.2.3.4 --email [email protected]

What it returns

Every endpoint returns the same shape: a 0–100 risk_score, an allow | review | block verdict, and the signals behind it.

json
{  "ip": "185.220.101.1",  "risk_score": 60,  "verdict": "review",  "signals": {    "is_vpn": true,    "is_proxy": true,    "is_datacenter": true,    "is_tor": true,    "recent_abuse": false  },  "geo": { "country": "DE", "city": "Berlin", "asn": "AS60729" },  "vpn_provider": null}

Two things worth reading before you integrate

Prefer step-up over rejection. The review band starts where an ordinary commercial VPN lands, and most VPN users are ordinary customers. Send them an OTP or a 3-D Secure challenge instead of a refusal: a real user clears it in seconds, an attacker cannot, and a false positive costs friction rather than a customer. This is what Stripe Radar and Sift both converged on.

null means unknown, not "no". newly_registered is null when a TLD publishes no RDAP (.de, .ru, .ac.uk among them), and mailbox_exists is null when the mail provider does not answer honestly — Gmail and Yahoo accept mail for addresses that do not exist. Treating either as a negative finding is the specific mistake these fields exist to prevent.

Endpoints

POST/GET /v1/score/ipVPN, proxy, Tor, datacenter, geo, ASN
/v1/verify/emailSyntax, MX, disposable, role account, domain age
/v1/lookup/phoneNumbering-plan validation worldwide, line type
/v1/score/domainRDAP age, registrar, MX/SPF/DMARC, risky TLD
/v1/score/deviceDevice fingerprint reputation + bot probability
/v1/score/userAll of the above weighted into one verdict
/v1/verify/agentWeb Bot Auth (RFC 9421) — prove an AI agent is who it claims
/v1/batchUp to 500 values of one type

Full reference: layercall.com/docs · OpenAPI 3.1: layercall.com/openapi.json

Testing without spending anything

Test-mode keys return deterministic synthetic data, drawn from ranges reserved for exactly this purpose — RFC 5737 addresses, example.com, the 555-01XX fiction block. Same shape and fields as production, so your assertions are real ones. They never bill, never hit live data sources, and never write to the shared reputation network.

Every fixture is documented, so you can assert on exact values rather than "did it return a number": layercall.com/docs/test-mode

MCP — call it from an AI agent

LayerCall speaks the Model Context Protocol over Streamable HTTP, so Claude Code, Claude Desktop, ChatGPT, Cursor, VS Code, Windsurf and Zed can run a fraud check mid-conversation. There is nothing to install — it is a remote server, so you add a URL and your API key:

json
{  "mcpServers": {    "layercall": {      "url": "https://www.layercall.com/api/mcp",      "headers": { "Authorization": "Bearer YOUR_API_KEY" }    }  }}

Seven tools are exposed: score_ip, verify_email, lookup_phone, score_domain, score_device, verify_agent and score_user.

VS Code names the top-level key servers, not mcpServers. That one difference is the usual reason a copied config silently does nothing.

Per-client setup: layercall.com/docs/mcp

Framework middleware

Drop-in for the two places this usually goes. The middleware attaches req.trust and leaves the decision to you:

ts
import { layercall } from "layercall/express";
app.post("/signup", layercall(), (req, res) => {  if (req.trust.verdict === "block") return res.status(403).json({ error: "..." });  if (req.trust.verdict === "review") flagForManualReview(req.trust);  createAccount(req.body);});

There is deliberately no autoBlock: true. A one-line install that starts rejecting people is the wrong default for a fraud tool — the failure is silent, it lands on real customers, and you find out from a support ticket.

By default it only scores POST/PUT/PATCH, because a global app.use() bills a lookup for every request including favicon.ico.

See node/src/express.ts and node/src/next.ts (scoreRequest, withTrust).

Guides

Written for someone mid-incident rather than someone shopping. Each one ends with what a naive version gets wrong — including the parts that need no LayerCall at all.

License

MIT

Source: README.md at commit e192ad7

Tools

7

score_ip

Score an IP address

Risk-score an IPv4 or IPv6 address. Detects commercial VPNs (naming the provider where its own published list confirms it), proxies, Tor exit nodes and datacenter hosting, and returns geolocation, ASN and a 0-100 risk score with an allow/review/block verdict.

Parametersiprequiredstrictness

verify_email

Verify an email address

Check an email for syntax, MX records, disposable/throwaway providers, role accounts (info@, admin@), homograph lookalikes and domain age. Returns a 0-100 risk score and an allow/review/block verdict.

Parametersemailrequiredstrictness

lookup_phone

Validate a phone number

Validate a phone number worldwide against its national numbering plan. Returns E.164, country, line type (mobile/fixed/VoIP/toll-free/premium) and a risk score. Works globally, not US-only.

Parametersphonerequiredcountrystrictness

score_domain

Score a domain

Profile a domain: registration date from RDAP, registrar, MX/SPF/DMARC configuration, disposable-mail and risky-TLD detection. newly_registered is null when the age genuinely could not be determined — treat that as unknown, not as 'established'.

Parametersdomainrequired

score_device

Score a device fingerprint

Judge a browser fingerprint from /fp.js: headless detection, automation frameworks (Selenium, Puppeteer, Playwright), timezone-versus-IP mismatch and repeat-device history. Note the ceiling honestly — the declared signals it relies on are the first thing stealth tooling patches, so a clean result is weaker evidence than a dirty one.

Parametersipdevice_idrequired

verify_agent

Verify a signed AI agent (Web Bot Auth)

Cryptographically verify a Web Bot Auth signature (RFC 9421) — proof of WHICH agent is calling, not a guess from the user-agent. Returns verified true/false plus the agent's identity and declared purpose. This is the only check here that proves rather than infers, so it carries no score and no verdict: a verified assistant acting for a real user is usually welcome, a verified scraper usually is not, and that policy is the caller's. Pass the request the agent made to YOU — the signature covers its method, authority and path.

Parametersurlrequiredmethodheadersrequired

score_user

Score a whole signup

Score an entire signup in one call — any combination of IP, email, phone and domain — returning a single weighted risk score, a verdict, and the top contributing signals. A hard block on any component is never averaged away. This is the tool to use when judging a person rather than a value. Costs one lookup PER COMPONENT supplied, not one per call, so four identifiers cost four; the response reports the exact figure as billable_lookups, and cached components are refunded.

Parametersipemailphonestrictnessphone_country

Version history

1
  1. v1.0.0LatestSep 16, 2026

Score

100% 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 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts