FernTool IP Lookup

IP lookup with VPN/Tor/datacenter flags, batch lookup, WHOIS (RDAP), DNS, reverse DNS, subnet math.

Should I use this

Quality & Safety

A
Description quality
95%
Schema completeness
81%
Naming quality
85%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,080Tokens (tool definitions)
~374 BTypical response size
Moderate attention impact (0.84% 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": {
    "ip": {
      "url": "https://www.ferntool.com/mcp"
    }
  }
}

Remote endpoints

https://www.ferntool.com/mcpstreamable-http

What it can do

Tool inventory

Tools (12)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢get_my_ip

Return the public IP address (and ISP, ASN, location, timezone) of the caller as seen by FernTool. Note: for remote agents this is the IP of the machine calling the MCP server.

Input Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
⚪lookup_ip(ip)

Validate an IPv4/IPv6 address and return its version, scope (public/private/loopback/...), country, ASN and network owner (DB-IP Lite + IPtoASN data).

Input Schema

{
  "type": "object",
  "properties": {
    "ip": {
      "type": "string",
      "description": "IPv4 or IPv6 address"
    }
  },
  "required": [
    "ip"
  ]
}
🟢validate_ip(ip)

Check whether a string is a valid IPv4 or IPv6 address and classify it.

Input Schema

{
  "type": "object",
  "properties": {
    "ip": {
      "type": "string"
    }
  },
  "required": [
    "ip"
  ]
}
⚪batch_lookup_ip(ips)

Look up 1-100 IPv4/IPv6 addresses at once. Each result has version, scope, country, timezone, ASN, network owner and flags (is_tor, is_datacenter, provider).

Input Schema

{
  "type": "object",
  "properties": {
    "ips": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "minItems": 1,
      "maxItems": 100
    }
  },
  "required": [
    "ips"
  ]
}
⚪whois_lookup(query)

WHOIS via RDAP for a domain (registrar, created/expiry dates, status, nameservers, DNSSEC), an IP address (network name, range, owner org, country, abuse contact) or an ASN like AS13335.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "Domain, IPv4/IPv6 address, or ASN (e.g. AS13335)"
    }
  },
  "required": [
    "query"
  ]
}
⚪dns_lookup(domain, types)

Resolve DNS records for a domain via Cloudflare 1.1.1.1 DNS-over-HTTPS. Types: A, AAAA, MX, TXT, NS, CNAME, SOA (default: all).

Input Schema

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string"
    },
    "types": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "A",
          "AAAA",
          "MX",
          "TXT",
          "NS",
          "CNAME",
          "SOA"
        ]
      }
    }
  },
  "required": [
    "domain"
  ]
}
⚪reverse_dns(ip)

Reverse DNS (PTR) lookup for an IPv4/IPv6 address, with forward-confirmation check.

Input Schema

{
  "type": "object",
  "properties": {
    "ip": {
      "type": "string"
    }
  },
  "required": [
    "ip"
  ]
}
⚪subnet_calc(cidr)

IPv4/IPv6 CIDR subnet calculator: network, netmask, wildcard, broadcast, first/last usable host, total and usable addresses, block type.

Input Schema

{
  "type": "object",
  "properties": {
    "cidr": {
      "type": "string",
      "description": "e.g. 192.168.1.0/24 or 2001:db8::/48"
    }
  },
  "required": [
    "cidr"
  ]
}
🟢estimate_ai_cost(text, tokens, output_tokens)

Estimate token count and USD API cost of a text across major AI models (OpenAI GPT, Anthropic Claude, Google Gemini), and whether it fits each context window. Token counts are approximate. Pass text, or tokens directly.

Input Schema

{
  "type": "object",
  "properties": {
    "text": {
      "type": "string"
    },
    "tokens": {
      "type": "integer",
      "minimum": 1
    },
    "output_tokens": {
      "type": "integer",
      "minimum": 0,
      "description": "Expected reply length in tokens (default: same as input)"
    }
  }
}
🟡make_qr_code(text, ecc)

Create a static QR code (never expires) for a URL, Wi-Fi string (WIFI:T:WPA;S:name;P:pass;;), mailto:, tel: or any text up to 2000 characters. Returns an SVG string plus a ferntool.com image URL that renders the same code.

Input Schema

{
  "type": "object",
  "properties": {
    "text": {
      "type": "string"
    },
    "ecc": {
      "type": "string",
      "enum": [
        "L",
        "M",
        "Q",
        "H"
      ],
      "description": "Error correction (default M)"
    }
  },
  "required": [
    "text"
  ]
}
🟢count_words(text)

Exactly count words, characters (with and without spaces), sentences and paragraphs in a text, with reading/speaking time and the most repeated words. Use this instead of estimating counts yourself.

Input Schema

{
  "type": "object",
  "properties": {
    "text": {
      "type": "string"
    }
  },
  "required": [
    "text"
  ]
}
🟢ai_service_status(service)

Live status of AI services (ChatGPT/OpenAI, Claude, Gemini API, GitHub Copilot, Perplexity, Cohere) read from their official status pages, cached ~60s. level is up, degraded, down or unknown.

Input Schema

{
  "type": "object",
  "properties": {
    "service": {
      "type": "string",
      "enum": [
        "chatgpt",
        "claude",
        "gemini",
        "copilot",
        "perplexity",
        "cohere"
      ]
    }
  }
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded12 tools