Phone number validation and carrier lookup for 243 countries. 1,000 free lookups a month.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Bearer <your Veriphone API key> — get one free at https://veriphone.io/signup
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Which countries support mode "current" (the carrier currently serving a number, after porting). Pass a country to get yes/no, or nothing for the full list. Free to call, no key needed.
Two-letter ISO country code, e.g. "US" or "GB". Used when a number has no international prefix.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http mcp https://mcp.veriphone.io \ --header 'Authorization: Bearer YOUR_TOKEN'
Headers
Authorization (required): Bearer <your Veriphone API key> — get one free at https://veriphone.io/signupWhich countries support mode "current" (the carrier currently serving a number, after porting). Pass a country to get yes/no, or nothing for the full list. Free to call, no key needed.
| Argument | Type | Description |
|---|---|---|
| country | string | Two-letter ISO country code, e.g. "US" or "GB". Used when a number has no international prefix. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"country": {
"type": "string",
"maxLength": 2,
"minLength": 2,
"description": "Two-letter ISO country code, e.g. \"US\" or \"GB\". Used when a number has no international prefix."
}
}
}A syntactically valid example phone number for a country and line type (MOBILE, FIXED_LINE, TOLL_FREE, VOIP…), useful for testing formats. Free to call.
| Argument | Type | Description |
|---|---|---|
| type | string | MOBILE (default), FIXED_LINE, TOLL_FREE, VOIP, PREMIUM_RATE… |
| country | string | Two-letter ISO country code, e.g. "US" or "GB". Used when a number has no international prefix. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"type": {
"type": "string",
"description": "MOBILE (default), FIXED_LINE, TOLL_FREE, VOIP, PREMIUM_RATE…"
},
"country": {
"type": "string",
"maxLength": 2,
"minLength": 2,
"description": "Two-letter ISO country code, e.g. \"US\" or \"GB\". Used when a number has no international prefix."
}
}
}The account's plan, monthly limit, credits used this period, pay-as-you-go balance, and usage split by static/current mode. Free to call.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}Validate one phone number and return its line type (mobile, fixed_line, voip, toll_free…), carrier, country, region, and formats (E.164, international, local). Costs 1 credit (static) or 10 credits (mode "current" — also resolves the carrier currently serving the number, incl. ported numbers). Invalid numbers are a charged, definitive answer with a reason. Not a check of whether the phone is switched on.
| Argument | Type | Description |
|---|---|---|
| mode | string | "static" (default, 1 credit): validity, line type, carrier of the number's original range, country, formatting. "current" (10 credits, 1 if unresolved): everything in static plus the carrier currently serving the number, even after porting, with a ported flag. |
| phone* | string | The number to check, ideally in international format, e.g. "+14169670000". |
| default_country | string | Two-letter ISO country code, e.g. "US" or "GB". Used when a number has no international prefix. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"phone"
],
"properties": {
"mode": {
"enum": [
"static",
"current"
],
"type": "string",
"description": "\"static\" (default, 1 credit): validity, line type, carrier of the number's original range, country, formatting. \"current\" (10 credits, 1 if unresolved): everything in static plus the carrier currently serving the number, even after porting, with a ported flag."
},
"phone": {
"type": "string",
"minLength": 3,
"description": "The number to check, ideally in international format, e.g. \"+14169670000\"."
},
"default_country": {
"type": "string",
"maxLength": 2,
"minLength": 2,
"description": "Two-letter ISO country code, e.g. \"US\" or \"GB\". Used when a number has no international prefix."
}
}
}Validate up to 50 phone numbers in one call (same fields as verify_phone, one result per input, in order). Costs 1 credit per number (10 in current mode). For thousands of numbers use the CSV upload at https://veriphone.io/clean-phone-list instead.
| Argument | Type | Description |
|---|---|---|
| mode | string | "static" (default, 1 credit): validity, line type, carrier of the number's original range, country, formatting. "current" (10 credits, 1 if unresolved): everything in static plus the carrier currently serving the number, even after porting, with a ported flag. |
| phones* | array | Up to 50 numbers. |
| default_country | string | Two-letter ISO country code, e.g. "US" or "GB". Used when a number has no international prefix. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"phones"
],
"properties": {
"mode": {
"enum": [
"static",
"current"
],
"type": "string",
"description": "\"static\" (default, 1 credit): validity, line type, carrier of the number's original range, country, formatting. \"current\" (10 credits, 1 if unresolved): everything in static plus the carrier currently serving the number, even after porting, with a ported flag."
},
"phones": {
"type": "array",
"items": {
"type": "string",
"minLength": 3
},
"maxItems": 50,
"minItems": 1,
"description": "Up to 50 numbers."
},
"default_country": {
"type": "string",
"maxLength": 2,
"minLength": 2,
"description": "Two-letter ISO country code, e.g. \"US\" or \"GB\". Used when a number has no international prefix."
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 9, 2026.
No readOnlyHint / destructiveHint annotations, so clients can't tell a read from a write without asking.
Fix: Add annotations to each tool, e.g. { readOnlyHint: true } for tools that only read.