Skip to content
Eden Engine

Phone Number Validation & Type Lookup

omnial/x402-phone-validate

Given a phone number and an optional 2-letter country hint, returns whether it is a valid, possible number, its type (mobile, landline, or VOIP), its resolved country, and the number reformatted in E.164, national, and international styles.

activeper callv4

Price

Up to $0.0325 per call; you pay what the call used

You pay the price shown. If a call turns out to cost more than its quote, you pay the actual price, capped at twice the quote. No monthly minimum. Top-ups start at $0.50.

Data source

Google libphonenumber

Data from Google libphonenumber.

Use it

Five steps: search, inspect, learn, run, settle. No per-tool setup; your agent reaches this tool through the meta-tools it already has.

Connect once and your AI can find and run this tool, and any other it needs.

agent
// 1. search: find the tool
omnial_search({ query: "what you need" })

// 2. inspect: price and input schema
omnial_inspect({ tool: "omnial/x402-phone-validate" })

// 3. learn: read the usage guide at runtime
omnial_learn({ tool: "omnial/x402-phone-validate" })

// 4. run: price the exact call first, then run it
omnial_execute({ tool: "omnial/x402-phone-validate", input: { /* see input_schema */ }, dry_run: true })
omnial_execute({ tool: "omnial/x402-phone-validate", input: { /* ... */ } })

// 5. settle: the call is charged when it finishes, nothing to do

Not connected yet? Point your MCP client at https://mcp.eden-engine.com/mcp, then copy a config for your client.

Pricing

Every charge this tool can incur.

ChargePrice
Per call
$0.0325
Updated
Oct 25, 2026

Input and output schemas

Input schema
input_schema.json
{
  "type": "object",
  "required": [
    "phone_number"
  ],
  "properties": {
    "country_code": {
      "type": "string",
      "description": "ISO 2-letter country code hint (optional)"
    },
    "phone_number": {
      "type": "string",
      "description": "Phone number in any format"
    }
  },
  "additionalProperties": false
}
Output schema
output_schema.json
{
  "type": "object",
  "properties": {
    "e164": {
      "type": "string",
      "description": "The number reformatted to E.164, e.g. '+14155552671'."
    },
    "input": {
      "type": "string",
      "description": "The phone number exactly as submitted."
    },
    "valid": {
      "type": "boolean",
      "description": "Whether the number is a valid, assignable number."
    },
    "carrier": {
      "type": [
        "string",
        "null"
      ],
      "description": "Carrier network name. Observed as `null` in testing (a US mobile number and a UK landline) -- a populated carrier value was never observed, so this field cannot be assumed to always resolve to a name."
    },
    "phone_type": {
      "type": "string",
      "description": "e.g. 'FIXED_LINE_OR_MOBILE', 'FIXED_LINE' -- values observed in testing; the full set of type values the endpoint can return (e.g. a distinct 'MOBILE' or 'VOIP' value) is not documented."
    },
    "is_possible": {
      "type": "boolean",
      "description": "Whether the number is a possible length/pattern for its country."
    },
    "country_code": {
      "type": [
        "string",
        "null"
      ],
      "description": "Resolved ISO 2-letter country code. Null when the number is not valid, so no country resolves."
    },
    "country_name": {
      "type": [
        "string",
        "null"
      ],
      "description": "Resolved country name. Null when the number is not valid."
    },
    "national_format": {
      "type": "string",
      "description": "The number reformatted in the resolved country's national style."
    },
    "international_format": {
      "type": "string",
      "description": "The number reformatted in international dialing style."
    }
  },
  "description": "The phone record.",
  "additionalProperties": true
}