whoisbrowsing

Add live visitor cursors to any website, no signup: create a site, get the snippet, check it's live.

Should I use this

Quality & Safety

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

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,050Tokens (tool definitions)
~3.0 KBTypical response size
Moderate attention impact (0.82% 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": {
    "mcp": {
      "url": "https://whoisbrowsing.com/mcp"
    }
  }
}

Remote endpoints

https://whoisbrowsing.com/mcpstreamable-http

What it can do

Tool inventory

Tools (3)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟡create_site(domains, name)

Creates a whoisbrowsing site with no sign-up and returns its script tag (snippet), one watch link per website, a one-time claim link and the next steps. Call it once per project; one site can hold several domains. Never write the watch or claim link into a file, commit or log.

Input Schema

{
  "type": "object",
  "properties": {
    "domains": {
      "minItems": 1,
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 253
      },
      "description": "The websites the tag will run on: host[:port] (e.g. localhost:3000, example.com), or *.host for every subdomain (e.g. *.vercel.app). A scheme or path is stripped; a host is letters, digits, hyphens and dots (a non-ASCII domain in its xn-- form); www. is the same website as the bare domain; each website is watched separately."
    },
    "name": {
      "description": "A label for the site. Defaults to the first domain.",
      "type": "string",
      "maxLength": 100
    }
  },
  "required": [
    "domains"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Output Schema

{
  "type": "object",
  "properties": {
    "siteId": {
      "type": "string",
      "pattern": "^[a-z0-9]{12}$",
      "description": "The site ID: the data-site value in the snippet. Public, fine to commit."
    },
    "snippet": {
      "type": "string",
      "description": "The script tag to put on every page, unchanged."
    },
    "watchUrls": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {
        "type": "string",
        "format": "uri"
      },
      "description": "One watch link per website: the human's own site, opened with a private owner key in the #fragment. Give it to the human right away; never write it into a file, commit or log. Treat it like a password."
    },
    "claimUrl": {
      "type": "string",
      "format": "uri",
      "description": "The one-time link that keeps the site in the human's account after signing in with Google. Expires after 30 days. Give it to the human right away; never write it into a file, commit or log."
    },
    "installDocs": {
      "type": "string",
      "format": "uri",
      "description": "Where the tag goes for each platform."
    },
    "next": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "What to do next, in order, in plain words."
    }
  },
  "required": [
    "siteId",
    "snippet",
    "watchUrls",
    "claimUrl",
    "installDocs",
    "next"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢get_install_instructions(platform)

Returns the install guide (Markdown) for one platform: where the script tag goes, a Content-Security-Policy note and how to verify. Call it without a platform, or with an unknown one, to get the list of platforms.

Input Schema

{
  "type": "object",
  "properties": {
    "platform": {
      "description": "The platform's slug: react, angular, astro, framer, ghost, nextjs, nuxt, html, remix, squarespace, svelte, vue, webflow, wix, ai-agent, wordpress, shopify. Common names such as \"Next.js\" work too.",
      "type": "string",
      "maxLength": 40
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢check_live(siteId, key)

Asks the live server whether the site's script is connected right now: the websites with a visitor, how many visitors, and which websites the owner is watching. Needs the site's owner key, the part after #wib= in the watch link create_site returned. Load a page that has the tag (a private window counts as a visitor) before calling it.

Input Schema

{
  "type": "object",
  "properties": {
    "siteId": {
      "type": "string",
      "maxLength": 64,
      "description": "The siteId create_site returned (12 lowercase letters and digits)."
    },
    "key": {
      "type": "string",
      "maxLength": 4096,
      "description": "The owner key: the part after #wib= in the watch link create_site returned. Never write it into a file."
    }
  },
  "required": [
    "siteId",
    "key"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Output Schema

{
  "type": "object",
  "properties": {
    "siteId": {
      "type": "string"
    },
    "connected": {
      "type": "boolean"
    },
    "webs": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "visitors": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "watching": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "required": [
    "siteId",
    "connected",
    "webs",
    "visitors",
    "watching"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded3 tools