Skip to content

Have I Been Pwned

by troyhunt · remote · no sign-in to list tools · v1.0.0 · published by GitHub user troyhunt

Breach intelligence API: email search, domain monitoring, passwords and stealer logs.

Final · 1Changes · 2

17 tools: 1 do something that can't be undone, 2 change things and 14 only read.

Scanned Oct 21, 2026

No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http hibp https://haveibeenpwned.com/mcp

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

17 tools

Can't be undone 1Claude Code: ask
  • hibp_send_domain_verification_emailSend a domain verification email to an approved alias such as admin or security.No findings

    Why it is in this group

    • The name "hibp_send_domain_verification_email" says "send": a word for sending, and what is sent cannot be taken back.
    Description, as the server wrote it
    Send a domain verification email to an approved alias such as admin or security. Requires an authenticated subscription with domain-verification access.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
Changes things 2Claude Code: ask
  • hibp_generate_domain_verification_dns_tokenGenerate the TXT record value required to verify domain control via DNS, creating or reusing the private HIBP domain-verification records needed for the request.No findings

    Why it is in this group

    • The name "hibp_generate_domain_verification_dns_token" says "generate": a word for a change.
    Description, as the server wrote it
    Generate the TXT record value required to verify domain control via DNS, creating or reusing the private HIBP domain-verification records needed for the request. Requires an authenticated subscription with domain-verification access.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • hibp_verify_domain_verification_dns_tokenComplete domain verification by checking the expected HIBP TXT record on the target domain.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Complete domain verification by checking the expected HIBP TXT record on the target domain. Requires an authenticated subscription with domain-verification access.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
Only reads 14Claude Code: allow
  • hibp_get_breachLook up a single public HIBP breach by its canonical breach name, such as Adobe.No findings

    Why it is in this group

    • The name "hibp_get_breach" says "get": a word for reading.
    Description, as the server wrote it
    Look up a single public HIBP breach by its canonical breach name, such as Adobe.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • hibp_get_breached_accountSearch HIBP for breaches affecting a single email address.No findings

    Why it is in this group

    • The name "hibp_get_breached_account" says "get": a word for reading.
    Description, as the server wrote it
    Search HIBP for breaches affecting a single email address. Requires an OAuth bearer token linked to an active HIBP API subscription; use domain and verification filters to refine the result.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • hibp_get_breached_account_rangeQuery the authenticated HIBP k-anonymity breached-account range endpoint with the first 6 characters of a SHA-1 email hash.No findings

    Why it is in this group

    • The name "hibp_get_breached_account_range" says "get": a word for reading.
    Description, as the server wrote it
    Query the authenticated HIBP k-anonymity breached-account range endpoint with the first 6 characters of a SHA-1 email hash. Requires a subscription with k-anonymity access; compare each returned suffix with the remaining hash characters locally because a prefix alone cannot identify an account.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • hibp_get_breached_domainReturn breached aliases for a verified domain.No findings

    Why it is in this group

    • The name "hibp_get_breached_domain" says "get": a word for reading.
    Description, as the server wrote it
    Return breached aliases for a verified domain. This tool requires an authorized subscription via OAuth bearer token.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • hibp_get_latest_breachReturn the most recently added public breach currently loaded into HIBP.No findings

    Why it is in this group

    • The name "hibp_get_latest_breach" says "get": a word for reading.
    Description, as the server wrote it
    Return the most recently added public breach currently loaded into HIBP.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • hibp_get_paste_accountSearch for public pastes containing a single email address.No findings

    Why it is in this group

    • The name "hibp_get_paste_account" says "get": a word for reading.
    Description, as the server wrote it
    Search for public pastes containing a single email address. Requires an OAuth bearer token linked to an active HIBP API subscription; run this separately from breached-account lookup.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • hibp_get_pwned_passwords_rangeQuery the public Pwned Passwords k-anonymity API with a 5-character SHA-1 or NTLM prefix and return matching suffixes with prevalence counts.No findings

    Why it is in this group

    • The name "hibp_get_pwned_passwords_range" says "get": a word for reading.
    Description, as the server wrote it
    Query the public Pwned Passwords k-anonymity API with a 5-character SHA-1 or NTLM prefix and return matching suffixes with prevalence counts.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • hibp_get_stealer_logs_by_emailReturn website domains historically observed in stealer logs for an email address.No findings

    Why it is in this group

    • The name "hibp_get_stealer_logs_by_email" says "get": a word for reading.
    Description, as the server wrote it
    Return website domains historically observed in stealer logs for an email address. Requires an OAuth-linked active subscription with the stealer-log feature; results do not establish current account access.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • hibp_get_stealer_logs_by_email_domainReturn email aliases and associated website domains historically observed in stealer logs for an email domain.No findings

    Why it is in this group

    • The name "hibp_get_stealer_logs_by_email_domain" says "get": a word for reading.
    Description, as the server wrote it
    Return email aliases and associated website domains historically observed in stealer logs for an email domain. Requires an OAuth-linked active subscription with the stealer-log feature; results do not establish current account access.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • hibp_get_stealer_logs_by_website_domainReturn email addresses historically observed in stealer logs for a website domain.No findings

    Why it is in this group

    • The name "hibp_get_stealer_logs_by_website_domain" says "get": a word for reading.
    Description, as the server wrote it
    Return email addresses historically observed in stealer logs for a website domain. Requires an OAuth-linked active subscription with the stealer-log feature; results do not establish current account access.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • hibp_get_subscription_statusReturn the current plan, quotas, rate limits, expiry, and feature flags for the active HIBP API subscription linked to the authenticated OAuth connection.No findings

    Why it is in this group

    • The name "hibp_get_subscription_status" says "get": a word for reading.
    Description, as the server wrote it
    Return the current plan, quotas, rate limits, expiry, and feature flags for the active HIBP API subscription linked to the authenticated OAuth connection. Use it to confirm access before feature-dependent lookups.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • hibp_list_breachesList public HIBP breaches, optionally filtered by domain, spam-list flag, and verification status.No findings

    Why it is in this group

    • The name "hibp_list_breaches" says "list": a word for reading.
    Description, as the server wrote it
    List public HIBP breaches, optionally filtered by domain, spam-list flag, and verification status.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • hibp_list_data_classesList the data classes used across public HIBP breach models, such as email addresses or passwords.No findings

    Why it is in this group

    • The name "hibp_list_data_classes" says "list": a word for reading.
    Description, as the server wrote it
    List the data classes used across public HIBP breach models, such as email addresses or passwords.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • hibp_list_subscribed_domainsList the domains associated with the authenticated HIBP subscription.No findings

    Why it is in this group

    • The name "hibp_list_subscribed_domains" says "list": a word for reading.
    Description, as the server wrote it
    List the domains associated with the authenticated HIBP subscription.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.0.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http hibp https://haveibeenpwned.com/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__hibp__hibp_list_breaches",
      "mcp__hibp__hibp_get_breach",
      "mcp__hibp__hibp_get_latest_breach",
      "mcp__hibp__hibp_list_data_classes",
      "mcp__hibp__hibp_get_pwned_passwords_range",
      "mcp__hibp__hibp_get_breached_account",
      "mcp__hibp__hibp_get_breached_account_range",
      "mcp__hibp__hibp_get_paste_account",
      "mcp__hibp__hibp_get_breached_domain",
      "mcp__hibp__hibp_list_subscribed_domains",
      "mcp__hibp__hibp_get_subscription_status",
      "mcp__hibp__hibp_get_stealer_logs_by_email",
      "mcp__hibp__hibp_get_stealer_logs_by_website_domain",
      "mcp__hibp__hibp_get_stealer_logs_by_email_domain"
    ],
    "ask": [
      "mcp__hibp__hibp_generate_domain_verification_dns_token",
      "mcp__hibp__hibp_verify_domain_verification_dns_token",
      "mcp__hibp__hibp_send_domain_verification_email"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as hibp. Review it before you use it.