Skip to main content
Glama

lookup

Number Lookup

vri_number_lookup

Live intelligence for ONE North American phone number: current carrier of record, line type, LRN routing data, porting activation date, and optionally caller-ID name (cnam), spam reputation, and messaging provider. Always a fresh read of live numbering infrastructure — never cached carrier 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.
productsNoData sets to include. Default ['lrn'] (carrier/line-type/routing).
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
include_sms_assessmentNoInclude SMS assessment from this same lookup. Adds LRN/spam if absent; no second lookup.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
dataNo
riskNoExplainable spam/risk verdict: WHY the number is flagged (or not), with an honest confidence band. A clean verdict means "nothing found against it", never "verified safe".
billedNoWhether this lookup was charged
statusNo
phone_numberNoNormalized number
total_chargedNo
partial_resultsNo
products_availableNo
products_unavailableNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed12 schema fields changed
    • addedInput schema / additionalProperties
      Added value: +false
    • addedInput schema / properties / include_sms_assessment
      Added value: +{
      +  "description": "Include SMS assessment from this same lookup. Adds LRN/spam if absent; no second lookup.",
      +  "type": "boolean"
      +}
    • 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 / products / minItems
      Added value: +1
    • 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"
      +}
    • removedOutput schema / properties / data / description
      Removed value: -"Carrier, line type, LRN, and any requested cnam/spam/messaging fields"
    • addedOutput schema / properties / partial_results
      Added value: +{
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / products_available
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / products_unavailable
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • removedOutput schema / properties / status / description
      Removed value: -"success or error"
    • addedOutput schema / properties / status / enum
      Added value: +[
      +  "success",
      +  "partial",
      +  "failed",
      +  "pending"
      +]
    • addedOutput schema / properties / total_charged
      Added value: +{
      +  "type": "number"
      +}
  2. Changed1 schema field changed
    • addedOutput schema / properties / risk
      Added value: +{
      +  "additionalProperties": true,
      +  "description": "Explainable spam/risk verdict: WHY the number is flagged (or not), with an honest confidence band. A clean verdict means \"nothing found against it\", never \"verified safe\".",
      +  "properties": {
      +    "confidence": {
      +      "description": "How much weight the evidence actually carries",
      +      "enum": [
      +        "low",
      +        "medium",
      +        "high"
      +      ],
      +      "type": "string"
      +    },
      +    "confidence_note": {
      +      "description": "One plain sentence explaining the band",
      +      "type": "string"
      +    },
      +    "reasons": {
      +      "description": "Individual pieces of evidence behind the verdict",
      +      "items": {
      +        "additionalProperties": true,
      +        "properties": {
      +          "code": {
      +            "description": "provider_flag, ftc_complaints, complaint_category, community_reports, line_type_voip, recently_ported, no_complaints",
      +            "type": "string"
      +          },
      +          "signal": {
      +            "enum": [
      +              "negative",
      +              "positive",
      +              "context"
      +            ],
      +            "type": "string"
      +          },
      +          "text": {
      +            "description": "Human-readable evidence",
      +            "type": "string"
      +          },
      +          "weight": {
      +            "enum": [
      +              "strong",
      +              "moderate",
      +              "weak"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "verdict": {
      +      "description": "unknown = no reputation data was read for this number",
      +      "enum": [
      +        "scam",
      +        "robocall",
      +        "reported",
      +        "clean",
      +        "unknown"
      +      ],
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
  3. First observed

TDQS

A4.4/5.0
Behavior5/5

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

Adds substantial context beyond the annotations: live keys spend balance, repeat calls can charge again, request_id reuse with identical arguments avoids a second charge, and the read is never cached. This explains why readOnlyHint is false and idempotentHint is false, and gives the agent an actual safe-retry path.

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 capability, then layers billing and retry guidance in short declarative sentences. It is on the longer side and slightly repetitive around charging, but every sentence carries actionable information.

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 scope, cost, retry semantics, test mode, and optional data sets for a tool with a complete schema and an output schema that handles return values. Nothing needed to call it correctly is missing.

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 the baseline is 3. The description restates max_cost as a cap and request_id as a retry key, and names the optional products (cnam/spam/messaging), but adds no syntax or format detail the schema does not already carry.

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 and resource ('Live intelligence for ONE North American phone number') and enumerates exactly what comes back: carrier, line type, LRN routing, porting date, plus optional cnam/spam/messaging. The capitalized 'ONE' cleanly separates it from the vri_bulk_lookup sibling.

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 concrete operational guidance: cap spend with max_cost, use a test key for integration tests, reuse request_id for safe retries. It does not explicitly name vri_bulk_lookup as the alternative for multi-number work, so the routing is implied by 'ONE' rather than stated.

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.