Skip to main content
Glama

lookup

SMS Deliverability Check

vri_sms_deliverability

Line-type-based SMS capability and reputation signals for a North American number. Not an actual delivery test or guarantee. Unknown reputation never clears a number to message. Returns sms_capable (live line-type read), VoIP flag, spam reputation, the recipient's approximate local time with an 8am-9pm calling-window flag, and plain-language reasons. Deliverability and reputation signals only — not a legal compliance determination (no DNC/reassigned-number/litigator data). Performs its own LRN and spam lookup; avoid calling after number_lookup for the same data. Live customer keys spend balance. Repeating a call can charge again; reuse a stable request_id with identical arguments for a safe retry. Use max_cost to cap the quote. Use a test key for integration tests.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
max_costNoMaximum quoted cost in USD; rejected before lookup if exceeded.
request_idNoStable unique ID for this operation. Reuse with identical arguments to retrieve its receipt without another charge.
phone_numberYesUS/Canada number, any common format

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
voipNo
reasonsNoPlain-language reasons this number is or is not a good send. Empty means nothing is wrong. When reputation is against the number these also carry the evidence behind it (complaint counts and recency, complaint category, community reports, recent porting) and a closing "reputation confidence: low|medium|high" line.
line_typeNo
sms_capableNoInferred from line type; null when unknown. Not a delivery guarantee.
spam_flaggedNo
recipient_localNoApproximate timezone, local_time, quiet_hours_ok
ok_to_message_nowNosms_capable AND clean AND inside the calling window

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changed
    • addedInput schema / additionalProperties
      Added value: +false
    • addedInput schema / properties / max_cost
      Added value: +{
      +  "description": "Maximum quoted cost in USD; rejected before lookup if exceeded.",
      +  "minimum": 0,
      +  "type": "number"
      +}
    • addedInput schema / properties / request_id
      Added value: +{
      +  "description": "Stable unique ID for this operation. Reuse with identical arguments to retrieve its receipt without another charge.",
      +  "type": "string"
      +}
    • changedOutput schema / properties / sms_capable / description
      Previous value: -"Wireless line that can receive SMS"New value: +"Inferred from line type; null when unknown. Not a delivery guarantee."
    • changedOutput schema / properties / sms_capable / type
      Previous value: -"boolean"New value: +[
      +  "boolean",
      +  "null"
      +]
    • changedOutput schema / properties / spam_flagged / type
      Previous value: -"boolean"New value: +[
      +  "boolean",
      +  "null"
      +]
  2. Changed1 schema field changed
    • addedOutput schema / properties / reasons / description
      Added value: +"Plain-language reasons this number is or is not a good send. Empty means nothing is wrong. When reputation is against the number these also carry the evidence behind it (complaint counts and recency, complaint category, community reports, recent porting) and a closing \"reputation confidence: low|medium|high\" line."
  3. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations declare readOnlyHint=false (it costs money), idempotentHint=false, and openWorldHint=true; the description adds the crucial context behind those flags — live keys spend balance, repeat calls can charge again, and a stable request_id is the safe-retry path. It also discloses the semantic caveat that unknown reputation never clears a number to message, which no annotation conveys.

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?

Dense but front-loaded: capability statement first, then the negative scope, then return contents, then operational cautions. A few clauses overlap (the delivery-test disclaimer and the compliance disclaimer), but nearly every sentence carries distinct operational value.

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?

Covers what the tool is, what it returns (sms_capable, VoIP flag, spam reputation, local time with calling-window flag, reasons), its limits, cost/retry behavior, and its relationship to sibling tools. An output schema exists, so return-format detail is appropriately delegated.

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 the baseline is 3, but the description adds cross-parameter behavioral meaning: request_id is framed as both a billing-safety and receipt-retrieval mechanism, and max_cost as a pre-lookup quote cap. These tie the parameters to consequences rather than merely restating their types.

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?

States a specific verb+resource — line-type-based SMS capability and reputation signals for a North American number — and names exactly what it is not (delivery test, compliance check). It also differentiates from siblings by noting it performs its own LRN and spam lookup so vri_number_lookup need not precede it.

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?

Explicit when/when-not guidance: avoid calling after number_lookup for the same data, use a test key for integration tests, use max_cost to cap the quote, reuse request_id for safe retries. Alternatives and exclusions are spelled out rather than implied.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.