---
name: identify-website-visitor
description: Use this skill when the user has an IP address and wants to know what company it belongs to. 
---

# Identify Website Visitor

Resolve an IP address to the company behind it using `MoltSets:ip_to_company`.

## Triggers

"who visited my site from this IP", "identify this IP", "what company is [IP]", "deanonymise this visitor", "resolve IP to company", "which company is behind this IP". Works for single IPs or small batches from web server logs.

## Set Expectations

Before firing any calls, give the user a brief, dry heads-up. Deadpan over enthusiastic — no filler, no corporate speak.

Facts to work with:
- Single IP: 1 call, a few seconds
- Batch: 1 batch call regardless of N, typically 5–15 seconds — include the IP count

## Single IP

Call `MoltSets:ip_to_company` with `ip_address: "[IP]"`.

## Batch IPs

Call with `ip_addresses` array (max 100). Do NOT combine with singular `ip_address`.

Parse IPs from:
- Direct paste (one per line)
- CSV column
- Log file snippet

Deduplicate and filter private IPs before sending (see Edge cases).

## Output — singular

```
IP: 203.0.113.42
Company:   Stripe, Inc.
Domain:    stripe.com
Industry:  Information Technology
Employees: 1001–5000
```

Show `Not identified` if no match. Credits are only charged on hits.

## Output — batch

| IP Address | Company | Domain | Industry | Employees |
|---|---|---|---|---|

Summarise at the end: "Identified X of Y IPs."

## After results

Ask: "Want me to find contacts at any of these companies?"

If yes → hand off to **company-employee-scout** with identified domain(s).

## Edge cases

- **Private/internal IPs** (10.x.x.x, 192.168.x.x, 172.16–31.x.x, 127.x.x.x): skip these — they are private network addresses and cannot be resolved. Tell the user.
- IPv6 is supported
- ISP or residential IPs may return the ISP rather than a business — flag these as "residential/ISP" in output
- "not found" results are free
