Searchwire

SEO data for AI agents: keyword volume, Google results, App Store keywords, domain and name checks.

Should I use this

Quality & Safety

A
Description quality
97%
Schema completeness
86%
Naming quality
84%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (1)

  • LOWTool 'check_domains' description lacks action verbin check_domains

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,770Tokens (tool definitions)
~1.0 KBTypical response size
Moderate attention impact (1.38% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "searchwire": {
      "url": "https://searchwire.dev/mcp"
    }
  }
}

Remote endpoints

https://searchwire.dev/mcpstreamable-http

What it can do

Tool inventory

Tools (10)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢keyword_volume(keywords, country, language)

Monthly Google search volume, CPC, ad competition (0-1, not ranking difficulty) and 12 months of history for up to 1,000 keywords in one country and language. $0.02 a call plus $0.0002 a keyword.

Input Schema

{
  "type": "object",
  "properties": {
    "keywords": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "minItems": 1,
      "maxItems": 1000
    },
    "country": {
      "type": "string",
      "description": "Two-letter country code. Default \"us\"."
    },
    "language": {
      "type": "string",
      "description": "Two-letter language code; Chinese is \"zh-TW\" or \"zh-CN\". Default \"en\"."
    }
  },
  "required": [
    "keywords"
  ]
}
🟢google_results(keyword, country, language, depth, source)

The organic Google results for a keyword: rank, url, domain and title, with the time they were observed. $0.002 when collected earlier, $0.005 fetched live.

Input Schema

{
  "type": "object",
  "properties": {
    "keyword": {
      "type": "string"
    },
    "country": {
      "type": "string",
      "description": "Two-letter country code. Default \"us\"."
    },
    "language": {
      "type": "string",
      "description": "Two-letter language code; Chinese is \"zh-TW\" or \"zh-CN\". Default \"en\"."
    },
    "depth": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "description": "How many results. Default 10."
    },
    "source": {
      "type": "string",
      "enum": [
        "any",
        "index",
        "live"
      ],
      "description": "\"index\" = results collected earlier, \"live\" = fetched now, \"any\" (default) = collected first, live if none."
    }
  },
  "required": [
    "keyword"
  ]
}
🟢check_domains(domains)

Whether up to 50 domain names are registered, from the registries (RDAP and WHOIS); registered ones come with registrar, creation and expiry dates. Free. Not registered does not guarantee the standard price (reserved or premium names).

Input Schema

{
  "type": "object",
  "properties": {
    "domains": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "minItems": 1,
      "maxItems": 50
    }
  },
  "required": [
    "domains"
  ]
}
🟢check_name(name, tlds, country)

One check of a product or brand name: its domain per TLD, the GitHub account, the npm package, and with a key the name's search volume. Free without the volume.

Input Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "Letters, digits and inner hyphens."
    },
    "tlds": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 10,
      "description": "Default com, dev, ai, io, app, co."
    },
    "country": {
      "type": "string",
      "description": "Two-letter country code. Default \"us\"."
    }
  },
  "required": [
    "name"
  ]
}
🟢app_keywords(app_id, store, limit, offset, order, ...)

The keywords an app ranks for in App Store or Google Play search, each with monthly store search volume and the app's rank (United States, English). $0.02 a call plus $0.0002 a keyword.

Input Schema

{
  "type": "object",
  "properties": {
    "app_id": {
      "type": "string",
      "description": "The number in an App Store link (e.g. \"964220645\"), or with store \"google\" the package name (e.g. \"org.telegram.messenger\")."
    },
    "store": {
      "type": "string",
      "enum": [
        "apple",
        "google"
      ],
      "description": "\"apple\" (App Store, default) or \"google\" (Google Play)."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 1000,
      "description": "Default 100."
    },
    "offset": {
      "type": "integer",
      "minimum": 0
    },
    "order": {
      "type": "string",
      "enum": [
        "volume",
        "rank"
      ],
      "description": "\"volume\" highest first (default) or \"rank\" best first."
    },
    "max_rank": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "description": "Only keywords where the app ranks this high or higher."
    },
    "min_volume": {
      "type": "integer",
      "minimum": 1
    }
  },
  "required": [
    "app_id"
  ]
}
🟢app_search(keyword, store, country, language, depth)

The apps a store's search returns for a keyword, in order, with rating and reviews. A first lookup takes 5 to 20 seconds; if it answers with an error saying it is not ready, nothing is charged and the same call a minute later returns it. $0.005 a keyword.

Input Schema

{
  "type": "object",
  "properties": {
    "keyword": {
      "type": "string"
    },
    "store": {
      "type": "string",
      "enum": [
        "apple",
        "google"
      ],
      "description": "\"apple\" (App Store, default) or \"google\" (Google Play)."
    },
    "country": {
      "type": "string",
      "description": "Two-letter country code. Default \"us\"."
    },
    "language": {
      "type": "string",
      "description": "Two-letter language code; Chinese is \"zh-TW\" or \"zh-CN\". Default \"en\"."
    },
    "depth": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "description": "Default 10; up to 100 on the App Store, 30 on Google Play."
    }
  },
  "required": [
    "keyword"
  ]
}
🟢app_competitors(app_id, store, limit)

The apps that rank for the same store keywords as an app, most shared keywords first, with shared keyword count, average rank and volume (United States, English). $0.02 a call plus $0.002 a competitor.

Input Schema

{
  "type": "object",
  "properties": {
    "app_id": {
      "type": "string",
      "description": "The number in an App Store link (e.g. \"964220645\"), or with store \"google\" the package name (e.g. \"org.telegram.messenger\")."
    },
    "store": {
      "type": "string",
      "enum": [
        "apple",
        "google"
      ],
      "description": "\"apple\" (App Store, default) or \"google\" (Google Play)."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "description": "Default 20."
    }
  },
  "required": [
    "app_id"
  ]
}
🟢app_keyword_volume(keywords, store)

Monthly App Store or Google Play search volume for up to 25 keywords of your choosing (United States, English). A first lookup takes up to a minute. $0.02 a keyword answered.

Input Schema

{
  "type": "object",
  "properties": {
    "keywords": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "minItems": 1,
      "maxItems": 25
    },
    "store": {
      "type": "string",
      "enum": [
        "apple",
        "google"
      ],
      "description": "\"apple\" (App Store, default) or \"google\" (Google Play)."
    }
  },
  "required": [
    "keywords"
  ]
}
🟢account

The key's balance, daily budget and today's (UTC) spend, cache hits and misses. Needs a key.

Input Schema

{
  "type": "object",
  "properties": {},
  "required": []
}
⚪buy_credit(amount_usd)

Starts a purchase of prepaid credit and returns checkout_url, where a person pays, and claim_url, which returns the key once paid. With a key, the credit is added to that key. Nothing is charged by this call.

Input Schema

{
  "type": "object",
  "properties": {
    "amount_usd": {
      "type": "integer",
      "enum": [
        10,
        25,
        50,
        100,
        250
      ]
    }
  },
  "required": [
    "amount_usd"
  ]
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded10 tools