LeakData
REMOTE · LEAKDATA.IO
Check breach exposure for your verified email and check locally computed password hash prefixes.
Available components
Last scanned (6 hours ago)
Scores higher than 64% of remote servers
Reachable. Last reached 5 Nov 2026.
Category Security
Recent critical change
Authorization (20 Oct 2026). See the changelog before you install this server.
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security63
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (leakdata.mark_step_done). See how to fix → View diagnostics → Fail
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability82
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 1334 tokens (~166/item across 8 items; 7 tools + 1 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management50
- Stability check failed: schema churn in the 30 days we've observed: 1 tool removals, 0 breaking changes, 0 auth/transport breaks, 6 additions. See how to fix → Fail
Tool Coverage96
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 86% of tool parameters carry a description.Partial
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 7 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 8 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
- Supports UI / widget rendering.Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 22 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 47 to 50.
- 21 Oct 26 −1
No change was recorded against any check on this day. Stability & Change Management went from 50 to 47.
- 20 Oct 26 −10
- Authorization: partial → fail ▼ critical
- Stability: pass → fail ▼ security
- Tool “leakdata.password_prefix_check” was removed ▼ security
- New tool “leakdata.mark_step_done”, which the server declares destructive security
- Tool “leakdata.search” rewrote its description, which is the text the model reads security
- Schema quality: 369 → 1334 ▼ functional
- Tool coverage: 67% → 86% ▲ functional
- Schema quality: unverified → 100 ▲ functional
- MCP protocol: fail → pass ▲ functional
- The server now declares the “resources” capability functional
- First check of Capabilities: pass functional
- MCP protocol version: 2025-06-18 → 2025-11-25 functional
- New resource “leakdata-card” functional
- Server version: 1.3.2 → 1.4.0 functional
- New tool “leakdata.action_plan” functional
- New tool “leakdata.breach_lookup” functional
- New tool “leakdata.company_monitoring” functional
- New tool “leakdata.protection_summary” functional
- New tool “leakdata.recent_breaches” functional
- “leakdata.search” reworded the description of “query” cosmetic
- Tool “leakdata.search” changed its title: Check your verified email → Check your email cosmetic
- 16 Oct 26 +1
- Stability: 0.97 → pass security
- 15 Oct 26 −1
- Stability: pass → 0.97 functional
- 10 Oct 26 +2
- Stability: 0.90 → pass security
- 7 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 83 to 90. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.
- 28 Sept 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 5 Nov 2026 · Probed https://leakdata.io/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=leakdata.io | CN=WE1,O=Google Trust Services,C=US | 22 Sept 2026 | 22 Dec 2026 | ECDSA 256 | ECDSA-SHA256 | de7263eae0480a530eef007450362b5e |
| SANs: leakdata.io, *.leakdata.io | ||||||
| CN=WE1,O=Google Trust Services,C=US (CA) | CN=GTS Root R4,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | ECDSA 256 | ECDSA-SHA384 | 7ff31977972c224a76155d13b6d685e3 |
| CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 15 Nov 2023 | 28 Jan 2028 | ECDSA 384 | SHA256-RSA | 7fe530bf331343bedd821610493d8a1b |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of leakdata.io. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| io. | present | 38690 | 8 | Verified |
| leakdata.io. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
| Header | Value |
|---|---|
| strict-transport-security | max-age=31536000; includeSubDomains; preload |
| content-security-policy | default-src 'self'; script-src 'self' https://static.cloudflareinsights.com https://challenges.cloudflare.com https://www.googletagmanager.com https://accounts.google.com/gsi/client blob:; script-src-attr 'none'; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com https://cdn.jsdelivr.net https://accounts.google.com/gsi/style; font-src 'self' https://fonts.gstatic.com data:; img-src 'self' data: https: blob:; frame-src https://challenges.cloudflare.com https://www.google.com https://accounts.google.com/gsi/; worker-src 'self' blob:; connect-src 'self' https://www.google-analytics.com https://*.google-analytics.com https://analytics.google.com https://*.analytics.google.com https://www.googletagmanager.com https://*.googletagmanager.com https://stats.g.doubleclick.net https://www.google.com https://api.eu.amplitude.com https://api-sr.eu.amplitude.com https://accounts.google.com/gsi/ https://static.cloudflareinsights.com ws: wss:; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors |
| x-content-type-options | nosniff |
| x-frame-options | SAMEORIGIN |
| referrer-policy | strict-origin-when-cross-origin |
| permissions-policy | geolocation=(), microphone=(), camera=(), payment=() |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://leakdata.io/mcp | Verified | 200 | |
| http (plaintext) | http://leakdata.io/mcp | HTTPS enforced | 301 | https://leakdata.io/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
leakdata.action_plan Your action plan ~128
Use this when the linked LeakData user asks what they should do about their breaches, what is left on their list, or wants to be walked through the steps. Returns the open and done steps of the user's own action plan (for example "Change your password" on a breached site), each with a stepId, the service it applies to, the masked monitored address and whether it is done. Walk the user through open steps one at a time, in the order returned (most urgent first). Report only the returned steps; never invent steps or mark progress yourself. Takes no arguments.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| dashboardUrl | string | – | – |
| kind | – | yes | – |
| monitoredAddressCount | integer | yes | – |
| steps | array | yes | – |
| totals | object | yes | – |
| truncated | boolean | yes | – |
No examples provided.
leakdata.breach_lookup Look up a data breach ~267
Use this when someone asks whether a company, app or website was hacked or had a data breach, what data leaked, whether a breach notice they received is real, or what to do about a breach they heard of ("Was Canva hacked?", "What leaked in the Ticketmaster breach?"). Searches LeakData's public breach catalog by company, service or domain name and returns each matching breach's date, affected account count, exposed data types, a short summary and the first steps to take. No sign-in is needed. It does not tell whether a particular person's email is in the breach: when emailCheckAvailable is true, offer to check the user's own email with leakdata.search; when it is false, say LeakData cannot check addresses against that breach. When match is "similar", say the name only resembles what the user asked about. No match means the breach is not in LeakData's catalog, not that the company was never breached. If the company is the user's own business or employer, use leakdata.company_monitoring instead. Not for general security news or a person's name.
| Name | Type | Req | Description |
|---|---|---|---|
| query | string | yes | Company, app, website or domain name, for example "Canva" or "canva.com". Never an email address, person's name or password. |
| Name | Type | Req | Description |
|---|---|---|---|
| catalogUrl | string | – | – |
| kind | – | yes | – |
| matches | array | yes | – |
| more | boolean | yes | – |
No examples provided.
leakdata.company_monitoring Understand company monitoring ~183
Use this when someone asks about their own company or employer: whether it had a data breach, whether its domain, staff email addresses or work accounts appear in data breaches, or how to monitor a business domain. Explains what LeakData checks for a domain the company verifies it owns and returns any public catalog breaches listed for exactly that domain with their details. Explain setup using the returned checks and requirements; do not offer plans, prices or sales links. No sign-in is needed. It does not enable monitoring, search employee addresses, or reveal any person's data; never claim it did. Not listed means not in LeakData's catalog, not that the company was never breached.
| Name | Type | Req | Description |
|---|---|---|---|
| domain | string | – | The company domain the user gave, for example "acme.com". Omit when the user gave no domain; never infer it from a company name. |
| Name | Type | Req | Description |
|---|---|---|---|
| checks | array | yes | – |
| domain | – | yes | – |
| kind | – | yes | – |
| listedBreaches | array | – | – |
| requirements | array | yes | – |
No examples provided.
leakdata.mark_step_done Mark a step done ~174
Use this only after the user says they completed (or want to reopen) a specific step from leakdata.action_plan, for example "I changed my Canva password". Pass that step's stepId from leakdata.action_plan and done=true, or done=false to reopen it; if no action plan result in this conversation contains the step, call leakdata.action_plan first. Saves the change to the user's LeakData action plan; it does not change anything on the breached site. A request to mark all or several steps done is not confirmation: ask which steps the user actually finished and call this once per confirmed step. Never guess a stepId.
| Name | Type | Req | Description |
|---|---|---|---|
| done | boolean | yes | true when the user finished the step, false to reopen it. |
| stepId | string | yes | stepId from leakdata.action_plan. |
| Name | Type | Req | Description |
|---|---|---|---|
| kind | – | yes | – |
| step | object | yes | – |
| totals | object | – | – |
No examples provided.
leakdata.protection_summary Review your monitoring ~121
Use this when the linked LeakData user asks how their monitoring is going, what LeakData has found for them, or whether anything new turned up. Returns the user's own monitored email addresses (masked), when each was last checked, how many findings each has, new findings in the last 30 days, and a count of open action-plan steps. It reports stored monitoring results; for a fresh check of the user's email use leakdata.search, and for the steps themselves use leakdata.action_plan. Takes no arguments. Report only the returned values.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| actionPlan | object | yes | – |
| dashboardUrl | string | – | – |
| kind | – | yes | – |
| monitoredAddressCount | integer | yes | – |
| monitoredAddresses | array | yes | – |
| totals | object | yes | – |
No examples provided.
leakdata.recent_breaches Latest data breaches ~124
Use this when someone asks which data breaches happened recently or what the latest breaches are. Returns the newest breaches in LeakData's public catalog, newest incident date first, with date, affected account count, exposed data types and first steps. No sign-in is needed. It has no date filter: check the returned dates and say so when none fall in the period the user asked about. It is LeakData's catalog, not every breach worldwide. Not for general security, ransomware or vulnerability news.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | How many breaches to return. |
| Name | Type | Req | Description |
|---|---|---|---|
| catalogUrl | string | – | – |
| kind | – | yes | – |
| matches | array | yes | – |
| more | boolean | yes | – |
No examples provided.
leakdata.search Check your email ~277
Use this when the linked LeakData user asks whether their own email was in a data breach ("Has my email been leaked?", "Am I in the Canva breach?", "Am I affected by any recent leaks?"). For a current check, call this tool and report only its returned results; never present earlier results as a new check, and if the call fails say the check could not be completed. For their own email, set type to email and omit query: the server uses the verified primary email of the linked account. If the user typed an address of their own, put it in query; only the verified primary email is checked, and for another address they own the result explains how to add it in LeakData. Never call this for someone else's address or to look up passwords, and never guess an address. No results means no LeakData record matched: never say the email is safe or was never leaked; a breach whose records LeakData does not hold cannot show up. Results for the user's other monitored addresses come from leakdata.protection_summary; company domains use leakdata.company_monitoring.
| Name | Type | Req | Description |
|---|---|---|---|
| query | string | – | Omit to check the linked account's verified primary email. If the user typed an address of their own, pass it here; only the verified primary email is checked. |
| type | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| breachCount | integer | yes | – |
| breaches | array | yes | – |
| found | boolean | yes | – |
| truncated | boolean | yes | – |
| type | string | yes | – |
No examples provided.
How do I install the LeakData MCP server?
LeakData is a hosted endpoint at https://leakdata.io/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · leakdata.io
claude mcp add --transport http leakdatahq-leakdata-mcp 'https://leakdata.io/mcp'
What is the LeakData MCP server?
LeakData is an MCP server listed in the public MCP registry as io.github.leakdatahq/leakdata-mcp. Check breach exposure for your verified email and check locally computed password hash prefixes. This page covers its hosted endpoint (https://leakdata.io/mcp).
Is the LeakData MCP server safe to use?
LeakData scores 75 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the LeakData MCP server expose?
LeakData exposes 7 tools: leakdata.search, leakdata.protection_summary, leakdata.breach_lookup, leakdata.recent_breaches, leakdata.company_monitoring, and 2 more. Their descriptions and schemas cost roughly 1,274 tokens of context every time the server is loaded.
Does the LeakData MCP server require authentication?
No. We connected to LeakData without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the LeakData MCP server still maintained?
LeakData is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.