Vexa
Meeting bot and transcripts for Google Meet, Teams and Zoom. Live or after, speakers labelled.
Description from the maker (original English)
Score an IP, email, phone, domain or device for fraud in one call, with the signals behind it.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
AuthorizationValues marked secret are keys to your account. Never share them or paste them into a chat.
You need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
This address needs a key in a request header, which the add-connector menu cannot set. Use Claude Code, Cursor or VS Code instead.
Run this in your terminal
claude mcp add --transport http trust-api https://www.layercall.com/api/mcp --header 'Authorization: your-value'Fill in the empty values before running it.
Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"trust-api": {
"url": "https://www.layercall.com/api/mcp",
"headers": {
"Authorization": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"trust-api": {
"type": "http",
"url": "https://www.layercall.com/api/mcp",
"headers": {
"Authorization": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This address needs a key in a request header, which the add-connector menu cannot set. Use Claude Code, Cursor or VS Code instead.
Your choice stays on this device in a cookie; no account needed.
Authorization secret required HTTP headerThese settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
We have not read this server’s tool list yet; we check endpoints in rotation.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 6, 2026
The registry name was verified against the domain layercall.com (the registry checks domain ownership)
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
Not checked yet; we check endpoints in rotation
Not checked yet; we check endpoints in rotation
Not checked yet; we read the tool list when we check the endpoint
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
You need to fill in: Authorization
It runs in the maker’s cloud. Connect over the internet with nothing to install, but what you send passes through the maker’s servers.
The GitHub repo last changed –, and the latest version (1.0.0) reached the registry 3 months ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. It connects by URL, so apps that accept remote MCP servers work too, such as ChatGPT in developer mode.
In the same category: Vexa, emailmd, MCP WhatsApp Cloud
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
Meeting bot and transcripts for Google Meet, Teams and Zoom. Live or after, speakers labelled.
Render markdown into email-safe HTML, lint drafts for deliverability problems, and preview emails.
MCP server for WhatsApp Cloud API (Meta) — messages, media, and templates via Graph API
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
Official clients for LayerCall — score an IP, email, phone number, domain, or a whole signup for fraud in a single call.
| Install | Docs | |
|---|---|---|
| Node / TypeScript | npm i layercall | node/README.md |
| Python | pip install layercall | python/README.md |
| CLI | npx layercall ip 8.8.8.8 | below |
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.
export LAYERCALL_API_KEY=tl_live_...
npx layercall ip 8.8.8.8 npx layercall email someone@mailinator.com npx layercall domain example.com npx layercall user --ip 1.2.3.4 --email a@b.com
Every endpoint returns the same shape: a 0–100 risk_score, an allow | review | block verdict, and the signals behind it.
{
"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 }
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.
POST/GET /v1/score/ip | VPN, proxy, Tor, datacenter, geo, ASN |
/v1/verify/email | Syntax, MX, disposable, role account, domain age |
/v1/lookup/phone | Numbering-plan validation worldwide, line type |
/v1/score/domain | RDAP age, registrar, MX/SPF/DMARC, risky TLD |
/v1/score/device | Device fingerprint reputation + bot probability |
/v1/score/user | All of the above weighted into one verdict |
/v1/verify/agent | Web Bot Auth (RFC 9421) — prove an AI agent is who it claims |
/v1/batch | Up to 500 values of one type |
Full reference: layercall.com/docs · OpenAPI 3.1: layercall.com/openapi.json
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
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:
{
"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, notmcpServers. That one
difference is the usual reason a copied config silently does nothing.
Per-client setup: layercall.com/docs/mcp
Drop-in for the two places this usually goes. The middleware attaches req.trust and leaves the decision to you:
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).
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.
MIT