XposedOrNot MCP Server Live
Give your AI assistant live access to data breach intelligence. Query the XposedOrNot breach database directly from Claude, Cursor, or any MCP-compatible client. Free, open source, no API key required.
New to MCP? The Model Context Protocol is an open standard that lets AI assistants call external tools. Connect this server once, and your assistant can answer breach questions with live data instead of guesses.
How it works
1. You ask in plain English
Type a question in your assistant, such as "Has this email been in a breach?". No API calls, no code.
2. Your assistant picks a tool
The assistant chooses one of the six XposedOrNot tools and sends the query to api.xposedornot.com over HTTPS.
3. You get a live answer
The reply is built from the current breach database, not from training data, so it reflects breaches added today.
Set up in 4 steps
You need one of Claude Code, Claude Desktop, or Cursor installed, plus internet access. No account, API key, or extra software is required. The whole setup takes about two minutes.
Step 1: Add the server
Pick your client. Each block is copy-and-paste ready.
Claude Code
Run this in any terminal:
Expected reply: Added HTTP MCP server xposedornot with URL: https://api.xposedornot.com/mcp.
Claude Desktop
Go to Settings, then Connectors, then Add custom connector and enter:
Save, then fully quit and reopen Claude Desktop. The connector is not loaded until you restart.
Cursor
Add the server to ~/.cursor/mcp.json (or via Settings, then MCP, then Add new server):
Save the file. Cursor picks up the change within a few seconds; if not, reload the window.
Any other MCP client
Point the client at the endpoint below. These are the only details it needs.
- Server endpoint:
https://api.xposedornot.com/mcp - Transport: stateless streamable HTTP, one JSON-RPC 2.0 request per HTTPS POST. No sessions, no
Mcp-Session-Id, and no SSE stream: a GET returns 405 withAllow: POST - Protocol version:
2025-06-18(also accepts2024-11-05), negotiated at initialize - Authentication: none required
- Clients: server-side clients only. Requests with a browser
Originheader from any site other than xposedornot.com are rejected with 403 as a DNS-rebinding protection
Step 2: Confirm it is installed
Before asking any breach questions, check that your client can see the server.
| Client | Where to check | What you should see |
|---|---|---|
| Claude Code | Run claude mcp list |
xposedornot: https://api.xposedornot.com/mcp (HTTP) - Connected |
| Claude Desktop | Settings, then Connectors | XposedOrNot listed as connected, with six tools when expanded |
| Cursor | Settings, then MCP | xposedornot with a green status dot and six tools |
| Any client | Ask: "What XposedOrNot tools do you have available?" | A list of the six tools, starting with check_email_breaches |
If the server is missing or shows as disconnected, jump to Step 4.
Step 3: Run your first query
Ask your assistant:
Your AI assistant calls check_email_breaches to get the list of breach names, then
get_breach_analytics for the dates, exposed data types, and password risk, all from the
live XposedOrNot database rather than guesses from training data. An answer typically looks like this
(illustrative):
Follow-up questions like "which of those exposed passwords?" reuse the same live data.
The first time a tool is called, most clients ask you to approve it. Approving is safe: every tool is read-only and only sends the email or domain you asked about.
Step 4: If it did not work
| What you see | Likely cause | Fix |
|---|---|---|
| Server not listed, or no XposedOrNot tools | The client has not loaded the new config | Repeat Step 1, then fully restart the client and check Step 2 again |
| "Disconnected" or "failed to connect" | No network path to api.xposedornot.com, often a proxy or firewall | Open the endpoint in a browser; a JSON reply means the server is reachable |
| Assistant says it cannot call the tool | The tool call was declined or is disabled in the client | Re-run the prompt and approve the tool call when asked; check the tool is enabled in client settings |
| "Rate limit exceeded" or HTTP 429 | You hit the free tier limit | Wait the number of seconds in retry_after, then retry. See rate limits |
| HTTP 403 | The request came from a browser page on another site | Use a server-side client such as Claude Code, Claude Desktop, or Cursor |
| "is not a valid email address" or similar | Typo or incomplete input | Fix the address or domain and ask again. See errors |
Still stuck? Open an issue on the API repository with your client name and the exact message you saw.
Available tools
The server exposes six tools covering emails, domains, the breach catalog, and live statistics. All six are read-only and idempotent: they only query the database and never modify anything, and each tool declares this through its MCP annotations so clients can approve calls safely.
Not sure which tool you need? Start from the question you want answered.
| Your question | Tool the assistant uses |
|---|---|
| Has this email been in a breach? | check_email_breaches |
| How bad is the exposure for this email? | get_breach_analytics |
| What breaches are known for this company or site? | list_breaches |
| How exposed is my organization's domain? | domain_breach_summary |
| How big is the breach database overall? | get_breach_metrics |
| What breaches were added recently? | get_recent_breaches |
Check Email for Breaches
check_email_breaches
Check whether an email address appears in the XposedOrNot index of known public data breaches. Returns the list of breach names only. Never returns passwords.
Parameters: email (required)
"Has john@example.com appeared in any data breaches?"
Get Email Breach Analytics
get_breach_analytics
Detailed exposure analytics for an email: risk score, breach timeline, exposed data categories, and password risk.
Parameters: email (required)
"Give me a full breach risk analysis for john@example.com."
List Indexed Breaches
list_breaches
Browse or filter the full breach catalog by domain or breach ID, with records, data classes, and verification status. Accepts an optional limit (default 25, maximum 100). The full exposure description is included only on single breach_id lookups; domain-filtered and unfiltered lists return compact fields. When results are truncated the response says so and how to narrow the query.
Parameters: domain, breach_id, limit (all optional)
"List the breaches XposedOrNot has indexed for example.com."
Summarize Domain Breach Exposure
domain_breach_summary
Aggregate breach summary for a domain: breach count, affected accounts, pastes, and the most recent breach date. Returns counts only, never individual addresses.
Parameters: domain (required)
"How exposed is example.com across known breaches?"
Get Breach Index Metrics
get_breach_metrics
System-wide statistics: total breaches and records indexed, breaches per year and industry, and the largest and most recent breaches.
Parameters: none
"How many breaches were indexed per industry this year?"
Get Recent Breaches
get_recent_breaches
The latest data breach news and the breaches most recently added to the XposedOrNot database.
Parameters: none
"What are the newest data breaches tracked by XposedOrNot?"
Rate limits and access
The MCP server is free for personal and development use and shares the community API's per-IP limits. When a limit is reached, the server returns a clear message rather than failing silently.
| Tools | Burst | Per hour | Per day |
|---|---|---|---|
check_email_breaches, get_breach_analytics |
2 per second | 25 | 100 |
list_breaches |
2 per second | 50 | 100 |
domain_breach_summary |
2 per second | 25 | 50 |
get_breach_metrics |
No burst limit | 100 | 500 |
get_recent_breaches |
5 per minute | 50 | 100 |
Limits are evaluated against your combined MCP tool usage per client, not separately per tool.
Connection overhead (initialize, tools/list) has its own light limit of
2 per second, 25 per hour, and 100 per day; ping and notifications are not rate-limited.
Errors
Failures come back as standard JSON-RPC error objects. Invalid input returns code -32602
with a message that says what to fix:
A rate limit returns code -32000 with the number of seconds to wait in
error.data.retry_after, so clients can back off instead of retrying immediately:
Need higher volume? xonAPI+ offers paid plans with rate limits up to 25,000 requests per minute, API-key access, and commercial support. Full details in the API documentation.
Privacy
domain_breach_summary returns only counts, never individual addresses. The server is open
source: verify how queries are handled in the
source code
or read the privacy policy.
Frequently asked questions
Is it really free?
Yes. The MCP server uses the free, keyless XposedOrNot community API. If you need higher throughput for a product or a busy team, xonAPI+ offers paid plans with much higher limits, and that is what keeps the free tier free.
Do I need an API key?
No. Point your MCP client at https://api.xposedornot.com/mcp and it works. No account, no key, no registration.
Which clients work?
Any MCP client that supports streamable HTTP transport, including Claude Desktop, Claude Code, and Cursor. The server speaks standard JSON-RPC over HTTPS with protocol version 2025-06-18 (also accepts 2024-11-05), negotiated at initialize, and requires no authentication.
Are the email addresses I query stored?
Only the queried email address or domain is sent over TLS, and it is used to answer the lookup. XposedOrNot does not store user passwords or personally identifiable information from searches. See the privacy policy for details.
How is this different from the REST API?
Same data, different consumer. The REST API is for code you write; the MCP server wraps the same breach database in tools an AI assistant can call directly, so your assistant answers breach questions with live data.
How current is the data?
The MCP server queries the live XposedOrNot database, which is updated as new breaches are verified and indexed. Browse everything currently indexed in the data breach directory or see live repository statistics.
What happens if I pass an invalid email or domain?
If you pass a malformed email address or domain, the server returns a specific error saying what to fix. A clean not-found answer always means the address genuinely is not in the index.
Discovery for agents
Agents and registries can discover the server and its tools automatically through two published machine-readable descriptors:
- MCP server card: /.well-known/mcp/server-card.json
- Agent skills index: /.well-known/agent-skills/index.json
Go deeper
- Full API documentation
- GitHub repository (MIT licensed)
- Official SDKs for Python, JavaScript/TypeScript, Go, Ruby, PHP, Rust, .NET, and Java
- All integrations: MISP, TheHive/Cortex, OpenCTI, Maltego, Wazuh, Splunk, Microsoft Sentinel