plugins/twilio-developer-kit/skills/twilio-lookup-phone-intelligence/SKILL.md
Look up phone number intelligence via Twilio Lookup v2 API. Covers number validation, line type detection (mobile/landline/VoIP), SIM swap detection, caller name, identity match, and SMS pumping risk scoring. Use this skill to validate numbers or assess fraud risk before sending messages or calls.
npx skillsauth add openai/plugins twilio-lookup-phone-intelligenceInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Twilio Lookup validates phone numbers and provides optional intelligence packages. Basic validation is free; data packages (line type, SIM swap, etc.) are paid per lookup.
twilio-account-setupTWILIO_ACCOUNT_SIDTWILIO_AUTH_TOKEN
— See twilio-iam-auth-setup for credential setup and best practicespip install twilio / npm install twilioPython
import os
from twilio.rest import Client
client = Client(os.environ["TWILIO_ACCOUNT_SID"], os.environ["TWILIO_AUTH_TOKEN"])
phone = client.lookups.v2.phone_numbers("+15108675310").fetch()
print(phone.valid) # True / False
print(phone.phone_number) # +15108675310 (E.164)
print(phone.national_format) # (510) 867-5310
print(phone.country_code) # US
Node.js
const twilio = require("twilio");
const client = twilio(process.env.TWILIO_ACCOUNT_SID, process.env.TWILIO_AUTH_TOKEN);
const phone = await client.lookups.v2.phoneNumbers("+15108675310").fetch();
console.log(phone.valid);
console.log(phone.phoneNumber);
console.log(phone.nationalFormat);
If valid is false, check phone.validationErrors for the reason.
Identifies mobile, landline, VoIP, toll-free, etc.
Python
phone = client.lookups.v2.phone_numbers("+15108675310").fetch(
fields="line_type_intelligence"
)
print(phone.line_type_intelligence)
# {'type': 'mobile', 'carrier_name': 'T-Mobile USA', ...}
Node.js
const phone = await client.lookups.v2.phoneNumbers("+15108675310").fetch({
fields: "line_type_intelligence",
});
console.log(phone.lineTypeIntelligence);
Line types: mobile, landline, voip, toll-free, fixedVoip, nonFixedVoip, personal, payphone, unknown
Python
phone = client.lookups.v2.phone_numbers("+15108675310").fetch(
fields="line_type_intelligence,sim_swap,caller_name"
)
Node.js
const phone = await client.lookups.v2.phoneNumbers("+15108675310").fetch({
fields: "line_type_intelligence,sim_swap,caller_name",
});
Python
phone = client.lookups.v2.phone_numbers("+invalid").fetch()
if not phone.valid:
print(f"Invalid number: {phone.validation_errors}")
# Handle gracefully — do not attempt to send
Node.js
const phone = await client.lookups.v2.phoneNumbers("+invalid").fetch();
if (!phone.valid) {
console.log("Invalid number:", phone.validationErrors);
}
| Package | fields value | Coverage | Use case |
|---------|---------------|----------|----------|
| Line Type Intelligence | line_type_intelligence | Worldwide | Route by line type; block VoIP |
| Caller Name | caller_name | US only | Show caller ID |
| SIM Swap | sim_swap | Select regions | Fraud detection |
| Identity Match | identity_match | Select regions | Verify ownership |
| SMS Pumping Risk | sms_pumping_risk | Worldwide | Fraud prevention |
| Reassigned Number | reassigned_number | US only | Check if recycled |
| Code | Meaning | Fix | |------|---------|-----| | 20404 | Phone number not found | Number may be invalid or unsupported format | | 60601 | Data package not available for this region | Check regional coverage before requesting package |
twilio-sms-send-messagetwilio-verify-send-otpdevelopment
Use when the user wants to spin up / create / launch / provision a DigitalOcean droplet (or "a remote dev box on DO") and connect to it from Codex as a remote SSH workspace.
data-ai
Search through Microsoft Teams chats or channels, triage unread or recent activity, draft follow-ups, and manage Planner tasks through connected Teams data.
tools
Motion / animation context for the `use_figma` MCP tool — animating Figma nodes via manual keyframes, animation styles, easing, and timeline duration. Load alongside figma-use whenever a task involves adding, editing, or inspecting animation on a node.
development
SwiftUI ↔ Figma translation. Use whenever the user mentions Swift, SwiftUI, iOS, iPhone, or iPad — in EITHER direction — translating a Figma design into SwiftUI (design → code), or pushing SwiftUI views / screens / tokens back into a Figma file (code → design). Triggers on phrases like 'implement this Figma design in SwiftUI', 'build this screen in Swift', 'push this SwiftUI view to Figma', 'mirror my Swift code in a Figma file', or whenever a Figma URL appears alongside `.swift` files / an `.xcodeproj`. Routes to a direction-specific reference doc; loads alongside `figma-use` for the code → design path.