cURL

curl https://api.traceexit.com/v1/ip/203.0.113.10 \
  -H "Authorization: Bearer te_live_…" \
  -H "Accept: application/json"

Node

const res = await fetch("https://api.traceexit.com/v1/ip/203.0.113.10", {
  headers: { Authorization: "Bearer " + process.env.TRACE_EXIT_API_KEY },
});
const dto = await res.json();

MCP (Cursor)

{
  "mcpServers": {
    "traceexit": {
      "command": "npx",
      "args": ["-y", "@traceexit/mcp"],
      "env": {
        "TRACE_EXIT_API_KEY": "te_live_…",
        "TRACE_EXIT_BASE_URL": "https://api.traceexit.com"
      }
    }
  }
}

Ferramentas: lookup_ip, check_privacy, check_fraud. Mesmas chaves e cotas do REST. Connect MCP.

Formato da resposta

IpLookupDto aninhado — sem sources[] público. Use ?legacy=true para campos planos compatíveis com SA.

{
  "ip": "203.0.113.10",
  "ipVersion": 4,
  "privacy": {
    "vpn": false,
    "proxy": false,
    "tor": false,
    "datacenter": true,
    "residentialProxy": false,
    "anonymizer": false
  },
  "risk": {
    "score": 42,
    "level": "medium"
  },
  "location": {
    "countryCode": "US",
    "city": "Ashburn"
  },
  "meta": {
    "cacheHit": true
  }
}

CGNAT / móvel

NATs compartilhados de operadoras podem ser ruidosos. Prefira allowlists de ASN para faixas móveis conhecidas; veja a orientação enterprise ao escalar.

Documentação de API e MCP — Trace Exit