Validate SMS-capable phone numbers -- mobile vs landline detection, carrier type, E.164 format, SMS readiness.
Single tool 'sms_validate_number' has a well-structured schema with proper types and descriptions for both parameters. The tool description is comprehensive (280+ chars) and includes use cases, expected output format, and explicit guidance on when NOT to use it (pattern:tool-description). However, the description embeds example output JSON and example use cases that could be misinterpreted by LLMs as literal values. The schema is complete with required fields and type definitions, meeting baseline standards. No error handling guidance is documented, the tool does not explain what happens on invalid input, network failure, or unsupported country codes. Output schema is described in prose but not formally documented as a JSON schema structure.
Use this when you need to check if a phone number can receive SMS messages. Returns SMS capability data in JSON. Returns: 1. canReceiveSMS (boolean) 2. carrierType (mobile/landline/voip) 3. e164 formatted number 4. countryCode 5. numberType (mobile/landline/voip/toll-free) 6. carrier name. Example output: {"phone":"+14155551234","canReceiveSMS":true,"carrierType":"mobile","e164":"+14155551234","countryCode":"US","numberType":"mobile","carrier":"T-Mobile"} Use this BEFORE sending SMS campaigns, FOR filtering landlines from SMS lists, verifying 2FA phone numbers, and OTP delivery validation. Do NOT use for full phone validation with carrier lookup -- use phone_validate_number instead. Do NOT use for email validation -- use email_verify_address instead. Do NOT use for address validation -- use address_validate instead.
No error handling guidance. Tool description does not explain what happens on invalid phone number, network timeout, unsupported country, or API failure. LLM has no recovery path.
Example output JSON embedded in description. LLMs may reuse example values literally (e.g. '+14155551234') in real calls instead of adapting to actual context.
Output schema not formally documented. Description lists 6 return fields in prose, but no JSON schema structure provided. LLM cannot reliably parse response structure.
Parameter 'countryCode' marked optional but its utility is unclear. Description says 'hint' but does not explain when it is required vs optional, or how it affects validation logic.
Inferred effective spec: 2025-06-18+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 64 | 2025-06-18+ | v2 |
No rate limiting or quota guidance documented. Tool may be called in loops by agents; no indication of per-minute limits or cost implications.