Kaidn
About
Fraud and abuse scoring for operators who can't justify an enterprise fraud team.
Details
- Author
- kaidn-io
- Categories
- Other, Security, API
Jump to
Setup
Install Kaidn in your MCP client (Claude Desktop, Cursor, Windsurf, and others).
Repository: https://github.com/kaidn-io/kaidn-mcp
Follow the installation instructions in the repository README, then restart your MCP client.
Model Context Protocol server for theKaidnfraud-scoring API.
Investigate fraud in plain English —"why was this signup blocked?","what else has this device touched?","what's in the review queue this morning?"
- Evidence, not just a score.Every reason carries the raw numbers behind it, so a model can explain a verdict rather than guess at it.
- Read-only by default.Nothing changes your tenant unless you opt in.
- Quota-guarded.An agent in a loop cannot spend your month in ten minutes.
- Any client.MCP is an open protocol — stdio locally, Streamable HTTP for remote and hosted agents.
Node.js 18 or newer, and an API key from yourKaidn dashboard.
First, install the Kaidn MCP server with your client. Standard config works in most of the tools:
{ "mcpServers": { "kaidn": { "command": "npx", "args": ["@kaidn/mcp@latest"], "env": { "KAIDN_API_KEY": "your_key" } } } }
claude mcp add kaidn --env KAIDN_API_KEY=your_key -- npx @kaidn/mcp@latest
Add the standard config toclaude_desktop_config.json, then restart Claude. Settings → Developer → Edit Config opens the file.
Settings → MCP → Add new MCP Server, or add the standard config to.cursor/mcp.jsonin your project (or~/.cursor/mcp.jsonfor every project).
code --add-mcp '{"name":"kaidn","command":"npx","args":["@kaidn/mcp@latest"],"env":{"KAIDN_API_KEY":"your_key"}}'
Add the standard config to~/.codeium/windsurf/mcp_config.json.
Add the standard config tocline_mcp_settings.jsonvia the MCP Servers icon → Configure MCP Servers.
Add tosettings.jsonundercontext_servers, using the same command, args and env as the standard config.
Any MCP client takes acommand,argsand anenvblock. Use the standard config above. If the client can only reach the server over the network rather than spawning a process, seeStreamable HTTP.
Precedence:CLI flags override environment variables.
The API key is deliberately env-only. A key passed as a flag leaks into process listings and shell history.
HTTP+SSEis deliberately absent: deprecated in the 2025-03-26 spec and sunset in June 2026.
npx @kaidn/mcp@latest --http --port 8765
Stateless — a fresh server per request, nothing shared between callers — so it sits behind a load balancer without surprises.GET /healthis unauthenticated so an orchestrator can check liveness without holding the token.
# stdio — behaves like the npx invocation docker run -i --rm -e KAIDN_API_KEY=your_key kaidn-mcp # HTTP — for remote agents docker run --rm -p 8765:8765 \ -e KAIDN_API_KEY=your_key \ -e KAIDN_MCP_TRANSPORT=http \ -e KAIDN_MCP_HOST=0.0.0.0 \ -e KAIDN_MCP_HTTP_TOKEN=your_token \ kaidn-mcp
Multi-stage build, runs as the unprivilegednodeuser, with a healthcheck.
The server holds your API key.Whoever can reach it can spend your quota, so the defaults are conservative and the guards fail closed rather than warning.
- Binds127.0.0.1, and refuses to start on a wider interfaceunlessKAIDN_MCP_HTTP_TOKENis set. It stops with an explanation rather than quietly exposing your account.
- Read-only by default.add_to_listandlabel_outcomeexist only with--allow-writes.
- set_configandforget_subjectare never exposed, in any mode. One silently changes the verdict on every future event; the other is irreversible GDPR erasure. Both belong in the dashboard, in front of a human.
- Quota ceiling per process, with remaining budget reported on every costing response. A reservation that would overshoot is refused outright rather than partially spent.
- The key never crosses the tool boundary— not as a parameter, not in output, not in an error.
Two things govern every tool: whether itspends quota, and whether itchanges anything.
¹ Free when the entity is adevice_id; enrichment only costs on email or IP.
The tools are designed to be chained. These are the flows they were built for.
You:What happened overnight, and what needs me?
The model callsget_statsfor the shape of the last 24 hours, thentriage_queuefor the events sitting onreview, thenexplain_eventon the worst one. You get a ranked list with the reasoning attached, rather than a dashboard you still have to read.
"Why was this customer blocked?"
You:Eventevt_8f21c— a customer says they were wrongly blocked.
explain_eventreturns every check that fired with its raw evidence — the datacenter ASN it matched, how many accounts shared the device, the velocity count. Enough to answer the customer, or to conclude the rule was wrong and needs tuning.
You:Is194.x.x.xa one-off or part of a ring?
investigate_entityreturns enrichment and network reputation for the IP plus every recent event it appears in. If the same device ids keep recurring, that is a ring rather than a coincidence.
You:If I dropped the velocity weight, what would stop being blocked?
get_configreads the current weights;list_eventswithverdict: "block"shows what is currently caught. The model can tell you which of those hang on the check you are about to weaken.
Failures come back as tool errors with a readable message, not exceptions — the model can act on them.
The client shows no tools.Check the client's MCP log for the startup line.kaidn-mcp: ready (stdio, …)on stderr means the server is up and the problem is on the client side. Nothing at all usually meansnpxcould not resolve the package or Node is older than 18.
It starts, then exits immediately.Almost always a missingKAIDN_API_KEY. The message says so on stderr; some clients hide stderr, so run it in a terminal to see it.
add_to_listandlabel_outcomeare missing.Working as designed. They need--allow-writes.
set_configandforget_subjectare missing.Also by design, and they are not available in any mode. SeeSECURITY.md.
HTTP mode refuses to start.You bound something other than loopback without a bearer token. That is the guard working — the process holds your API key.
Everything is slow.The enrichment checks make live upstream calls.get_stats,list_events,explain_eventandtriage_queueare free and fast; prefer them when reading history.
Check the server independently of the client:
node dist/index.js --help # no key required KAIDN_API_KEY=your_key npm start # should print a ready line
- Bugs and feature requests:GitHub issues
- Security:security@kaidn.io— seeSECURITY.md
- Privacy and data handling:PRIVACY.md
- The API itself:kaidn.io
git clone https://github.com/Kaidn-io/kaidn-mcp.git cd kaidn-mcp npm install npm run build npm test
claude mcp add kaidn --env KAIDN_API_KEY=your_key -- node /absolute/path/to/kaidn-mcp/dist/index.js
It printskaidn-mcp: ready (stdio, read-only, quota ceiling 100)to stderr and then waits on stdin — that is the MCP transport, so the silence is correct.
Kaidn's engine is rules-first and explainable: every reason carries the raw numbers behind it. A bare score gives a model nothing to reason about, whilechecks[]with evidence attached gives it something to explain. That is the difference betweenexplain_eventbeing useful and being decorative.
- CONTRIBUTING.md— what belongs here, and the guarantees a change must not break
- SECURITY.md— reporting, threat model, known limitations
- PRIVACY.md— what passes through, what is stored, what is not
- CODE_OF_CONDUCT.md
IP2Location.io API integration to retrieve the geolocation information for an IP address.
Performs data enrichment on observables using third-party services via the security-cli Python package.
Hosted Streamable HTTP MCP server for IP intelligence, fraud risk scoring, email validation, DNS, WHOIS, domain age, quota, and usage tools for AI agents.
Official MCP server for IP geolocation, IP security, abuse contacts, ASN, timezone, astronomy, and user-agent parsing.
GeoIP and ASN intelligence for AI agents with country, city, timezone, network ownership and ASN lookups.
Paid x402 MCP server for Base-USDC balances, blocks, gas prices, URL security headers, and profile bios.
Global postal code lookups, validation, and city search for 70+ countries. Sub-10ms responses.
Connect to any financial, utility, billing accounts; retrieve balance, transactions, payment and identity data instantly.
Open-source, self-hostable MCP server for WhisperGraph — a graph of 7.39B nodes / 39B edges mapping DNS, BGP, GeoIP, WHOIS, and threat intelligence. Six read-only tools (Cypher query + schema introspection + threat assessment), six resources, eight investigation prompts. stdio and Streamable HTTP transports.
Static MCP discovery card for x402 spend-policy, paid MCP launch guidance, seller checkout repair, and agent-payment safety APIs.
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.




