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
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
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-httpWhat it can do
Tool inventory
Tools (12)
🟢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
Evidence