Phone number investigation playbook
Parse a number offline, then find accounts and mentions linked to it
beginner
Parses a phone number offline: validity, formats, country, original carrier, line type, time zones
Community-packaged from github.com/osintverse-community/phone-parse: the registry's community pins the upstream release; the tool is its authors' work. Maintain that project? Claim this package.
Run
Through ot mcp, an agent calls run_tool with this; ot asks you before anything that goes online or touches a target. Set it up: ot mcp install claude (or cursor, vscode, codex, gemini).
{"tool":"osintverse-community/phone-parse","target":"+44 20 7946 0958","input_type":"phone"}Or just say: "Run osintverse-community/phone-parse on +44 20 7946 0958 with OTInstaller." The registry's read-only MCP server at api.otinstaller.com/mcp can find tools without installing anything.
ot run osintverse-community/phone-parse p:"+44 20 7946 0958" --format tableot install osintverse-community/phone-parseDocker image in a read-only container · no network · no key · up to 1 min. The first ot run installs the tool after asking once. The example value is the registry's own test input, so this command has run. Drop --format table for JSON.
ot? Install it in one linecurl -fsSL https://get.otinstaller.com/ot | shot release for your machine from GitHub Releases.checksums.txt, and the Ed25519 signature on that file against the key built into the script.ot in /usr/local/bin or ~/.local/bin. Nothing else is written. Read the script.irm https://get.otinstaller.com/ot.ps1 | iexot release for your machine from GitHub Releases.checksums.txt, and the Ed25519 signature on that file against the key built into the script.ot in %LOCALAPPDATA%\Programs\ot, and adds it to your PATH. Nothing else is written. Read the script.sha256:86dcb2e7…3bf426. The same bytes on every install; ot pulls by digest, never by tag.ot checks the same identity before every install and refuses another signer.ot pulls the same digest from the mirror and checks the same signature.{
"envelope": 1,
"tool": "osintverse-community/phone-parse@0.1.0",
"runtime": "docker",
"input": {
"phone": "+44 20 7946 0958"
},
"started_at": "2026-10-21T09:00:00Z",
"duration_ms": 4100,
"exit_code": 0,
"entities": [
{
"type": "phone",
"value": "+14155550100",
"attrs": {
"country": "US"
}
},
{
"type": "location",
"value": "51.5074,-0.1278",
"attrs": {
"city": "London"
}
}
],
"warnings": []
}Every tool returns this shape, shaped here from what this tool declares it finds. --format table to read it; ot extract and ot auto to continue.
Checks a phone number against Google's libphonenumber data and reports whether it is valid, its E.164 and national formats, the country and area, the carrier the range was assigned to, the line type (mobile, fixed line, VoIP, toll free…) and its time zones. Runs offline.
ot run osintverse-community/phone-parse --phone "+44 20 7946 0958"
| Input | Required | |
|---|---|---|
phone |
yes | |
region |
no | Two-letter country for numbers without a + prefix, such as US |
The carrier is the one the number block was originally given to; numbers can be ported to another carrier since. The location is the area the range covers, not where the phone is.
Check which services the number is registered with using osintverse-community/ignorant.
pip install phonenumbers==9.0.41
python -m unittest
ot validate
Releases are built, signed and published by the otinstaller release workflow (Actions tab, with the version to release).
MIT
Parse a number offline, then find accounts and mentions linked to it
phone-parse finds phone, location. Tools that take those:
Alternatives to phone-parse that also take a phone; ot auto runs every installed one on the same value.
Checks whether a phone number is registered on Amazon, Instagram and Snapchat
Scans a phone number: carrier, line type and country, plus search links to find where it appears