Skip to main content
Glama

Server Details

Offline phone-number validation and formatting (E.164, region, line type). No carrier lookup.

Ownership verified
Status
Healthy
Uptime
100.0% over 20 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
ChatGPT
–
Claude
–

TDQS

A4.1/5.0

Scored across 2 tools

Disambiguation5/5

The two tools have clearly distinct purposes: one retrieves example numbers for format testing, the other validates and parses a given phone number. An agent can easily tell which to use based on the input and desired output.

Naming Consistency5/5

Both names follow a consistent verb_noun snake_case pattern: get_example_number and parse_phone_number. The naming is predictable and readable.

Tool Count4/5

Two tools are slightly under the typical 3–15 range, but they map directly to the two available API endpoints and each earns its place. The set is well-scoped for a focused phone number utility.

Completeness4/5

The core operations for validating and formatting phone numbers plus retrieving example numbers are covered. A minor gap exists for auxiliary operations like listing supported regions or batch parsing, but these are not critical for the stated purpose.

Available Tools

2 tools
get_example_numberGet an example number for a regionA
Read-onlyIdempotent
Inspect

Return the libphonenumber example (mobile) number for a region, in all formats, for format testing only (do not dial). Read-only. Same data and limits as GET /v1/example/{country}.

NameRequiredDescriptionDefault
countryYesISO 3166-1 alpha-2 region code, e.g. US, GB, DE.

Output Schema

NameRequiredDescription
e164No
noteNo
countryNo
rfc3966No
nationalNo
line_typeNo
calling_codeNo
country_nameNo
internationalNo

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered; 'Read-only' is largely redundant. The description still adds real value by warning 'do not dial' and by pointing to 'Same data and limits as GET /v1/example/{country}', hinting at rate/usage limits.

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

Conciseness4/5

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

Front-loads the core purpose in one sentence with the safety caveat immediately after; no filler sentences. The inline parentheticals make it slightly dense but everything earns its place.

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

Completeness4/5

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

An output schema exists, so return values need not be explained, and the description still notes that all formats are returned. Required parameter, safety profile and an endpoint equivalence are all covered; only sibling routing and limit specifics are absent.

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

Parameters3/5

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

Schema description coverage is 100% (the single country param is fully documented with pattern and example codes), so the baseline is 3. The description adds no additional parameter meaning beyond what the schema provides.

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

Purpose4/5

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

States a specific verb and resource ('Return the libphonenumber example (mobile) number for a region, in all formats') with a clear scope. It does not name or contrast with the sibling parse_phone_number, so an agent gets the purpose but no explicit differentiation.

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

Usage Guidelines4/5

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

Gives a clear use context ('for format testing only') plus an explicit exclusion ('do not dial'), which tells the agent when this is appropriate. It stops short of naming alternatives or preconditions for choosing it over parse_phone_number.

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

parse_phone_numberValidate and format a phone number (offline)A
Read-onlyIdempotent
Inspect

Validate one phone number offline against libphonenumber metadata and return E.164, international, national and RFC 3966 formats, region, calling code and line type (from the original allocation). Valid means the number fits an allocated range, not that the line is connected or reachable; no carrier/HLR lookup. Read-only. Same engine, keys and limits as POST /v1/parse.

NameRequiredDescriptionDefault
numberYesThe phone number, e.g. "+44 20 7946 0018" or "(213) 373-4253". Max 64 characters.
default_countryNoOptional ISO 3166-1 alpha-2 region used when the number has no +country code, e.g. US, GB.

Output Schema

NameRequiredDescription
e164No
inputNo
validYes
reasonNo
countryNo
messageNo
rfc3966No
nationalNo
possibleNo
extensionNo
line_typeNo
calling_codeNo
country_nameNo
internationalNo
non_geographicNo
default_countryNo
national_numberNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover readOnly/idempotent/closed-world, so the bar is lower, and the description still adds real value: it defines 'valid' as fitting an allocated range rather than being reachable, rules out carrier/HLR lookups, and notes the engine, keys and limits match the REST endpoint. 'Read-only' restates readOnlyHint=true, which is wasted words but harmless.

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

Conciseness4/5

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

Three sentences, front-loaded with the core action and output set, with the definitional caveat and constraints following. Dense but every clause carries information; the redundant 'Read-only' is the only slack.

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

Completeness4/5

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

With an output schema present, the description needn't explain return structure, and it doesn't have to; it still enriches the return by noting line type comes from the original allocation. The only soft spot is the cryptic pointer to POST /v1/parse for 'keys and limits', which an MCP-only agent cannot resolve.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters (number, default_country) are already fully documented, including examples and the ISO 3166-1 alpha-2 semantics. The description adds no parameter-level detail beyond the output formats, so the baseline 3 applies.

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 first sentence names a precise verb (validate) and resource (one phone number) plus the engine (libphonenumber metadata) and scope (offline), and enumerates the returned formats. It is unmistakably distinct from the sibling get_example_number, which generates numbers rather than parsing a supplied one.

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

Usage Guidelines4/5

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

It clearly frames the context of use as an offline validation with no carrier/HLR lookup, and defines what a positive result actually means. What is missing is explicit routing guidance versus the sibling tool (e.g. 'use get_example_number when you need a sample number for a region').

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 2 tool updates
    • First observedget_example_number
    • First observedparse_phone_number

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to validate and format phone numbers offline, returning E.164, region, and line type without carrier lookup through MCP tools.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables validating and enriching phone numbers, returning validity, international/national formats, carrier, line type, and country/location data.
    280 npm
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Local stdio tools for phone numbering-plan metadata and email syntax/DNS, preserving null and unknown results. Not live carrier or mailbox verification; invitation-only free beta API key required, 100 checks per key, host may sleep.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables validating phone numbers and retrieving carrier, line type, country, and location details, as well as listing supported countries and dialing prefixes.
    378 npm
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources