Skip to main content
Glama
Jambozx

OnlineCyberTools MCP (280+ filterable tools)

by Jambozx

osint_phone_validator

Read-onlyIdempotent

Parse and validate phone numbers to extract E.164, international, national, and tel URI formats, plus detected country, number type, and carrier hints. Uses offline rule-based validation.

Instructions

Phone Number Validator and Formatter. Parse and validate a phone number, returning E.164, international, national, and RFC3966 (tel URI) formats plus the detected country, ITU-T number type (geographic/mobile/toll_free/premium_rate/special_service), and best-effort carrier and timezone notes. Validation is offline and rule-based: it checks 7-15 digit ITU-T E.164 length and matches a built-in table of about 20 country calling codes (no live HLR or carrier lookup and no third-party request), so carrier and ported fields are heuristic, not network-confirmed. Use osint_iban_validator, osint_bic_swift_validator, or osint_credit_card_validator instead for bank or card identifiers. Read-only, non-destructive, rate-limited (20 requests/minute for anonymous callers). Returns a result object with valid, formats, country_info, type, and warnings.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
phone_numberYesPhone number to validate; may include a leading plus, spaces, dashes, or parentheses (all stripped to digits). Provide E.164 form (country code first) for reliable country detection. Must not be blank.
country_codeNoOptional ISO country hint (for example US, GB, DE) used to pick the country when the number has no leading calling code. Empty string means auto-detect from the digits.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
successNoWhether validation ran; false with an error string on blank or failed input.
errorNoHuman-readable failure reason; present only when success is false.
resultNoValidation detail, present only when success is true.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changedv0.5.1
    • addedInput schema / additionalProperties
      Added value: +false
    • addedInput schema / properties / country_code / default
      Added value: +""
    • addedInput schema / properties / country_code / description
      Added value: +"Optional ISO country hint (for example US, GB, DE) used to pick the country when the number has no leading calling code. Empty string means auto-detect from the digits."
    • addedInput schema / properties / phone_number / description
      Added value: +"Phone number to validate; may include a leading plus, spaces, dashes, or parentheses (all stripped to digits). Provide E.164 form (country code first) for reliable country detection. Must not be blank."
    • changedInput schema / required
      Previous value: -[
      -  "phone_number",
      -  "country_code"
      -]New value: +[
      +  "phone_number"
      +]
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "error": {
      +      "description": "Human-readable failure reason; present only when success is false.",
      +      "type": "string"
      +    },
      +    "result": {
      +      "description": "Validation detail, present only when success is true.",
      +      "properties": {
      +        "analysis": {
      +          "description": "Structural breakdown such as calling_code, national_number, total_length, area_code, and notes.",
      +          "type": "object"
      +        },
      +        "carrier_info": {
      +          "description": "Heuristic carrier/network notes from the calling code (no live lookup); null when no country matched.",
      +          "properties": {
      +            "carrier": {
      +              "description": "Carrier name, or Unknown (not network-resolved).",
      +              "type": "string"
      +            },
      +            "network_type": {
      +              "description": "Network class such as Mobile or Toll-free, or Unknown.",
      +              "type": "string"
      +            },
      +            "notes": {
      +              "description": "Free-text carrier notes.",
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "ported": {
      +              "description": "Portability status; always null (not checked).",
      +              "type": [
      +                "boolean",
      +                "null"
      +              ]
      +            }
      +          },
      +          "type": [
      +            "object",
      +            "null"
      +          ]
      +        },
      +        "cleaned": {
      +          "description": "The input reduced to digits and an optional leading plus.",
      +          "type": "string"
      +        },
      +        "country_info": {
      +          "description": "Detected country, or null when no calling code matched.",
      +          "properties": {
      +            "calling_code": {
      +              "description": "International calling code without the plus.",
      +              "type": "string"
      +            },
      +            "country": {
      +              "description": "Country or region name.",
      +              "type": "string"
      +            },
      +            "format_pattern": {
      +              "description": "Canonical display pattern for the country.",
      +              "type": "string"
      +            },
      +            "iso_code": {
      +              "description": "ISO code or slash-joined codes (for example US/CA).",
      +              "type": "string"
      +            },
      +            "max_length": {
      +              "description": "Maximum national-number length.",
      +              "type": "integer"
      +            },
      +            "min_length": {
      +              "description": "Minimum national-number length.",
      +              "type": "integer"
      +            },
      +            "national_number": {
      +              "description": "Digits after the calling code.",
      +              "type": "string"
      +            }
      +          },
      +          "type": [
      +            "object",
      +            "null"
      +          ]
      +        },
      +        "formats": {
      +          "additionalProperties": {
      +            "type": "string"
      +          },
      +          "description": "Rendered formats. For a recognised country: e164, international, national, rfc3966. For an unrecognised number: raw plus formatted or possible_international.",
      +          "type": "object"
      +        },
      +        "input": {
      +          "description": "The submitted number, trimmed and echoed back.",
      +          "type": "string"
      +        },
      +        "timezone_info": {
      +          "description": "Timezone hints for the country, or null when unknown.",
      +          "properties": {
      +            "note": {
      +              "description": "Human-readable timezone note.",
      +              "type": "string"
      +            },
      +            "zones": {
      +              "description": "Timezone abbreviations.",
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            }
      +          },
      +          "type": [
      +            "object",
      +            "null"
      +          ]
      +        },
      +        "type": {
      +          "description": "Number type: geographic, mobile, toll_free, premium_rate, special_service, or unknown.",
      +          "type": "string"
      +        },
      +        "valid": {
      +          "description": "True when the digit count is within the ITU-T E.164 range (7 to 15 digits).",
      +          "type": "boolean"
      +        },
      +        "warnings": {
      +          "description": "Validation warnings such as too-short or too-long digit counts.",
      +          "items": {
      +            "type": "string"
      +          },
      +          "type": "array"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "success": {
      +      "description": "Whether validation ran; false with an error string on blank or failed input.",
      +      "type": "boolean"
      +    }
      +  },
      +  "type": "object"
      +}
  2. First observedv0.1.0

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only and non-destructive behavior. The description adds critical context: validation is offline/rule-based, checks 7-15 digit length and a built-in table of ~20 country codes, no live HLR/carrier lookup, and carrier/timezone notes are heuristic. This fully discloses limitations beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured: main purpose first, then output details, then limitations/alternatives, and finally rate limits. Every sentence adds information without redundancy. It is appropriately sized for the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity, full schema and output schema presence, and annotations, the description provides all necessary context: functionality, output fields, limitations, alternatives, and rate limits. No gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds value by explaining parameter usage: 'Provide E.164 form for reliable country detection' and notes that symbols like spaces/dashes are stripped. This goes slightly beyond the schema's own descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool validates and formats phone numbers, listing specific output formats (E.164, international, etc.) and data (country, type, carrier). It explicitly distinguishes from sibling tools like osint_iban_validator by saying to use those for bank/card identifiers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance: use other tools for bank or card identifiers, and advises providing E.164 form for reliable country detection. It also notes the offline, rule-based nature and rate limits, helping the agent decide when to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools