Pular para o conteúdo
iseeu.cc

API e servidor MCP

Tudo o que a página inicial mostra, para scripts, servidores e agentes de IA. HTTPS, sem chave de API, sem cadastro, com CORS liberado e grátis para uso comercial dentro do limite de uso justo.

Resposta curta

curl iseeu.cc mostra o seu endereço IP público seguido de uma quebra de linha; /json devolve tudo o que a página inicial mostra num único objeto JSON, e /mcp é um servidor Model Context Protocol com cinco ferramentas. É grátis e não precisa de chave dentro do limite de 60 requisições por minuto por endereço IP, ou 10 por minuto nos dois endpoints que fazem uma consulta externa.

Como é obtido

A mesma URL responde de acordo com a requisição: um cabeçalho Accept que pede text/html recebe a página web; qualquer outro recebe texto puro. Os endpoints JSON aceitam ?format=text para devolver linhas key: value, e um cabeçalho Accept que prefere text/plain tem o mesmo efeito (negociação de conteúdo, RFC 9110). As respostas nunca vão para cache e podem ser lidas por scripts de qualquer origem. O endpoint MCP usa Streamable HTTP e não guarda estado.

Exemplo prático

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

192.0.2.1 e o país são valores fictícios da faixa reservada para documentação (RFC 5737); a sua requisição devolve os seus próprios valores.

Limites

  • Os dados descrevem a máquina que envia a requisição; por meio de um assistente de IA hospedado na nuvem, essa máquina é o servidor do provedor, e não você.
  • O limite de requisições é contado por local da Cloudflare, por isso é aproximado.
  • Os dados de localização são uma estimativa tirada de um banco de dados de IPs.

Fontes

Fontes conferidas em . Página atualizada em .

Começo rápido

A saída de exemplo abaixo usa 192.0.2.1, um endereço reservado para documentação que nunca pertence a um aparelho real. Quando você rodar esses comandos, verá o seu próprio 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"
}

A URL inicial decide o que devolver pelo seu cabeçalho Accept: os navegadores pedem text/html e recebem a página; curl, wget, HTTPie, PowerShell e bibliotecas HTTP não pedem, e recebem uma única linha com o seu endereço IP e uma quebra de linha.

Endpoints

CaminhoO que devolve
/Seu IP em texto puro (clientes que não são navegadores) ou a página web (navegadores)
/ipSeu IP em texto puro, sempre
/jsonTudo: IP, localização, rede, TLS, HTTP, User-Agent analisado, cabeçalhos da requisição e hora do servidor
/geoIP, localização, ASN, organização e data center da Cloudflare
/tlsVersão do TLS, cifra, tamanho do ClientHello, hashes das cifras e das extensões e versão do HTTP
/uaSeu User-Agent, dividido em navegador, motor, sistema operacional, dispositivo e tipo de cliente
/headersOs cabeçalhos da requisição que você enviou e os que a Cloudflare adicionou
/api/rdap?q=Dados de registro RDAP de um domínio, endereço IP ou CIDR, ou número AS, vindos do registro que a IANA indica para ele: um resumo e o JSON RDAP bruto
/api/headers-check?url=Cabeçalhos de resposta de uma URL pública (segue os redirecionamentos e nunca lê o corpo) com uma nota de segurança
/mcpServidor MCP (Streamable HTTP, sem estado) — veja abaixo

Para ver o endereço de um protocolo específico, force o protocolo no curl: curl -4 iseeu.cc mostra o seu endereço IPv4 e curl -6 iseeu.cc o seu endereço IPv6 (o comando falha na hora se a sua máquina não tiver rota IPv6); o mesmo vale para o JSON, com curl -4 iseeu.cc/json e curl -6 iseeu.cc/json.

Acrescente ?format=text (ou envie Accept: text/plain) a qualquer endpoint JSON para receber linhas simples key: value, práticas de usar com grep. format aceita só json ou text; qualquer outro valor recebe um 400 com "error": "invalid_format", em vez de cair calado no formato padrão. curl "iseeu.cc/ua?format=text" mostra só a string do User-Agent. A descrição legível por máquina está em /openapi.json (OpenAPI 3.1).

O objeto /json

Um exemplo de resposta (de novo com o endereço de exemplo reservado 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 }
}

Valores ausentes vêm como null e nunca são omitidos, então a estrutura é estável. Isso inclui medições que não se aplicam ou que não foram feitas: clientTcpRttMs só existe em conexões TCP (HTTP/1.1 e HTTP/2), clientQuicRttMs só em HTTP/3, e a Cloudflare informa um valor não medido como 0, que repassamos como null, e não como uma ida e volta de zero milissegundo. Os dados de localização e de rede vêm da inteligência de IP da Cloudflare para o endereço de onde você se conectou; eles descrevem a rede do seu provedor, não um endereço de rua. tls.clientCiphersSha1 e clientExtensionsSha1 são hashes que a Cloudflare calcula do seu ClientHello, não JA3 nem JA4. O Chrome embaralha a ordem das extensões TLS, então o hash das extensões dele costuma mudar de uma conexão para outra; o hash das cifras é o mais estável dos dois. userAgent.kind é um destes valores: browser, search-crawler, ai-crawler, ai-assistant, social-preview, http-library, cli, headless-browser, monitoring, bot ou unknown.

Usos comuns

Confirmar que uma VPN ou um proxy está ativo antes de rodar uma tarefa. Compare o país de saída com o esperado e interrompa se estiver errado:

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; }

Descobrir o endereço público de um servidor de dentro de um contêiner, de um runner de CI ou de uma função na nuvem, onde a interface de rede só mostra um endereço privado. curl -s iseeu.cc basta, e a quebra de linha no final permite usar o resultado com segurança numa substituição de comando do shell.

Ver o que o seu cliente HTTP realmente envia. As bibliotecas adicionam, renomeiam e reordenam cabeçalhos. Chame /headers a partir do seu código para ver o conjunto exato, ou /tls para confirmar qual versão de TLS e qual cifra o seu runtime negocia.

Em outras linguagens:

// 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

Consultas que saem do iseeu.cc

/api/rdap e /api/headers-check fazem uma requisição externa cada um, por isso têm um limite próprio e menor: 10 chamadas por minuto por endereço IP; acima disso, a resposta é 429 com Retry-After: 60. As consultas RDAP só vão para servidores listados no registro de bootstrap da IANA. A verificação de cabeçalhos aceita URLs públicas http/https nas portas 80 e 443, recusa endereços privados e reservados e o próprio iseeu.cc (também como destino de redirecionamento; nesse caso a resposta é 400 invalid_target), segue até cinco redirecionamentos e desiste depois de cinco segundos. Nenhum dos dois endpoints armazena a consulta.

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}'

Limites e uso justo

  • 60 requisições por minuto por endereço IP. Acima disso, você recebe 429 com Retry-After: 60. O limite é contado por local da Cloudflare, por isso é aproximado.
  • As respostas, inclusive as do MCP, nunca vão para cache (Cache-Control: no-store). Os endpoints REST enviam Access-Control-Allow-Origin: *, então JavaScript de navegador em qualquer site pode chamá-los.
  • O uso comercial é permitido. Só não coloque o /json numa página que todos os seus visitantes carregam; nessa escala, fale com a gente antes.
  • Se 60 requisições por minuto realmente não bastam para o que você está construindo, conte para a gente pela página de contato.

Servidor MCP para agentes de IA

https://iseeu.cc/mcp é um servidor Model Context Protocol remoto via Streamable HTTP. Ele não guarda estado, não exige autenticação e oferece cinco ferramentas, todas somente leitura; dns_lookup e rdap_lookup compartilham o limite de 10 por minuto das consultas externas.

FerramentaEntradaO que faz
whoamiinclude_headers?IP público, localização, ASN e organização, data center da Cloudflare, versão do TLS e do HTTP e tipo de cliente da máquina que chama o servidor
check_headersheaders?Aponta traços que a detecção de bots costuma pesar: falta de User-Agent ou Accept-Language, Chrome sem Client Hints, versões ou plataformas que não batem, cabeçalhos de proxy com outro IP, DNT e GPC. São indícios possíveis, não provas, porque qualquer cliente pode omitir ou forjar cabeçalhos. Sem entrada, verifica os cabeçalhos da própria chamada.
parse_uauser_agent?Divide um User-Agent em navegador, motor, sistema operacional, dispositivo e CPU, e classifica rastreadores, agentes de IA, ferramentas de linha de comando e bibliotecas
dns_lookupname, type?Registros A, AAAA, MX, TXT, NS, CNAME, CAA ou SOA pelo resolvedor da Cloudflare via DNS sobre HTTPS, com TTL, o indicador DNSSEC e uma nota que distingue um nome inexistente (NXDOMAIN) de um tipo de registro inexistente
rdap_lookupquery, include_raw?Resumo do registro de um domínio, endereço IP ou número AS a partir do servidor RDAP autoritativo

Clientes MCP que rodam no navegador podem chamá-lo de qualquer origem. O CORS permite POST, GET e DELETE com os cabeçalhos de requisição Content-Type, Mcp-Session-Id, Mcp-Protocol-Version e Last-Event-ID e expõe Mcp-Session-Id. Toda resposta MCP é enviada com Cache-Control: no-store, e o servidor não guarda nada entre uma chamada e outra. O corpo da requisição pode ter até 64 KB e um lote JSON-RPC até 10 mensagens; os maiores são recusados com o erro -32600 antes que qualquer ferramenta rode.

Conectar

# 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" } } }

Uma observação honesta sobre o whoami: ele informa a máquina que envia a requisição HTTP para /mcp, seja ela qual for. Para agentes de desktop e de linha de comando, essa é a sua própria rede, o que ajuda a verificar se um proxy ou uma VPN está funcionando. Para assistentes que rodam na nuvem, é o servidor do provedor.

Arquivos de descoberta

Privacidade

A API nunca registra endereços IP, cabeçalhos nem consultas, e não tem banco de dados. As respostas são montadas na memória a partir da requisição e descartadas; contamos as chamadas por endpoint, sem endereços IP. Os detalhes estão na página de privacidade.

A API é disponibilizada tal como está, sem garantia de que esteja sempre no ar. Os dados de localização e de rede podem estar errados. Não use a API como único sinal para decisões de segurança ou de prevenção a fraudes.