Zum Inhalt springen
iseeu.cc

API und MCP-Server

Alles, was die Startseite zeigt, für Skripte, Server und KI-Agenten. HTTPS, kein API-Key, keine Registrierung, CORS aktiviert und im Rahmen der Fair-Use-Grenze auch für kommerzielle Zwecke kostenlos.

Kurz gesagt

curl iseeu.cc gibt deine öffentliche IP-Adresse und einen Zeilenumbruch aus; /json liefert alles, was die Startseite zeigt, als ein einziges JSON-Objekt, und /mcp ist ein Model-Context-Protocol-Server mit fünf Tools. Die Nutzung ist kostenlos und braucht keinen Key, solange du nicht mehr als 60 Anfragen pro Minute und IP-Adresse stellst – bei den beiden Endpunkten, die eine externe Abfrage auslösen, nicht mehr als 10 pro Minute.

So wird es ermittelt

Dieselbe URL antwortet je nach Anfrage: Ein Accept-Header, der text/html verlangt, bekommt die Webseite, alles andere reinen Text. Die JSON-Endpunkte nehmen ?format=text für Zeilen im Format key: value an, und ein Accept-Header, der text/plain bevorzugt, bewirkt dasselbe (Content Negotiation, RFC 9110). Antworten werden nie gecacht und dürfen von Skripten beliebiger Herkunft gelesen werden. Der MCP-Endpunkt spricht Streamable HTTP und ist zustandslos.

Beispiel

$ curl iseeu.cc
192.0.2.1
$ curl -s "iseeu.cc/geo?format=text" | grep '^country:'
country: US

192.0.2.1 und das Land sind Platzhalter aus dem Dokumentationsbereich (RFC 5737); deine Anfrage liefert deine eigenen Werte.

Grenzen

  • Die Daten beschreiben den Rechner, der die Anfrage sendet; bei einem KI-Assistenten, der in der Cloud läuft, ist das der Server des Anbieters, nicht du.
  • Das Ratenlimit wird pro Cloudflare-Standort gezählt und ist daher nur ungefähr.
  • Standortdaten sind eine Schätzung aus einer IP-Datenbank.

Quellen

Quellen geprüft am . Seite zuletzt aktualisiert am .

Schnellstart

Die Beispielausgaben unten verwenden 192.0.2.1, eine reservierte Dokumentationsadresse, die nie zu einem echten Gerät gehört. Wenn du die Befehle selbst ausführst, siehst du deine eigene IP.

$ curl iseeu.cc
192.0.2.1

$ curl -s iseeu.cc/json | jq '{ip, country: .location.country, asn: .network.asn, tls: .tls.version}'
{
  "ip": "192.0.2.1",
  "country": "US",
  "asn": 7922,
  "tls": "TLSv1.3"
}

Was die Start-URL zurückgibt, entscheidet dein Accept-Header: Browser fragen nach text/html und bekommen die Seite; curl, wget, HTTPie, PowerShell und HTTP-Bibliotheken tun das nicht und bekommen eine einzige Zeile mit deiner IP-Adresse und einem Zeilenumbruch.

Endpunkte

PfadLiefert
/Deine IP als reinen Text (Clients ohne Browser) oder die Webseite (Browser)
/ipDeine IP als reinen Text, immer
/jsonAlles: IP, Standort, Netzwerk, TLS, HTTP, zerlegter User-Agent, Request-Header, Serverzeit
/geoIP, Standort, ASN, Organisation und Cloudflare-Rechenzentrum
/tlsTLS-Version, Cipher, Größe des ClientHello, Hashes der Cipher und Extensions, HTTP-Version
/uaDein User-Agent, zerlegt in Browser, Engine, Betriebssystem, Gerät und Client-Typ
/headersDie Request-Header, die du gesendet hast, und die, die Cloudflare ergänzt hat
/api/rdap?q=RDAP-Registrierungsdaten zu einer Domain, einer IP-Adresse oder einem CIDR-Bereich oder einer AS-Nummer, von der Registry, die die IANA dafür führt: eine Zusammenfassung plus das rohe RDAP-JSON
/api/headers-check?url=Response-Header einer öffentlichen URL (Weiterleitungen werden verfolgt, der Body wird nie gelesen) mit Sicherheitsnote
/mcpMCP-Server (Streamable HTTP, zustandslos) – siehe unten

Um die Adresse eines bestimmten Protokolls zu sehen, erzwingst du es in curl: curl -4 iseeu.cc gibt deine IPv4-Adresse aus und curl -6 iseeu.cc deine IPv6-Adresse (das schlägt sofort fehl, wenn dein Rechner keine IPv6-Route hat). Für JSON funktioniert das genauso mit curl -4 iseeu.cc/json und curl -6 iseeu.cc/json.

Häng ?format=text an einen beliebigen JSON-Endpunkt an (oder sende Accept: text/plain), um flache Zeilen im Format key: value zu bekommen – praktisch mit grep. format akzeptiert nur json oder text; jeder andere Wert führt zu einem 400 mit "error": "invalid_format" statt zu einem stillen Rückfall. curl "iseeu.cc/ua?format=text" gibt nur den User-Agent-String aus. Die maschinenlesbare Beschreibung liegt unter /openapi.json (OpenAPI 3.1).

Das /json-Objekt

Eine Beispielantwort (wieder mit der reservierten Beispieladresse 192.0.2.1):

{
  "ip": "192.0.2.1",
  "ipVersion": 4,
  "location": {
    "country": "US", "countryName": "United States",
    "region": "Texas", "regionCode": "TX", "city": "Austin",
    "postalCode": "78701", "metroCode": "635", "continent": "NA",
    "isEU": false, "latitude": 30.27, "longitude": -97.74,
    "timezone": "America/Chicago"
  },
  "network": { "asn": 7922, "asOrganization": "Comcast Cable", "colo": "DFW",
               "clientTcpRttMs": 22, "clientQuicRttMs": null, "deliveryRateBps": null },
  "tls": { "version": "TLSv1.3", "cipher": "AEAD-AES128-GCM-SHA256", "clientHelloLength": 508,
           "clientCiphersSha1": "…", "clientExtensionsSha1": "…" },
  "http": { "protocol": "HTTP/2", "method": "GET", "priority": null, "acceptEncoding": "gzip, br" },
  "userAgent": { "raw": "curl/8.9.1", "browser": {…}, "engine": {…}, "os": {…},
                 "device": {…}, "cpu": {…}, "kind": "cli", "bot": { "name": "curl", "kind": "cli", "operator": null } },
  "headers": { "accept": "*/*", "host": "iseeu.cc", "user-agent": "curl/8.9.1" },
  "edgeHeaders": { "cf-ray": "…", "cf-ipcountry": "US", … },
  "time": { "server": "2026-10-08T12:00:00.000Z", "serverMs": 1791460800000 },
  "meta": { "docs": "https://iseeu.cc/api/", "privacy": "https://iseeu.cc/privacy/", "simulated": false }
}

Fehlende Werte sind null und werden nie weggelassen, die Struktur bleibt also stabil. Das gilt auch für Messwerte, die nicht zutreffen oder nicht erhoben wurden: clientTcpRttMs gibt es nur bei TCP-Verbindungen (HTTP/1.1 und HTTP/2), clientQuicRttMs nur bei HTTP/3, und einen nicht gemessenen Wert meldet Cloudflare als 0, den wir als null weitergeben statt als Roundtrip von null Millisekunden. Standort- und Netzwerkdaten stammen aus Cloudflares IP-Daten zu der Adresse, von der aus du verbunden bist; sie beschreiben das Netz deines Anbieters, keine Postanschrift. tls.clientCiphersSha1 und clientExtensionsSha1 sind Cloudflares Hashes deines ClientHello, nicht JA3 oder JA4. Chrome mischt die Reihenfolge seiner TLS-Extensions zufällig, deshalb ändert sich sein Extensions-Hash meist von Verbindung zu Verbindung; der Cipher-Hash ist der beständigere der beiden. userAgent.kind hat einen der Werte browser, search-crawler, ai-crawler, ai-assistant, social-preview, http-library, cli, headless-browser, monitoring, bot oder unknown.

Typische Anwendungen

Vor einem Job prüfen, ob ein VPN oder Proxy aktiv ist. Vergleiche das Ausgangsland mit dem erwarteten und brich ab, wenn es nicht stimmt:

country=$(curl -s "iseeu.cc/geo?format=text" | awk -F': ' '$1=="country"{print $2}')
[ "$country" = "DE" ] || { echo "VPN not in Germany (got $country)"; exit 1; }

Die öffentliche Adresse eines Servers herausfinden – aus einem Container, einem CI-Runner oder einer Cloud-Funktion heraus, wo die Netzwerkschnittstelle nur eine private Adresse zeigt. curl -s iseeu.cc genügt, und durch den abschließenden Zeilenumbruch lässt sich das Ergebnis gefahrlos in einer Kommandosubstitution der Shell verwenden.

Sehen, was dein HTTP-Client wirklich sendet. Bibliotheken fügen Header hinzu, benennen sie um und ändern ihre Reihenfolge. Ruf /headers aus deinem Code auf, um den genauen Satz zu sehen, oder /tls, um zu prüfen, welche TLS-Version und welchen Cipher deine Laufzeitumgebung aushandelt.

Aus anderen Programmiersprachen:

// JavaScript (browser or Node 18+)
const me = await (await fetch("https://iseeu.cc/json")).json();

# Python
import requests; me = requests.get("https://iseeu.cc/json", timeout=5).json()

// Go
resp, _ := http.Get("https://iseeu.cc/ip")

# PowerShell
(Invoke-RestMethod https://iseeu.cc/json).location.country

Abfragen, die iseeu.cc verlassen

/api/rdap und /api/headers-check stellen jeweils eine ausgehende Anfrage und haben deshalb ein eigenes, niedrigeres Limit: 10 Aufrufe pro Minute und IP-Adresse; darüber hinaus antworten sie mit 429 und Retry-After: 60. RDAP-Abfragen gehen ausschließlich an Server, die im Bootstrap-Verzeichnis der IANA stehen. Der Header-Check akzeptiert öffentliche http/https-URLs auf den Ports 80 und 443, lehnt private und reservierte Adressen sowie iseeu.cc selbst ab (auch als Ziel einer Weiterleitung; das ergibt 400 invalid_target), folgt bis zu fünf Weiterleitungen und gibt nach fünf Sekunden auf. Keiner der beiden Endpunkte speichert die Abfrage.

curl -s "iseeu.cc/api/rdap?q=AS64496" | jq .summary
curl -s "iseeu.cc/api/headers-check?url=https://example.com/" | jq '.grade | {grade, score}'

Limits und Fair Use

  • 60 Anfragen pro Minute und IP-Adresse. Darüber bekommst du 429 mit Retry-After: 60. Das Limit wird pro Cloudflare-Standort gezählt und ist daher nur ungefähr.
  • Antworten, auch die von MCP, werden nie gecacht (Cache-Control: no-store). Die REST-Endpunkte senden Access-Control-Allow-Origin: *, sodass Browser-JavaScript auf jeder beliebigen Website sie aufrufen kann.
  • Kommerzielle Nutzung ist in Ordnung. Bitte bau /json aber nicht in eine Seite ein, die jeder deiner Besucher lädt; in dieser Größenordnung melde dich vorher bei uns.
  • Wenn 60 Anfragen pro Minute für dein Vorhaben wirklich nicht reichen, erzähl uns über die Kontaktseite davon.

MCP-Server für KI-Agenten

https://iseeu.cc/mcp ist ein entfernter Model-Context-Protocol-Server über Streamable HTTP. Er ist zustandslos, braucht keine Authentifizierung und bietet fünf Tools, die alle nur lesen; dns_lookup und rdap_lookup teilen sich das Limit von 10 Aufrufen pro Minute für externe Abfragen.

ToolEingabeFunktion
whoamiinclude_headers?Öffentliche IP, Standort, ASN und Organisation, Cloudflare-Rechenzentrum, TLS- und HTTP-Version sowie Client-Typ des Rechners, der den Server aufruft
check_headersheaders?Zeigt Merkmale, die Bot-Erkennung häufig gewichtet: fehlender User-Agent oder Accept-Language, Chrome ohne Client Hints, unpassende Versionen oder Plattformen, Proxy-Header mit einer anderen IP, DNT und GPC. Das sind mögliche Hinweise, keine Beweise, denn jeder Client kann Header weglassen oder fälschen. Ohne Eingabe werden die Header des Aufrufs selbst geprüft.
parse_uauser_agent?Zerlegt einen User-Agent in Browser, Engine, Betriebssystem, Gerät und CPU und ordnet Crawler, KI-Agenten, Kommandozeilen-Tools und Bibliotheken ein
dns_lookupname, type?A-, AAAA-, MX-, TXT-, NS-, CNAME-, CAA- oder SOA-Einträge über Cloudflares Resolver per DNS-over-HTTPS, mit TTL, DNSSEC-Flag und einem Hinweis, der einen nicht existierenden Namen (NXDOMAIN) von einem fehlenden Eintragstyp unterscheidet
rdap_lookupquery, include_raw?Zusammenfassung der Registrierung einer Domain, IP-Adresse oder AS-Nummer vom autoritativen RDAP-Server

Browserbasierte MCP-Clients können ihn von jeder Herkunft (Origin) aus aufrufen. CORS erlaubt POST, GET und DELETE mit den Request-Headern Content-Type, Mcp-Session-Id, Mcp-Protocol-Version und Last-Event-ID und gibt Mcp-Session-Id für Skripte frei. Jede MCP-Antwort wird mit Cache-Control: no-store gesendet, und der Server behält zwischen den Aufrufen nichts. Ein Request-Body darf bis zu 64 KB groß sein und ein JSON-RPC-Batch bis zu 10 Nachrichten enthalten; Größeres wird mit dem Fehler -32600 abgewiesen, bevor überhaupt ein Tool läuft.

Verbinden

# Claude Code
claude mcp add --transport http iseeu https://iseeu.cc/mcp

# Cursor, Windsurf, VS Code and other JSON configs
{ "mcpServers": { "iseeu": { "url": "https://iseeu.cc/mcp" } } }

Ein ehrlicher Hinweis zu whoami: Das Tool meldet den Rechner, der die HTTP-Anfrage an /mcp sendet. Bei Desktop- und Kommandozeilen-Agenten ist das dein eigenes Netz – praktisch, um zu prüfen, ob ein Proxy oder VPN greift. Bei Assistenten, die in der Cloud laufen, ist es der Server des Anbieters.

Discovery-Dateien

Datenschutz

Die API protokolliert nie IP-Adressen, Header oder Abfragen und hat keine Datenbank. Antworten werden im Arbeitsspeicher aus der Anfrage gebaut und danach verworfen; wir zählen Aufrufe pro Endpunkt, ohne IP-Adressen. Einzelheiten stehen in der Datenschutzerklärung.

Die API wird so bereitgestellt, wie sie ist, ohne Garantie für ihre Verfügbarkeit. Standort- und Netzwerkdaten können falsch sein. Nutze sie nicht als einziges Signal für Sicherheits- oder Betrugsentscheidungen.