Expired Local MCP

Hosted Streamable HTTP MCP for Expired Local domain intelligence. Search expired, auction, and pending-delete business domains with GMB, social, and SEO signals from Claude, Cursor, or Codex. Docs: https://www.expiredlocal.com/docs/mcp/

Hosted MCP Server

npx add-mcp 'https://api.expiredlocal.com/mcp'

Installs into Claude Code, Codex, Cursor and more

Documentation

Hosted by ExpiredLocalNo installation

https://api.expiredlocal.com/mcp

Transport

Streamable HTTP

Authentication

Bearer API key

Tools

7 read · 1 reveal

Connect your client

Your client needs remote Streamable HTTP and custom headers. No download is needed.

  1. Create a read-only key

    Open Account → API keys, create a Read only key and save its full value.
  2. Add the remote connection

    Use the URL above with Authorization: Bearer YOUR_API_KEY. Do not use the REST /v1 URL.
  3. Connect and discover tools

    Reconnect and call list_business_types. It uses no credits; pass an inventory and optionally a country code.

OAuth-only, legacy SSE-only and browser-only clients are unsupported.

Choose your client configuration

Add the entry to your existing config. Never paste a real key into a prompt.

Use this pattern only if your client accepts an mcpServers object with HTTP servers and custom headers. Replace YOUR_API_KEY in your private configuration; field names are not universal.

{
  "mcpServers": {
    "expiredlocal": {
      "type": "http",
      "url": "https://api.expiredlocal.com/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY"
      }
    }
  }
}

If your client uses a form, enter the same URL and bearer header.

Make a first, read-only request

Try asking your assistant

“List domain extensions, then find 20 expired US domains with at least 10 reviews. Do not reveal anything.”

You should see eight tools. Unrevealed expired results omit the domain name.

Read-only keys cannot call reveal_domains.

Tool reference

Tools follow Domain API access rules. There are no account or billing tools.

ToolAccessReturns
search_expired_domainsReadFiltered, paginated expired inventory.
search_auction_domainsReadFiltered, paginated auction inventory.
search_pending_delete_domainsReadFiltered, paginated pending-delete inventory.
list_business_typesReadCanonical categories and inventory counts.
list_domain_tldsReadExtensions and inventory counts.
list_revealed_domainsReadYour revealed names and metadata.
get_domain_detailsReadDetailed research for one domain.
reveal_domainsWriteReveal up to 100 domains in one request.

Expand a tool for inputs and sample output. Examples are fictional.

search_expired_domains Search expired domainsRead

Search domains that have already dropped by geography (including states, provinces and regions), business category, extension, reviews and SEO signals.

Arguments

FieldTypeRequiredDescription and constraints
businessobjectNo—Unknown fields rejected
business.querystringNo—Min length: 1 · Max length: 200
business.type_keysarray<string>No—Unique items
business_profileobjectNo—Unknown fields rejected
business_profile.google_statusstringNo—Allowed: not_closed, permanently_closed, unknown
business_profile.has_opening_hoursbooleanNo—
business_profile.has_phonebooleanNo—
business_profile.ratingobjectNo—Unknown fields rejected
business_profile.rating.maxnumberNo—Minimum: 1 · Maximum: 5
business_profile.rating.minnumberNo—Minimum: 1 · Maximum: 5
business_profile.reviewsobjectNo—Unknown fields rejected
business_profile.reviews.maxintegerNo—Minimum: 0
business_profile.reviews.minintegerNo—Minimum: 0
business_profile.trustpilot_reviewsobjectNoReview count observed in Google. Counts may be approximate; unknown counts are excluded.Unknown fields rejected
business_profile.trustpilot_reviews.maxintegerNo—Minimum: 0 · Maximum: 9007199254740991
business_profile.trustpilot_reviews.minintegerNo—Minimum: 0 · Maximum: 9007199254740991
business_profile.trustpilot_scoreobjectNoExact TrustScore observed in Google, from 0 to 5. Excludes unknown scores and rounded display stars.Unknown fields rejected
business_profile.trustpilot_score.maxnumberNo—Minimum: 0 · Maximum: 5
business_profile.trustpilot_score.minnumberNo—Minimum: 0 · Maximum: 5
business_profile.trustpilot_statusstringNoTrustpilot profile status observed in Google. Not found does not prove absence.Allowed: found, not_found, unchecked, error
kgmidstringNo—Pattern: ^/(?:g|m)/[A-Za-z0-9_-]+$
lifecycleobjectNo—Unknown fields rejected
lifecycle.dropped_afterstring<date-time>No—
lifecycle.dropped_beforestring<date-time>No—
locationobjectNo—Unknown fields rejected
location.citiesarray<string>No—Unique items
location.continentsobjectNo—Unknown fields rejected
location.continents.excludearray<string>No—Unique items
location.continents.includearray<string>No—Unique items
location.countriesobjectNo—Unknown fields rejected
location.countries.excludearray<string>No—Unique items
location.countries.includearray<string>No—Unique items
location.regionsobjectNo—Unknown fields rejected
location.regions.excludearray<string>No—Unique items
location.regions.includearray<string>No—Unique items
paginationobjectNo—Unknown fields rejected
pagination.pageintegerNo—Minimum: 1
pagination.page_sizeintegerNo—Minimum: 1 · Maximum: 10000
seoobjectNo—Unknown fields rejected
seo.domain_ratingobjectNo—Unknown fields rejected
seo.domain_rating.maxnumberNo—Minimum: 0 · Maximum: 100
seo.domain_rating.minnumberNo—Minimum: 0 · Maximum: 100
seo.domain_rating_v4objectNo—Unknown fields rejected
seo.domain_rating_v4.maxnumberNo—Minimum: 0 · Maximum: 100
seo.domain_rating_v4.minnumberNo—Minimum: 0 · Maximum: 100
seo.google_index_statusstringNoWhether a Google site query found an indexed page. Not found does not prove deindexing.Allowed: found, not_found, unchecked, error
seo.index_search_cappedbooleanNoWhether the deeper search reached its result limit. False does not imply an exact count.
seo.indexed_pages_observedobjectNoDistinct matching URLs observed in Google, capped at 500. This is not an exact index total.Unknown fields rejected
seo.indexed_pages_observed.maxintegerNo—Minimum: 0 · Maximum: 500
seo.indexed_pages_observed.minintegerNo—Minimum: 0 · Maximum: 500
seo.keywordsobjectNo—Unknown fields rejected
seo.keywords.maxintegerNo—Minimum: 0
seo.keywords.minintegerNo—Minimum: 0
seo.referring_domainsobjectNo—Unknown fields rejected
seo.referring_domains.maxintegerNo—Minimum: 0
seo.referring_domains.minintegerNo—Minimum: 0
seo.trafficobjectNo—Unknown fields rejected
seo.traffic.maxnumberNo—Minimum: 0
seo.traffic.minnumberNo—Minimum: 0
socialobjectNo—Unknown fields rejected
social.facebook_followersobjectNo—Unknown fields rejected
social.facebook_followers.maxintegerNo—Minimum: 0
social.facebook_followers.minintegerNo—Minimum: 0
social.followersobjectNoTotal followers observed on retained Google Search Profile social links.Unknown fields rejected
social.followers.maxintegerNo—Minimum: 0
social.followers.minintegerNo—Minimum: 0
social.has_wiki_pagebooleanNo—
social.instagram_followersobjectNo—Unknown fields rejected
social.instagram_followers.maxintegerNo—Minimum: 0
social.instagram_followers.minintegerNo—Minimum: 0
social.linkedin_followersobjectNo—Unknown fields rejected
social.linkedin_followers.maxintegerNo—Minimum: 0
social.linkedin_followers.minintegerNo—Minimum: 0
social.linkedin_latest_post_afterstring<date-time>NoOnly profiles with observed LinkedIn activity at or after this RFC 3339 instant.
social.matchstringNo—Allowed: any, all
social.platformsarray<string>No—Unique items
social.tiktok_followersobjectNo—Unknown fields rejected
social.tiktok_followers.maxintegerNo—Minimum: 0
social.tiktok_followers.minintegerNo—Minimum: 0
social.trends_datastringNo—Allowed: this_year, last_2_years, all_time, none
social.trends_existsbooleanNo—
social.x_followersobjectNo—Unknown fields rejected
social.x_followers.maxintegerNo—Minimum: 0
social.x_followers.minintegerNo—Minimum: 0
social.youtube_followersobjectNo—Unknown fields rejected
social.youtube_followers.maxintegerNo—Minimum: 0
social.youtube_followers.minintegerNo—Minimum: 0
sortobjectNo—Unknown fields rejected
sort.directionstringNo—Allowed: asc, desc
sort.fieldstringYes—Allowed: date_added, review_count, country, city, business_type, domain_rating, domain_rating_v4, referring_domains, traffic, keywords, total_followers, latest_post_at, indexed_pages_observed, trustpilot_reviews, linkedin_followers, dropped_at
tldsobjectNo—Unknown fields rejected
tlds.excludearray<string>No—Unique items
tlds.includearray<string>No—Unique items
{
  "pagination": {
    "page": 1,
    "page_size": 20
  },
  "location": {
    "countries": {
      "include": [
        "US"
      ]
    },
    "regions": {
      "include": [
        "Texas"
      ]
    }
  },
  "business_profile": {
    "reviews": {
      "min": 10
    },
    "trustpilot_status": "found",
    "trustpilot_reviews": {
      "min": 10
    }
  },
  "seo": {
    "google_index_status": "found",
    "indexed_pages_observed": {
      "min": 1,
      "max": 500
    }
  },
  "sort": {
    "field": "trustpilot_reviews",
    "direction": "desc"
  }
}

Result

items contains inventory records; total is the matching count. domain_id is the input to reveal_domains and get_domain_details. Results include google_index, trustpilot and linkedin observations. Missing values are unknown; identity fields are omitted while the domain is masked. Numeric research sorts keep unknown values last in both directions.

{
  "items": [
    {
      "google_index": {
        "status": "found",
        "count_status": "complete",
        "observed_pages": 12,
        "count_limit": 500,
        "search_capped": false,
        "count_is_exact": false,
        "checked_at": "2026-10-28T08:00:00Z",
        "count_checked_at": "2026-10-28T08:05:00Z"
      },
      "trustpilot": {
        "status": "found",
        "details_status": "complete",
        "review_count": 120,
        "review_count_is_approximate": false,
        "score": 4.2,
        "checked_at": "2026-10-28T08:00:00Z",
        "extracted_at": "2026-10-28T08:05:00Z"
      },
      "linkedin": {
        "status": "found",
        "details_status": "not_applicable",
        "follower_count": 1200,
        "checked_at": "2026-11-06T07:00:00Z"
      },
      "domain_id": 12345,
      "status": "expired",
      "business_type": "Plumber",
      "business_type_key": "plumber",
      "review_count": 31,
      "country_code": "US",
      "city": "Austin",
      "region": "Texas",
      "tld": "com",
      "revealed": false,
      "social_data_status": "processed",
      "social_platforms": [],
      "social_profiles": []
    }
  ],
  "total": 1,
  "page": 1,
  "page_size": 20
}

search_auction_domains Search auction domainsRead

Search domains in active auctions by platform, geography, business category, extension, reviews and SEO signals.

Arguments

FieldTypeRequiredDescription and constraints
businessobjectNo—Unknown fields rejected
business.querystringNo—Min length: 1 · Max length: 200
business.type_keysarray<string>No—Unique items
business_profileobjectNo—Unknown fields rejected
business_profile.google_statusstringNo—Allowed: not_closed, permanently_closed, unknown
business_profile.has_opening_hoursbooleanNo—
business_profile.has_phonebooleanNo—
business_profile.ratingobjectNo—Unknown fields rejected
business_profile.rating.maxnumberNo—Minimum: 1 · Maximum: 5
business_profile.rating.minnumberNo—Minimum: 1 · Maximum: 5
business_profile.reviewsobjectNo—Unknown fields rejected
business_profile.reviews.maxintegerNo—Minimum: 0
business_profile.reviews.minintegerNo—Minimum: 0
business_profile.trustpilot_reviewsobjectNoReview count observed in Google. Counts may be approximate; unknown counts are excluded.Unknown fields rejected
business_profile.trustpilot_reviews.maxintegerNo—Minimum: 0 · Maximum: 9007199254740991
business_profile.trustpilot_reviews.minintegerNo—Minimum: 0 · Maximum: 9007199254740991
business_profile.trustpilot_scoreobjectNoExact TrustScore observed in Google, from 0 to 5. Excludes unknown scores and rounded display stars.Unknown fields rejected
business_profile.trustpilot_score.maxnumberNo—Minimum: 0 · Maximum: 5
business_profile.trustpilot_score.minnumberNo—Minimum: 0 · Maximum: 5
business_profile.trustpilot_statusstringNoTrustpilot profile status observed in Google. Not found does not prove absence.Allowed: found, not_found, unchecked, error
kgmidstringNo—Pattern: ^/(?:g|m)/[A-Za-z0-9_-]+$
lifecycleobjectNo—Unknown fields rejected
lifecycle.auction_end_afterstring<date-time>No—
lifecycle.auction_end_beforestring<date-time>No—
locationobjectNo—Unknown fields rejected
location.citiesarray<string>No—Unique items
location.continentsobjectNo—Unknown fields rejected
location.continents.excludearray<string>No—Unique items
location.continents.includearray<string>No—Unique items
location.countriesobjectNo—Unknown fields rejected
location.countries.excludearray<string>No—Unique items
location.countries.includearray<string>No—Unique items
location.regionsobjectNo—Unknown fields rejected
location.regions.excludearray<string>No—Unique items
location.regions.includearray<string>No—Unique items
paginationobjectNo—Unknown fields rejected
pagination.pageintegerNo—Minimum: 1
pagination.page_sizeintegerNo—Minimum: 1 · Maximum: 10000
platformsarray<string>No—Unique items
seoobjectNo—Unknown fields rejected
seo.domain_ratingobjectNo—Unknown fields rejected
seo.domain_rating.maxnumberNo—Minimum: 0 · Maximum: 100
seo.domain_rating.minnumberNo—Minimum: 0 · Maximum: 100
seo.domain_rating_v4objectNo—Unknown fields rejected
seo.domain_rating_v4.maxnumberNo—Minimum: 0 · Maximum: 100
seo.domain_rating_v4.minnumberNo—Minimum: 0 · Maximum: 100
seo.google_index_statusstringNoWhether a Google site query found an indexed page. Not found does not prove deindexing.Allowed: found, not_found, unchecked, error
seo.index_search_cappedbooleanNoWhether the deeper search reached its result limit. False does not imply an exact count.
seo.indexed_pages_observedobjectNoDistinct matching URLs observed in Google, capped at 500. This is not an exact index total.Unknown fields rejected
seo.indexed_pages_observed.maxintegerNo—Minimum: 0 · Maximum: 500
seo.indexed_pages_observed.minintegerNo—Minimum: 0 · Maximum: 500
seo.keywordsobjectNo—Unknown fields rejected
seo.keywords.maxintegerNo—Minimum: 0
seo.keywords.minintegerNo—Minimum: 0
seo.referring_domainsobjectNo—Unknown fields rejected
seo.referring_domains.maxintegerNo—Minimum: 0
seo.referring_domains.minintegerNo—Minimum: 0
seo.trafficobjectNo—Unknown fields rejected
seo.traffic.maxnumberNo—Minimum: 0
seo.traffic.minnumberNo—Minimum: 0
socialobjectNo—Unknown fields rejected
social.facebook_followersobjectNo—Unknown fields rejected
social.facebook_followers.maxintegerNo—Minimum: 0
social.facebook_followers.minintegerNo—Minimum: 0
social.followersobjectNoTotal followers observed on retained Google Search Profile social links.Unknown fields rejected
social.followers.maxintegerNo—Minimum: 0
social.followers.minintegerNo—Minimum: 0
social.has_wiki_pagebooleanNo—
social.instagram_followersobjectNo—Unknown fields rejected
social.instagram_followers.maxintegerNo—Minimum: 0
social.instagram_followers.minintegerNo—Minimum: 0
social.linkedin_followersobjectNo—Unknown fields rejected
social.linkedin_followers.maxintegerNo—Minimum: 0
social.linkedin_followers.minintegerNo—Minimum: 0
social.linkedin_latest_post_afterstring<date-time>NoOnly profiles with observed LinkedIn activity at or after this RFC 3339 instant.
social.matchstringNo—Allowed: any, all
social.platformsarray<string>No—Unique items
social.tiktok_followersobjectNo—Unknown fields rejected
social.tiktok_followers.maxintegerNo—Minimum: 0
social.tiktok_followers.minintegerNo—Minimum: 0
social.trends_datastringNo—Allowed: this_year, last_2_years, all_time, none
social.trends_existsbooleanNo—
social.x_followersobjectNo—Unknown fields rejected
social.x_followers.maxintegerNo—Minimum: 0
social.x_followers.minintegerNo—Minimum: 0
social.youtube_followersobjectNo—Unknown fields rejected
social.youtube_followers.maxintegerNo—Minimum: 0
social.youtube_followers.minintegerNo—Minimum: 0
sortobjectNo—Unknown fields rejected
sort.directionstringNo—Allowed: asc, desc
sort.fieldstringYes—Allowed: date_added, review_count, country, city, business_type, domain_rating, domain_rating_v4, referring_domains, traffic, keywords, total_followers, latest_post_at, indexed_pages_observed, trustpilot_reviews, linkedin_followers, auction_end_at
tldsobjectNo—Unknown fields rejected
tlds.excludearray<string>No—Unique items
tlds.includearray<string>No—Unique items
{
  "pagination": {
    "page": 1,
    "page_size": 20
  },
  "platforms": [
    "sedo"
  ],
  "sort": {
    "field": "linkedin_followers",
    "direction": "desc"
  },
  "social": {
    "platforms": [
      "linkedin"
    ],
    "linkedin_followers": {
      "min": 100
    }
  },
  "lifecycle": {
    "auction_end_before": "2026-09-30T00:00:00Z"
  }
}

Result

items contains auction records with auction_end_at and platform when available. Domain visibility follows paid inventory access.

{
  "items": [
    {
      "google_index": {
        "status": "found",
        "count_status": "complete",
        "observed_pages": 12,
        "count_limit": 500,
        "search_capped": false,
        "count_is_exact": false,
        "checked_at": "2026-10-28T08:00:00Z",
        "count_checked_at": "2026-10-28T08:05:00Z"
      },
      "trustpilot": {
        "status": "found",
        "details_status": "complete",
        "review_count": 120,
        "review_count_is_approximate": false,
        "score": 4.2,
        "checked_at": "2026-10-28T08:00:00Z",
        "extracted_at": "2026-10-28T08:05:00Z"
      },
      "linkedin": {
        "status": "found",
        "details_status": "not_applicable",
        "follower_count": 1200,
        "checked_at": "2026-11-06T07:00:00Z"
      },
      "domain_id": 12345,
      "status": "auction",
      "business_type": "Plumber",
      "business_type_key": "plumber",
      "review_count": 31,
      "country_code": "US",
      "city": "Austin",
      "region": "Texas",
      "tld": "com",
      "revealed": false,
      "social_data_status": "processed",
      "social_platforms": [],
      "social_profiles": [],
      "platform": "sedo",
      "auction_end_at": "2026-09-30T00:00:00Z"
    }
  ],
  "total": 1,
  "page": 1,
  "page_size": 20
}

search_pending_delete_domains Search pending-delete domainsRead

Search domains scheduled to drop by source, geography, business category, extension, reviews and SEO signals.

Arguments

FieldTypeRequiredDescription and constraints
businessobjectNo—Unknown fields rejected
business.querystringNo—Min length: 1 · Max length: 200
business.type_keysarray<string>No—Unique items
business_profileobjectNo—Unknown fields rejected
business_profile.google_statusstringNo—Allowed: not_closed, permanently_closed, unknown
business_profile.has_opening_hoursbooleanNo—
business_profile.has_phonebooleanNo—
business_profile.ratingobjectNo—Unknown fields rejected
business_profile.rating.maxnumberNo—Minimum: 1 · Maximum: 5
business_profile.rating.minnumberNo—Minimum: 1 · Maximum: 5
business_profile.reviewsobjectNo—Unknown fields rejected
business_profile.reviews.maxintegerNo—Minimum: 0
business_profile.reviews.minintegerNo—Minimum: 0
business_profile.trustpilot_reviewsobjectNoReview count observed in Google. Counts may be approximate; unknown counts are excluded.Unknown fields rejected
business_profile.trustpilot_reviews.maxintegerNo—Minimum: 0 · Maximum: 9007199254740991
business_profile.trustpilot_reviews.minintegerNo—Minimum: 0 · Maximum: 9007199254740991
business_profile.trustpilot_scoreobjectNoExact TrustScore observed in Google, from 0 to 5. Excludes unknown scores and rounded display stars.Unknown fields rejected
business_profile.trustpilot_score.maxnumberNo—Minimum: 0 · Maximum: 5
business_profile.trustpilot_score.minnumberNo—Minimum: 0 · Maximum: 5
business_profile.trustpilot_statusstringNoTrustpilot profile status observed in Google. Not found does not prove absence.Allowed: found, not_found, unchecked, error
kgmidstringNo—Pattern: ^/(?:g|m)/[A-Za-z0-9_-]+$
lifecycleobjectNo—Unknown fields rejected
lifecycle.scheduled_drop_afterstring<date-time>No—
lifecycle.scheduled_drop_beforestring<date-time>No—
locationobjectNo—Unknown fields rejected
location.citiesarray<string>No—Unique items
location.continentsobjectNo—Unknown fields rejected
location.continents.excludearray<string>No—Unique items
location.continents.includearray<string>No—Unique items
location.countriesobjectNo—Unknown fields rejected
location.countries.excludearray<string>No—Unique items
location.countries.includearray<string>No—Unique items
location.regionsobjectNo—Unknown fields rejected
location.regions.excludearray<string>No—Unique items
location.regions.includearray<string>No—Unique items
paginationobjectNo—Unknown fields rejected
pagination.pageintegerNo—Minimum: 1
pagination.page_sizeintegerNo—Minimum: 1 · Maximum: 10000
platformsarray<string>No—Unique items
seoobjectNo—Unknown fields rejected
seo.domain_ratingobjectNo—Unknown fields rejected
seo.domain_rating.maxnumberNo—Minimum: 0 · Maximum: 100
seo.domain_rating.minnumberNo—Minimum: 0 · Maximum: 100
seo.domain_rating_v4objectNo—Unknown fields rejected
seo.domain_rating_v4.maxnumberNo—Minimum: 0 · Maximum: 100
seo.domain_rating_v4.minnumberNo—Minimum: 0 · Maximum: 100
seo.google_index_statusstringNoWhether a Google site query found an indexed page. Not found does not prove deindexing.Allowed: found, not_found, unchecked, error
seo.index_search_cappedbooleanNoWhether the deeper search reached its result limit. False does not imply an exact count.
seo.indexed_pages_observedobjectNoDistinct matching URLs observed in Google, capped at 500. This is not an exact index total.Unknown fields rejected
seo.indexed_pages_observed.maxintegerNo—Minimum: 0 · Maximum: 500
seo.indexed_pages_observed.minintegerNo—Minimum: 0 · Maximum: 500
seo.keywordsobjectNo—Unknown fields rejected
seo.keywords.maxintegerNo—Minimum: 0
seo.keywords.minintegerNo—Minimum: 0
seo.referring_domainsobjectNo—Unknown fields rejected
seo.referring_domains.maxintegerNo—Minimum: 0
seo.referring_domains.minintegerNo—Minimum: 0
seo.trafficobjectNo—Unknown fields rejected
seo.traffic.maxnumberNo—Minimum: 0
seo.traffic.minnumberNo—Minimum: 0
socialobjectNo—Unknown fields rejected
social.facebook_followersobjectNo—Unknown fields rejected
social.facebook_followers.maxintegerNo—Minimum: 0
social.facebook_followers.minintegerNo—Minimum: 0
social.followersobjectNoTotal followers observed on retained Google Search Profile social links.Unknown fields rejected
social.followers.maxintegerNo—Minimum: 0
social.followers.minintegerNo—Minimum: 0
social.has_wiki_pagebooleanNo—
social.instagram_followersobjectNo—Unknown fields rejected
social.instagram_followers.maxintegerNo—Minimum: 0
social.instagram_followers.minintegerNo—Minimum: 0
social.linkedin_followersobjectNo—Unknown fields rejected
social.linkedin_followers.maxintegerNo—Minimum: 0
social.linkedin_followers.minintegerNo—Minimum: 0
social.linkedin_latest_post_afterstring<date-time>NoOnly profiles with observed LinkedIn activity at or after this RFC 3339 instant.
social.matchstringNo—Allowed: any, all
social.platformsarray<string>No—Unique items
social.tiktok_followersobjectNo—Unknown fields rejected
social.tiktok_followers.maxintegerNo—Minimum: 0
social.tiktok_followers.minintegerNo—Minimum: 0
social.trends_datastringNo—Allowed: this_year, last_2_years, all_time, none
social.trends_existsbooleanNo—
social.x_followersobjectNo—Unknown fields rejected
social.x_followers.maxintegerNo—Minimum: 0
social.x_followers.minintegerNo—Minimum: 0
social.youtube_followersobjectNo—Unknown fields rejected
social.youtube_followers.maxintegerNo—Minimum: 0
social.youtube_followers.minintegerNo—Minimum: 0
sortobjectNo—Unknown fields rejected
sort.directionstringNo—Allowed: asc, desc
sort.fieldstringYes—Allowed: date_added, review_count, country, city, business_type, domain_rating, domain_rating_v4, referring_domains, traffic, keywords, total_followers, latest_post_at, indexed_pages_observed, trustpilot_reviews, linkedin_followers, scheduled_drop_at
tldsobjectNo—Unknown fields rejected
tlds.excludearray<string>No—Unique items
tlds.includearray<string>No—Unique items
{
  "pagination": {
    "page": 1,
    "page_size": 20
  },
  "lifecycle": {
    "scheduled_drop_after": "2026-09-20T00:00:00Z"
  },
  "seo": {
    "google_index_status": "found",
    "index_search_capped": false
  },
  "sort": {
    "field": "indexed_pages_observed",
    "direction": "desc"
  }
}

Result

items contains pending-delete records with scheduled_drop_at and source platform when available. Domain visibility follows paid inventory access.

{
  "items": [
    {
      "google_index": {
        "status": "found",
        "count_status": "complete",
        "observed_pages": 12,
        "count_limit": 500,
        "search_capped": false,
        "count_is_exact": false,
        "checked_at": "2026-10-28T08:00:00Z",
        "count_checked_at": "2026-10-28T08:05:00Z"
      },
      "trustpilot": {
        "status": "found",
        "details_status": "complete",
        "review_count": 120,
        "review_count_is_approximate": false,
        "score": 4.2,
        "checked_at": "2026-10-28T08:00:00Z",
        "extracted_at": "2026-10-28T08:05:00Z"
      },
      "linkedin": {
        "status": "found",
        "details_status": "not_applicable",
        "follower_count": 1200,
        "checked_at": "2026-11-06T07:00:00Z"
      },
      "domain_id": 12345,
      "status": "dropping",
      "business_type": "Plumber",
      "business_type_key": "plumber",
      "review_count": 31,
      "country_code": "US",
      "city": "Austin",
      "region": "Texas",
      "tld": "com",
      "revealed": false,
      "social_data_status": "processed",
      "social_platforms": [],
      "social_profiles": [],
      "scheduled_drop_at": "2026-09-21T14:00:00Z"
    }
  ],
  "total": 1,
  "page": 1,
  "page_size": 20
}

list_business_types Discover business typesRead

Get canonical business types before searching so a large result page contains only relevant categories.

Arguments

FieldTypeRequiredDescription and constraints
countrystringNo—Pattern: ^[A-Za-z]{2}$
inventorystringYes—Allowed: expired, auctions, pending-delete
{
  "inventory": "expired",
  "country": "US"
}

Result

Pass returned business_type_key values to the matching lifecycle search tool in business.type_keys for exact any-of matching. The gcid prefix is not required; business_type is display text only.

{
  "items": [
    {
      "business_type_key": "roofing_contractor",
      "business_type": "Roofing contractor",
      "count": 958
    },
    {
      "business_type_key": "gutter_service",
      "business_type": "Gutter service",
      "count": 45
    }
  ]
}

list_domain_tlds Discover available extensionsRead

Get contextual extension counts for one lifecycle inventory, optionally filtered by country.

Arguments

FieldTypeRequiredDescription and constraints
countrystringNo—Pattern: ^[A-Za-z]{2}$
inventorystringYes—Allowed: expired, auctions, pending-delete
{
  "inventory": "expired",
  "country": "US"
}

Result

items contains tld and count for each extension in the selected inventory and country. The suffix has no leading dot.

{
  "items": [
    {
      "tld": "com",
      "count": 120
    },
    {
      "tld": "co.uk",
      "count": 24
    }
  ]
}

list_revealed_domains Work with your revealed collectionRead

Search domains already revealed by the account that owns the key. This does not reveal or charge for new domains.

Arguments

FieldTypeRequiredDescription and constraints
filtersobjectNo—Unknown fields rejected
filters.businessobjectNo—Unknown fields rejected
filters.business.querystringNo—Min length: 1 · Max length: 200
filters.business.type_keysarray<string>No—Unique items
filters.business_profileobjectNo—Unknown fields rejected
filters.business_profile.google_statusstringNo—Allowed: not_closed, permanently_closed, unknown
filters.business_profile.has_opening_hoursbooleanNo—
filters.business_profile.has_phonebooleanNo—
filters.business_profile.ratingobjectNo—Unknown fields rejected
filters.business_profile.rating.maxnumberNo—Minimum: 1 · Maximum: 5
filters.business_profile.rating.minnumberNo—Minimum: 1 · Maximum: 5
filters.business_profile.reviewsobjectNo—Unknown fields rejected
filters.business_profile.reviews.maxintegerNo—Minimum: 0
filters.business_profile.reviews.minintegerNo—Minimum: 0
filters.business_profile.trustpilot_reviewsobjectNoReview count observed in Google. Counts may be approximate; unknown counts are excluded.Unknown fields rejected
filters.business_profile.trustpilot_reviews.maxintegerNo—Minimum: 0 · Maximum: 9007199254740991
filters.business_profile.trustpilot_reviews.minintegerNo—Minimum: 0 · Maximum: 9007199254740991
filters.business_profile.trustpilot_scoreobjectNoExact TrustScore observed in Google, from 0 to 5. Excludes unknown scores and rounded display stars.Unknown fields rejected
filters.business_profile.trustpilot_score.maxnumberNo—Minimum: 0 · Maximum: 5
filters.business_profile.trustpilot_score.minnumberNo—Minimum: 0 · Maximum: 5
filters.business_profile.trustpilot_statusstringNoTrustpilot profile status observed in Google. Not found does not prove absence.Allowed: found, not_found, unchecked, error
filters.kgmidstringNo—Pattern: ^/(?:g|m)/[A-Za-z0-9_-]+$
filters.lifecycleobjectNo—Unknown fields rejected
filters.lifecycle.dropped_afterstring<date-time>No—
filters.lifecycle.dropped_beforestring<date-time>No—
filters.locationobjectNo—Unknown fields rejected
filters.location.citiesarray<string>No—Unique items
filters.location.continentsobjectNo—Unknown fields rejected
filters.location.continents.excludearray<string>No—Unique items
filters.location.continents.includearray<string>No—Unique items
filters.location.countriesobjectNo—Unknown fields rejected
filters.location.countries.excludearray<string>No—Unique items
filters.location.countries.includearray<string>No—Unique items
filters.location.regionsobjectNo—Unknown fields rejected
filters.location.regions.excludearray<string>No—Unique items
filters.location.regions.includearray<string>No—Unique items
filters.platformsarray<string>No—Unique items
filters.seoobjectNo—Unknown fields rejected
filters.seo.domain_ratingobjectNo—Unknown fields rejected
filters.seo.domain_rating.maxnumberNo—Minimum: 0 · Maximum: 100
filters.seo.domain_rating.minnumberNo—Minimum: 0 · Maximum: 100
filters.seo.domain_rating_v4objectNo—Unknown fields rejected
filters.seo.domain_rating_v4.maxnumberNo—Minimum: 0 · Maximum: 100
filters.seo.domain_rating_v4.minnumberNo—Minimum: 0 · Maximum: 100
filters.seo.google_index_statusstringNoWhether a Google site query found an indexed page. Not found does not prove deindexing.Allowed: found, not_found, unchecked, error
filters.seo.index_search_cappedbooleanNoWhether the deeper search reached its result limit. False does not imply an exact count.
filters.seo.indexed_pages_observedobjectNoDistinct matching URLs observed in Google, capped at 500. This is not an exact index total.Unknown fields rejected
filters.seo.indexed_pages_observed.maxintegerNo—Minimum: 0 · Maximum: 500
filters.seo.indexed_pages_observed.minintegerNo—Minimum: 0 · Maximum: 500
filters.seo.keywordsobjectNo—Unknown fields rejected
filters.seo.keywords.maxintegerNo—Minimum: 0
filters.seo.keywords.minintegerNo—Minimum: 0
filters.seo.referring_domainsobjectNo—Unknown fields rejected
filters.seo.referring_domains.maxintegerNo—Minimum: 0
filters.seo.referring_domains.minintegerNo—Minimum: 0
filters.seo.trafficobjectNo—Unknown fields rejected
filters.seo.traffic.maxnumberNo—Minimum: 0
filters.seo.traffic.minnumberNo—Minimum: 0
filters.socialobjectNo—Unknown fields rejected
filters.social.facebook_followersobjectNo—Unknown fields rejected
filters.social.facebook_followers.maxintegerNo—Minimum: 0
filters.social.facebook_followers.minintegerNo—Minimum: 0
filters.social.followersobjectNoTotal followers observed on retained Google Search Profile social links.Unknown fields rejected
filters.social.followers.maxintegerNo—Minimum: 0
filters.social.followers.minintegerNo—Minimum: 0
filters.social.has_wiki_pagebooleanNo—
filters.social.instagram_followersobjectNo—Unknown fields rejected
filters.social.instagram_followers.maxintegerNo—Minimum: 0
filters.social.instagram_followers.minintegerNo—Minimum: 0
filters.social.linkedin_followersobjectNo—Unknown fields rejected
filters.social.linkedin_followers.maxintegerNo—Minimum: 0
filters.social.linkedin_followers.minintegerNo—Minimum: 0
filters.social.linkedin_latest_post_afterstring<date-time>NoOnly profiles with observed LinkedIn activity at or after this RFC 3339 instant.
filters.social.matchstringNo—Allowed: any, all
filters.social.platformsarray<string>No—Unique items
filters.social.tiktok_followersobjectNo—Unknown fields rejected
filters.social.tiktok_followers.maxintegerNo—Minimum: 0
filters.social.tiktok_followers.minintegerNo—Minimum: 0
filters.social.trends_datastringNo—Allowed: this_year, last_2_years, all_time, none
filters.social.trends_existsbooleanNo—
filters.social.x_followersobjectNo—Unknown fields rejected
filters.social.x_followers.maxintegerNo—Minimum: 0
filters.social.x_followers.minintegerNo—Minimum: 0
filters.social.youtube_followersobjectNo—Unknown fields rejected
filters.social.youtube_followers.maxintegerNo—Minimum: 0
filters.social.youtube_followers.minintegerNo—Minimum: 0
filters.statusstringNo—Allowed: auction, dropping, expired
filters.tldsobjectNo—Unknown fields rejected
filters.tlds.excludearray<string>No—Unique items
filters.tlds.includearray<string>No—Unique items
pageintegerNo—Minimum: 1
page_sizeintegerNo—Minimum: 1 · Maximum: 100
querystringNo—Min length: 1 · Max length: 200
revealed_withinintegerNo—Minimum: 1 · Maximum: 876000
statusstringNo—Allowed: expired, registered
{
  "page": 1,
  "page_size": 20,
  "revealed_within": 168,
  "filters": {
    "location": {
      "countries": {
        "include": [
          "US"
        ]
      }
    },
    "business_profile": {
      "trustpilot_status": "found",
      "trustpilot_reviews": {
        "min": 10
      }
    }
  }
}

Result

items contains domain names, reveal timestamps, status and research fields. reveal_id identifies the reveal record; domain_id identifies the inventory resource.

{
  "items": [
    {
      "google_index": {
        "status": "found",
        "count_status": "complete",
        "observed_pages": 12,
        "count_limit": 500,
        "search_capped": false,
        "count_is_exact": false,
        "checked_at": "2026-10-28T08:00:00Z",
        "count_checked_at": "2026-10-28T08:05:00Z"
      },
      "trustpilot": {
        "status": "found",
        "details_status": "complete",
        "review_count": 120,
        "review_count_is_approximate": false,
        "score": 4.2,
        "checked_at": "2026-10-28T08:00:00Z",
        "extracted_at": "2026-10-28T08:05:00Z",
        "profile_url": "https://www.trustpilot.com/review/example.com"
      },
      "linkedin": {
        "status": "found",
        "details_status": "not_applicable",
        "follower_count": 1200,
        "checked_at": "2026-11-06T07:00:00Z",
        "profile_url": "https://www.linkedin.com/company/example/"
      },
      "reveal_id": "00000000-0000-4000-8000-000000000001",
      "domain_id": 12345,
      "domain": "example.com",
      "revealed_at": "2026-09-16T12:00:00Z",
      "status": "expired",
      "business_type": "Plumber",
      "business_type_key": "plumber",
      "review_count": 31,
      "country_code": "US",
      "city": "Austin",
      "region": "Texas"
    }
  ],
  "total": 1,
  "page": 1,
  "page_size": 20
}

get_domain_details Inspect an accessible domainRead

Read a domain you have revealed, or an auction/dropping listing available through your active paid subscription. Knowing a fully expired name does not bypass its reveal requirement.

Arguments

FieldTypeRequiredDescription and constraints
domain_idinteger<int64>Yes—Minimum: 1
{
  "domain_id": 12345
}

Result

A single detail object, not an items array. This example shows selected fields. Data can include business identity, location, SEO metrics, social_data, auctions and registration_links when present. LinkedIn and Trustpilot links can be present while social_data.status is pending_processing. Trustpilot links use www.trustpilot.com. Missing optional data is unknown; LinkedIn employee brackets are separate from follower counts. Abbreviated follower counts carry follower_count_is_approximate; absent counts are unknown. LinkedIn counts are returned separately and do not change existing follower totals.

{
  "domain_id": 12345,
  "domain": "example.com",
  "revealed_at": "2026-09-16T12:00:00Z",
  "status": "expired",
  "business_type": "Plumber",
  "business_type_key": "plumber",
  "review_count": 31,
  "country_code": "US",
  "city": "Austin",
  "region": "Texas",
  "auctions": [],
  "social_data": {
    "status": "pending_processing",
    "links": [
      {
        "platform": "linkedin",
        "url": "https://www.linkedin.com/company/example/",
        "follower_count": 1200,
        "follower_count_is_approximate": true
      },
      {
        "platform": "trustpilot",
        "url": "https://www.trustpilot.com/review/example.com"
      }
    ],
    "misattributed_links": []
  }
}

reveal_domains Reveal eligible domainsWrite

Reveal one or more domains from search results in one request. This is the only write tool and each successful paid reveal can consume one credit. Ask for approval before calling it.

Arguments

FieldTypeRequiredDescription and constraints
domain_idsarray<integer<int64>>Yes—Min items: 1 · Max items: 100 · Unique items
{
  "domain_ids": [
    12345,
    67890
  ]
}

Result

items preserves request order and reports an outcome for every ID, including item-level failures. credits_charged and credits_remaining summarize the entire request. A reveal is not a domain registration or purchase.

{
  "items": [
    {
      "domain_id": 12345,
      "domain": "example.com",
      "outcome": "revealed",
      "credit_source": "subscription"
    },
    {
      "domain_id": 67890,
      "domain": "example.net",
      "outcome": "already_revealed"
    }
  ],
  "credits_charged": 1,
  "credits_remaining": 49
}

Filter values and result format

Pagination, numeric ranges and reveal IDs are JSON numbers; boolean filters are JSON booleans. Filters use typed nested objects, for example { "business_profile": { "reviews": { "min": 10 } } }. Unknown or lifecycle-incompatible fields are rejected.

Results include schema-validated structuredContent plus the same JSON in content[0].text for compatible clients. Example:

{
  "content": [
    {
      "type": "text",
      "text": "{\"items\":[]}"
    }
  ],
  "structuredContent": {
    "items": []
  }
}

Check isError for tool failures. Argument tables show the input schema published by each tool. Output schemas are generated from the OpenAPI specification.

Filter by state or region

Use location.regions.include or location.regions.exclude with full state, province or region names, such as Texas, Ontario or England. Matching is exact and case-insensitive. Multiple names match any selected region; combine with location.countries to disambiguate names. Responses return the value as region when known. For list_revealed_domains, nest the location object under filters.

{
  "location": {
    "countries": {
      "include": [
        "US"
      ]
    },
    "regions": {
      "include": [
        "Texas",
        "California"
      ]
    }
  }
}

Decide when credits can be spent

Require client approval for each reveal batch. The server enforces key permissions but does not pause a permitted write. A prompt saying “ask first” is not enough.

  • Fully expired names: remain masked until revealed by the account.
  • Auction and dropping inventory: an active paid subscription shows names and details without a reveal.
  • Repeating a reveal: an already-revealed domain can return an error. After a timeout, check list_revealed_domains before retrying.
  • No purchase operation: revealing a name does not register or buy a domain.

Troubleshooting

Check the client log and tool error.

401 · Missing, invalid or revoked key

Send Authorization: Bearer with the full key on every request. Remove extra quotes or spaces. Cookies do not work. Replace revoked keys.

403 · Reveal or inventory access denied

Reveals need a Read and reveal key. Auction and pending-delete names require an active paid subscription.

400 · Invalid arguments or reveal rejected

Use numbers for pagination, ranges and domain IDs; use the typed nested filter objects shown below. Reveals also return 400 for no credits or an already-revealed domain.

405 · Browser or SSE connection fails

A browser GET is not a connection test. GET event streams and DELETE sessions are not provided. Use Streamable HTTP, not legacy SSE.

OAuth login loop or no place to enter a header

This uses API keys, not an OAuth sign-in flow. Your client must support a custom Authorization header.

403 · Browser-origin request blocked

Cross-origin browser requests are blocked. Use a native or backend MCP client.

Timeout, large response or server error

Reduce page size or narrow the filters. Responses are limited to 64 MiB. After a reveal timeout, check revealed domains before retrying.

The service is stateless and does not issue Mcp-Session-Id.

Keep your key and research private

  • Use a separate read-only key per client unless reveals are needed.
  • Use a secret store or environment variable. Never commit a key or put it in a URL or prompt.
  • Tool results are shared with your AI client. Review its data policy.
  • Revoke an unused or exposed key from API keys. Existing clients using it will stop working.