Veriroute Intel Lookup
Live US/Canada phone number intelligence for AI agents, exposed as a hosted MCP server with tools for single, bulk, and async lookups.
vri_number_lookup: fetch live carrier, line type, LRN routing, porting date, and optional CNAM, spam reputation, and messaging provider for one number
vri_spam_check: get spam/scam/robocall reputation verdict for a number
vri_sms_deliverability: check if a number can receive SMS, whether it is VoIP, spam-flagged, and whether it is currently okay to message based on local time
vri_bulk_lookup: run live lookups for up to 100 numbers in one call
vri_submit_job: submit async bulk jobs up to 10,000 numbers with upfront balance reservation
vri_bulk_status: monitor progress of submitted async jobs
VeriRoute Intel MCP Server
Tells your agent whether a number is safe to call or text right now. Live reads of the U.S. and Canadian phone networks — carrier of record, line type, LRN, CNAM caller ID, spam/scam reputation, SMS deliverability, and a TCPA 8 a.m.–9 p.m. calling-window verdict — plus bulk lookups. Every query gets a fresh dip, never stale cached data. Free sandbox key, no card required. Pay per lookup with no minimums.
This is a hosted (remote) MCP server — nothing to install or run.
Endpoint:
https://verirouteintel.com/api/mcp(Streamable HTTP, JSON-RPC 2.0)Auth:
Authorization: Bearer <your VeriRoute Intel API key>Get a key: https://verirouteintel.com/dashboard/api-keys — free sandbox test keys return deterministic sample data with zero charges, perfect for wiring an agent up before funding.
Connect
Claude Code (CLI)
claude mcp add --transport http vri https://verirouteintel.com/api/mcp \
--header "Authorization: Bearer YOUR_API_KEY"Claude.ai / Claude Desktop
Add a custom connector with URL https://verirouteintel.com/api/mcp and header
Authorization: Bearer YOUR_API_KEY.
Cursor and other MCP clients (mcp.json)
{
"mcpServers": {
"vri": {
"url": "https://verirouteintel.com/api/mcp",
"headers": { "Authorization": "Bearer YOUR_API_KEY" }
}
}
}Related MCP server: Platfone MCP - Receive SMS & Virtual Numbers
Tools
Tool | What it does |
| Live intelligence for one number: carrier, line type, LRN routing, porting date; optional CNAM, spam reputation, messaging provider |
| Spam / scam / robocall reputation for one number |
| One verdict for outreach agents: can this number receive SMS, and is now a reasonable time to send? Line type, VoIP flag, spam reputation, and the recipient's approximate local time with an 8am–9pm calling-window flag |
| Up to 100 numbers in one call |
| Submit an async bulk job (up to 10,000 numbers); balance reserved up front |
| Progress of one of your bulk jobs |
Billing
Live keys pay the same per-lookup rates as the REST API from a prepaid balance. Every result reports what it cost; failed lookups are never charged, and a call that would exceed your available balance is refused up front.
Use cases
Clean calling lists before dialing (dead/ported/VoIP detection)
Check your own outbound caller IDs for "Spam Likely" labeling
Verify line type before sending SMS
Enrich CRM records with live carrier data — from inside an agent workflow
© First Light Holdings, LLC, DBA VeriRoute Intel · Terms · Privacy
Directories
Published in the Official MCP Registry as com.verirouteintel/lookup · Smithery · MCP.so
Local stdio (CI, offline, or clients without remote MCP)
A zero-dependency Node shim, published to npm, forwards to the hosted server:
VRI_API_KEY=YOUR_API_KEY npx veriroute-intel-mcpOr in an mcp.json-style client config:
{
"mcpServers": {
"vri": {
"command": "npx",
"args": ["-y", "veriroute-intel-mcp"],
"env": { "VRI_API_KEY": "YOUR_API_KEY" }
}
}
}Discovery works without a key; tool calls need one (free sandbox test keys return sample data with zero charges). Prefer the hosted endpoint whenever your client supports remote MCP.
Available Tools
6 toolsvri_bulk_lookupBulk LookupARead-onlyIdempotentInspect
Live lookup for up to 100 North American phone numbers in one call (carrier, line type, routing; optional cnam/spam/messaging). Each number is a fresh paid read — spend scope required.
| Name | Required | Description | Default |
|---|---|---|---|
| products | No | Data sets per number. Default ['lrn']. | |
| phone_numbers | Yes | US/Canada numbers, any common format (max 100) |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | No | |
| total_charged | No | USD amount billed for this call |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the operation read-only, idempotent, and non-destructive. The description adds critical behavioral and cost context beyond annotations: 'Each number is a fresh paid read — spend scope required.' This is exactly the extra information an agent needs before invoking a potentially expensive call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. The core capacity and geographic scope are front-loaded, followed by the product list and the essential cost caveat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides the max batch size, the number types and formats accepted (schema), the optional products, and the spend authorization requirement. With an output schema available, nothing needed for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers both parameters at 100%, so the baseline is 3. The description adds value by mapping the lrn product to 'carrier, line type, routing' and labeling cnam/spam/messaging as optional, which helps an agent choose products without external domain knowledge.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: a live lookup for up to 100 North American phone numbers in one call. It also lists the data types returned (carrier, line type, routing; optional cnam/spam/messaging), which clearly distinguishes it from a single-number lookup tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'up to 100 North American phone numbers in one call' provides clear context for when to use this bulk tool. It does not explicitly name vri_number_lookup as the single-number alternative or state when not to use it, but the batch semantics are obvious enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vri_bulk_statusBulk Job StatusARead-onlyIdempotentInspect
Status and progress of a VRI bulk lookup job by job id.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | Job id returned by vri_bulk_lookup or vri_submit_job |
Output Schema
| Name | Required | Description |
|---|---|---|
| job_id | No | |
| status | No | Job state, e.g. RUNNING or COMPLETED |
| processed | No | Numbers completed so far |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is well covered. The description adds the useful context that the tool reports status and progress by job id, but it does not disclose additional behavioral details such as job lifecycle states or failure conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that states the core purpose and the key identifier without any wasted words. It is appropriately sized for a simple one-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity, one parameter with full schema coverage, rich annotations, and an existing output schema, the description is sufficient for an agent to select and invoke it correctly. No critical information appears to be missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents the single parameter job_id at 100% coverage, including its origin from vri_bulk_lookup or vri_submit_job. The description merely repeats 'by job id' and adds no new semantic information beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource (a VRI bulk lookup job) and the operation (retrieving its status and progress). It is not a tautology and is distinguishable from siblings like vri_submit_job or vri_bulk_lookup, though it does not explicitly name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states that the job id is returned by vri_bulk_lookup or vri_submit_job, which clearly implies this tool is for checking status after a job has been submitted. It provides clear context but does not explicitly exclude alternatives or state 'use this when...'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vri_number_lookupNumber LookupARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| products | No | Data sets to include. Default ['lrn'] (carrier/line-type/routing). | |
| phone_number | Yes | US/Canada number, any common format |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | Carrier, line type, LRN, and any requested cnam/spam/messaging fields |
| billed | No | Whether this lookup was charged |
| status | No | success or error |
| phone_number | No | Normalized number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, open-world, and non-destructive behavior. The description adds meaningful behavioral context by promising a fresh read of live numbering infrastructure and explicitly stating that carrier data is never cached, which is valuable beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two tight sentences with no filler. It front-loads the singular scope and core data domains, then adds the behavioral guarantee. Every clause earns its place, and it does not redundantly repeat the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a full output schema, 100% parameter coverage, and annotations covering the tool's safety profile, the description supplies the remaining decision-relevant context: single-number live lookup and optional product selection. An agent has enough information to select and invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already fully documented in the input schema. The description adds only mild semantic context, such as clarifying that the lookup is for one number and that products are optional, which meets but does not exceed the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a concrete read operation ('Live intelligence for ONE North American phone number') and enumerates the exact data domains returned: carrier, line type, LRN, porting activation, and optional CNAM, spam reputation, and messaging provider. The 'ONE' scope clearly distinguishes it from bulk siblings like vri_bulk_lookup.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: use this for a single number where you need fresh carrier/routing intelligence and optionally additional data products. It does not explicitly name alternatives or state when not to use it, but the emphasis on 'ONE' and the later 'never cached' guarantee imply the boundaries against bulk and stale-data tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vri_sms_deliverabilitySMS Deliverability CheckARead-onlyIdempotentInspect
ONE verdict for AI outreach: can this North American number receive SMS, and is now a reasonable time to send? 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).
| Name | Required | Description | Default |
|---|---|---|---|
| phone_number | Yes | US/Canada number, any common format |
Output Schema
| Name | Required | Description |
|---|---|---|
| voip | No | |
| reasons | No | |
| line_type | No | |
| sms_capable | No | Wireless line that can receive SMS |
| spam_flagged | No | |
| recipient_local | No | Approximate timezone, local_time, quiet_hours_ok |
| ok_to_message_now | No | sms_capable AND clean AND inside the calling window |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly, openWorld, idempotent, and non-destructive behavior. The description adds meaningful context: it performs a live line-type read, returns approximate local time, applies an 8am-9pm calling window, and explicitly excludes DNC/reassigned/litigator data. This goes beyond the structured annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences carry a clear value proposition, a summary of outputs, and an important limitation. The 'ONE verdict' opening is immediately meaningful, and there is no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, read-only tool with an output schema, the description covers the decision-use case, key outputs, and a boundary of the tool's scope. The 8am-9pm window is specified, and because the output schema exists, exhaustively listing return fields is unnecessary. A brief note on error handling would round it out, but nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, phone_number, has 100% schema description coverage ('US/Canada number, any common format'). The description only restates the North American scope and adds no new parameter-level detail, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific purpose: a single verdict on whether a North American number can receive SMS and whether now is a reasonable time to send. It enumerates concrete outputs (sms_capable, VoIP flag, spam reputation, local time window) and explicitly distinguishes itself from legal-compliance tools. This makes it easy to separate from siblings like vri_spam_check or vri_number_lookup.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear use context ('for AI outreach') and an explicit exclusion ('not a legal compliance determination'). However, it never names alternative sibling tools or states when to choose this over vri_spam_check or vri_number_lookup, leaving the routing to implication rather than explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vri_spam_checkSpam CheckARead-onlyIdempotentInspect
Spam/scam/robocall reputation for one North American phone number.
| Name | Required | Description | Default |
|---|---|---|---|
| phone_number | Yes | US/Canada number, any common format |
Output Schema
| Name | Required | Description |
|---|---|---|
| is_spam | No | True if flagged spam/scam/robocall |
| spam_type | No | SCAM, ROBOCALL, or null when clean |
| phone_number | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, covering the safety profile. The description adds the useful constraint of 'one North American phone number' but does not disclose additional behavioral details such as response shape, data sources, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence captures the tool's purpose with no filler. Every word earns its place, and the key scope qualifiers ('one', 'North American') are included without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, single-parameter, read-only tool with an output schema and full schema coverage, this description is complete enough. It tells the agent what the tool does and its geographic/single-number scope, while the annotations and schema cover safety and parameter details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents the only parameter with 100% coverage, so the description adds little beyond reinforcing that it accepts one phone number. 'North American' aligns with the schema's US/Canada note but does not meaningfully extend the schema's meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as providing spam/scam/robocall reputation for a single phone number. The 'one North American phone number' qualifier distinguishes it from bulk-oriented siblings, though it does not name them explicitly or use an explicit verb like 'checks'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the domain terms 'spam/scam/robocall' and the single-number scope, so an agent can infer when to use it. However, the description offers no explicit when/when-not guidance or mention of alternatives such as vri_bulk_lookup or vri_sms_deliverability.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vri_submit_jobSubmit Async JobAInspect
Submit an ASYNC bulk lookup job for up to 10000 North American phone numbers. Balance is reserved up front and the job runs in the background; check progress with vri_bulk_status. Requires a customer API key (jobs bill the account that owns the key).
| Name | Required | Description | Default |
|---|---|---|---|
| products | No | Default ['lrn']. | |
| phone_numbers | Yes | US/Canada numbers to process asynchronously (max 10000) |
Output Schema
| Name | Required | Description |
|---|---|---|
| job_id | No | Use with vri_bulk_status |
| status | No | |
| reserved | No | USD balance reserved for the job |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial behavioral context beyond the annotations: balance is reserved up front, the job runs in the background, a customer API key is required, and the job bills the account that owns the key. These side effects are critical for a non-read-only tool, and the description discloses them clearly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: it opens with the core action and constraints, then covers billing, background execution, and monitoring in two tight sentences. There is no redundant or vague filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter tool with an output schema and useful annotations, the description covers all key operational concerns: async behavior, size limit, balance reservation, status checking, authentication, and billing. Nothing essential for an agent to select and invoke the tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents both parameters completely, including the phone number format, maxItems, and the products default. The description restates the geography and size limit but does not add meaningful parameter-level meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action, submit, and a specific resource, an ASYNC bulk lookup job, with explicit scope of up to 10000 North American phone numbers. The ASYNC qualifier and the pointer to vri_bulk_status help position it among sibling lookup and status tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly frames when to use the tool: for large bulk asynchronous lookups, with balance reserved up front and progress tracked via vri_bulk_status. It does not explicitly contrast this with synchronous alternatives like vri_number_lookup or vri_bulk_lookup, but the async context is clear enough for an agent to infer the right scenario.
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.
6 tool updates
v0.1.0- First observed
vri_bulk_lookup - First observed
vri_bulk_status - First observed
vri_number_lookup - First observed
vri_sms_deliverability - First observed
vri_spam_check - First observed
vri_submit_job
TDQS
Scored across 6 tools
Most tools have clear, distinct purposes: single vs bulk, sync vs async, and specialist SMS/spam verdicts. However, vri_spam_check overlaps with the optional spam reputation included in vri_number_lookup and vri_sms_deliverability, so a couple of tools could be confused if an agent only cares about a specific signal.
All tools share the vri_ prefix and snake_case, which makes the family recognizable. But action placement is inconsistent: vri_submit_job is verb-first while vri_number_lookup, vri_bulk_lookup, and vri_spam_check are noun-first, and vri_sms_deliverability is not an action at all.
Six tools is a well-scoped size for a phone-intelligence API: one-off lookup, bulk sync, bulk async, async status, spam, and SMS deliverability each cover a distinct workflow without bloat.
The core lookup surface is covered: single, bulk sync, bulk async, status, spam, and SMS deliverability. The main gap is a small one—there is no explicit results-retrieval or job-management tool beyond status/progress, and account/balance handling is only referenced as a constraint.
Maintenance
Related MCP Connectors
Read-only phone intelligence for AI voice agents — line type, risk, DNC, signed receipts.
Phone carrier lookup, append, verification, DNC, and fraud data services.
Real-time B2B data for agents: search and enrich 1B+ people and 200M+ company profiles.
Give your AI agent a phone: place calls, navigate IVRs, wait on hold, get structured answers.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProvides real-time LNP/WLNP (Wireless Local Number Portability) and LRN auditing. Features specialized congestion logic for 2026 global events. Essential for routing agents managing wireless and wireline transit.MIT
- AlicenseAqualityCmaintenanceVirtual phone number platform for AI agents — rent numbers across 200+ countries, receive SMS, and manage the full activation lifecycle.647 npm4MIT
- AlicenseAqualityBmaintenanceEnables querying telecom routing data (LRN, CNAM, DNO, LERG, toll-free routing) directly from AI assistants like Claude, ChatGPT.1471 npmMIT
- AlicenseAqualityDmaintenanceProvides North American (NANP) area code and phone number intelligence for AI agents, including area code lookup, phone validation, carrier info, city/state coverage, local time, and scam context.834 npmMIT