billionverify-mcp
OfficialThis server lets AI assistants verify email addresses and manage BillionVerify account operations.
Verify a single email in real time (with optional SMTP checks and cache bypass)
Verify up to 50 email addresses in one batch request
Check account credit balance
View paginated verification history
Get aggregated verification statistics for 7d / 30d / 90d / 1y periods
Poll status of async file verification jobs
Generate download URLs for verification results with filters (valid, invalid, unknown, catch-all, disposable, role-based)
Create, list, and delete webhooks for file completion/failure events
Check server health status
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@billionverify-mcpverify email john@example.com"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
BillionVerify MCP Server — TypeScript
Connect any AI assistant to BillionVerify email verification via the Model Context Protocol. Built with the official MCP TypeScript SDK.
Option 1 — Hosted Server (No Installation)
Use BillionVerify's hosted MCP server. There is nothing to install and no API key to paste: you sign in with your BillionVerify account over OAuth, and the connection is tied to that account.
Server URL |
|
Transport | Streamable HTTP |
Authentication | OAuth 2.1 (sign in with your BillionVerify account) |
The hosted server does not accept API keys (
?api_key=,BV-API-KEYorAuthorization: Bearer <api key>are all rejected). If you want to use an API key, use Option 2.
Detailed step-by-step guide: docs/connect-chatgpt-claude.md.
ChatGPT (web)
Settings → Apps & Connectors → Advanced settings → turn on Developer mode.
Settings → Apps & Connectors → Create.
Name
BillionVerify, MCP server URLhttps://mcp.billionverify.com/mcp, authentication OAuth → create.Sign in to BillionVerify in the window that opens and approve access.
In a new chat, click + → Developer mode → enable BillionVerify.
Claude (claude.ai / Claude Desktop)
Customize → Connectors → + → Add custom connector.
Name
BillionVerify, URLhttps://mcp.billionverify.com/mcp→ Add (leave Advanced settings empty).Click Connect, sign in to BillionVerify and approve access.
In a chat, click + → Connectors and make sure BillionVerify is on.
Team / Enterprise: an Owner adds the connector under Organization settings → Connectors, then each member clicks Connect.
Claude Code
claude mcp add --transport http billionverify https://mcp.billionverify.com/mcpThen run /mcp inside Claude Code, select billionverify and finish the sign-in in your browser.
Cursor
Add to ~/.cursor/mcp.json (global) or .cursor/mcp.json (project), then click Connect next to the server in Settings → MCP:
{
"mcpServers": {
"billionverify": {
"url": "https://mcp.billionverify.com/mcp"
}
}
}Related MCP server: Tratto MCP Server
Option 2 — Self-Hosted (TypeScript / Node.js)
Run your own MCP server using this TypeScript implementation.
Prerequisites
Node.js 18+
Run via npx (no install)
BILLIONVERIFY_API_KEY=your_api_key npx billionverify-mcpClaude Desktop config (self-hosted)
{
"mcpServers": {
"billionverify": {
"command": "npx",
"args": ["-y", "billionverify-mcp"],
"env": {
"BILLIONVERIFY_API_KEY": "your_api_key_here"
}
}
}
}Install globally
npm install -g billionverify-mcp
billionverify-mcpInstall from source
git clone https://github.com/BillionVerify/billionverify-mcp.git
cd billionverify-mcp
npm install
npm run build
npm startEnvironment Variables
Variable | Description | Default |
| Your BillionVerify API key | — |
| API base URL override |
|
Available Tools
Tool | Description |
| Verify a single email address in real-time |
| Verify up to 50 emails in one request |
| Check your credit balance |
| List verification history (paginated) |
| Aggregated statistics for 7d / 30d / 90d / 1y |
| Poll the status of an async file verification job |
| Get download URL for results with status filters |
| Subscribe to file completion events |
| List all configured webhooks |
| Remove a webhook |
| Check server health |
License
MIT
Available Tools
11 toolscreate_webhookB
Create a webhook to receive file verification completion notifications
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | HTTPS URL to receive webhook events | |
| events | Yes | Events to subscribe to | |
| api_key | No | BillionVerify API key (optional if BILLIONVERIFY_API_KEY env is set) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description should disclose behavioral traits. It only states 'Create a webhook' without mentioning duplication handling, required permissions, or any side effects of creation.
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 a single, short sentence that is concise and front-loaded. It could be slightly more informative but does not waste words.
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 moderate complexity (3 parameters, no output schema), the description is adequate but lacks context on error states, idempotency, or how to use the tool effectively.
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 the schema already documents all three parameters. The description adds no extra meaning beyond what the schema provides, meeting 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 clearly states the tool creates a webhook for file verification completion notifications. It uses a specific verb and resource, and distinguishes from siblings like delete_webhook or list_webhooks.
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?
No guidance on when to use this tool vs alternatives, such as when to create a webhook versus get_task_status for polling. No prerequisites or exclusions mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_webhookB
Delete a webhook by ID
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | No | BillionVerify API key (optional if BILLIONVERIFY_API_KEY env is set) | |
| webhook_id | Yes | The webhook ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description fails to disclose whether deletion is permanent, required permissions, or any side effects. It only states the basic action without behavioral depth.
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?
Single sentence, front-loaded with verb and resource, no extraneous words. Concise but lacks some detail.
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?
Adequate for a simple deletion tool with well-documented parameters, but misses contextual notes like permanence or that the webhook ID should come from list_webhooks.
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 coverage is 100% with clear parameter descriptions, so baseline is 3. The tool description adds no extra 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 clearly states the action (delete) and resource (webhook) with identifier (by ID), differentiating it well from sibling tools like create_webhook and list_webhooks.
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?
No guidance is provided about when to use this tool, prerequisites (e.g., webhook must exist), or alternatives. The description lacks any context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_account_balanceA
Get the current credit balance for your BillionVerify account
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | No | BillionVerify API key (optional if BILLIONVERIFY_API_KEY env is set) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It correctly indicates a read-only operation ('Get'), but fails to disclose any behavioral traits such as rate limits, authentication requirements beyond the optional api_key, or side effects.
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 a single, efficient sentence that conveys the tool's purpose without unnecessary words. It is front-loaded and easy to parse.
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 absence of an output schema, the description should ideally note what format the credit balance is returned in (e.g., numeric value, currency). The tool is simple, but the lack of return value information leaves a gap.
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% for the single parameter (api_key). The description does not add additional meaning beyond what the schema already provides, resulting in a baseline score.
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 states the specific action ('Get') and resource ('current credit balance for your BillionVerify account'), distinguishing it from sibling tools like verify emails or webhook management.
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?
No explicit guidance on when to use this tool versus alternatives is provided. The context is simple enough that usage may be implied, but the absence of conditions or exclusions prevents a higher score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_download_urlB
Get the download URL for file verification results with optional status filters
| Name | Required | Description | Default |
|---|---|---|---|
| role | No | Include role-based emails | |
| valid | No | Include valid emails | |
| job_id | Yes | The job ID of the completed file verification | |
| api_key | No | BillionVerify API key (optional if BILLIONVERIFY_API_KEY env is set) | |
| invalid | No | Include invalid emails | |
| unknown | No | Include unknown emails | |
| catchall | No | Include catch-all emails | |
| disposable | No | Include disposable emails |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It mentions optional filters but does not disclose that the job must be completed, auth requirements beyond the api_key parameter, or what the download URL behavior is (e.g., direct download, temporary link).
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 with no redundant information. Every word contributes to the purpose.
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?
Despite 100% schema coverage, the description lacks context about when to call the tool (post-job), what the return value contains (just a URL or data?), and how the status filters alter the URL. No output schema or annotations exacerbate the gap.
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 coverage is 100% with descriptions for all parameters. The description adds 'optional status filters' but does not explain how the filters combine or the meaning of the download URL. Baseline 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 clearly states the tool retrieves a download URL for file verification results, using a specific verb and resource. It distinguishes from sibling tools like verify_batch_emails and get_task_status, which have different purposes.
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?
No guidance is provided on when to use this tool versus alternatives. It does not mention prerequisites like job completion or contrast with get_task_status for checking status.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_task_statusA
Get the status and progress of an async file verification job
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | No | BillionVerify API key (optional if BILLIONVERIFY_API_KEY env is set) | |
| task_id | Yes | The job/task ID returned from a file upload |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It adds the 'async' context hinting at non-immediate completion, but does not disclose potential side effects, authentication requirements, or error scenarios.
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 a single sentence of 10 words, front-loading the purpose without wasted words. Slightly more structure could improve readability but it is concise.
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 no output schema, the description should indicate the return value. It mentions 'status and progress' but does not specify fields or format, leaving agents underinformed about what to expect.
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?
Both parameters have full descriptions in the input schema, so the description adds no extra meaning beyond that. 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 clearly states the verb 'Get', the resource 'status and progress', and the context 'async file verification job'. It effectively distinguishes from sibling tools like verify_single_email which initiate verification.
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 implies that the tool is used after a file upload to check job progress, but it does not explicitly state when to use it versus alternatives or provide exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_verification_historyC
List verification history for your BillionVerify account
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | The page number to retrieve | |
| limit | No | The number of history records to return per page | |
| api_key | No | BillionVerify API key (optional if BILLIONVERIFY_API_KEY env is set) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. 'List' does imply a read-only operation, but the description discloses nothing else — no mention of authentication expectations, pagination/ordering behavior, result limits, or what the returned records contain. The bare verb is the minimum possible disclosure.
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 seven-word sentence with zero filler, front-loaded with the verb and resource. Every word earns its place and the purpose is immediately parseable.
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 tool has no output schema and no annotations, and the description says nothing about the response shape, ordering, or how far back history extends. Against a field of 10 siblings, it also fails to disambiguate from get_verification_stats. For a simple list tool the gap is moderate, but the description is thinner than it should be given the missing structured context.
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 the schema fully documents page, limit, and api_key. The description adds only marginal context ('your account' loosely ties to api_key) but does not enrich parameter semantics beyond what the schema already provides. Baseline 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?
States a specific verb (List) and resource (verification history) with a clear account scope. The purpose is unambiguous and readable at a glance, but it does not explicitly differentiate from the closely related sibling get_verification_stats — the distinction between 'history' and 'stats' is left to inference.
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?
No guidance on when to use this tool versus alternatives. With siblings like get_verification_stats and verify_single_email, the agent gets no help choosing between a chronological history list and aggregated statistics, and no exclusions or prerequisites are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_verification_statsC
Get aggregated verification statistics for your BillionVerify account
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | The reporting period to query | 30d |
| api_key | No | BillionVerify API key (optional if BILLIONVERIFY_API_KEY env is set) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description carries the full burden of behavioral disclosure. While 'Get' implies a read-only operation, nothing is said about API credit consumption, rate limits, authentication requirements beyond the api_key param, or the structure of the returned statistics. This is a significant gap for a retrieval tool.
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 a single, efficiently worded sentence with no redundancy, and the core action is front-loaded. It earns points for brevity, though it sacrifices necessary detail—which is a completeness issue, not a conciseness one.
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 no output schema and no annotations, the description should clarify what the aggregated statistics include (e.g., counts, deliverability rates, breakdowns), but it does not. It also fails to explain how this differs from get_verification_history, leaving an agent uncertain about expected results.
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 the baseline is 3. The schema already documents period (enum with default) and api_key (optional with fallback to env). The description adds no additional parameter context, but it doesn't need to because the schema handles it fully.
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 uses a specific verb ('Get') and resource ('aggregated verification statistics') scoped to the user's account. The word 'aggregated' subtly distinguishes it from sibling get_verification_history, though it does not name the alternative explicitly. This is clear enough for an agent to recognize the tool's general purpose.
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?
There is no guidance on when to use this tool versus get_verification_history, get_account_balance, or other siblings. The description provides no context about reporting needs, prerequisites, or exclusions. An agent would have to infer use cases, which is insufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
health_checkA
Check the BillionVerify MCP server health status
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, placing full burden on description. It only states the purpose without disclosing what constitutes health, possible responses (e.g., status codes, message), or behavior under failure. Minimal behavioral context.
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 sentence that is front-loaded with the verb and resource. No unnecessary words; every word earns its place.
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 simplicity (0 params, no output schema), the description is largely sufficient. However, it could mention what the response contains (e.g., status, timestamp) for better completeness.
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 tool has 0 parameters and schema description coverage is 100%. Baseline for 0 params is 4. The description adds no parameter-specific info but none is needed.
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 states the action ('check') and the resource ('BillionVerify MCP server health status'). It distinguishes this tool from all siblings which perform other operations like webhook management or email verification.
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 implies usage for verifying server availability but provides no explicit guidance on when to use (e.g., before other calls) or when not. No alternatives mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_webhooksB
List all webhooks for your BillionVerify account
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | No | BillionVerify API key (optional if BILLIONVERIFY_API_KEY env is set) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as rate limits, authentication requirements beyond 'account', or whether the list is paginated. The tool is read-only, but the description does not explicitly state this.
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 a single, concise sentence with no unnecessary words. It efficiently conveys the tool's purpose.
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 optional parameter, no output schema), the description is fairly complete. It could be improved by mentioning that it returns all webhooks (if no pagination) or the response format, but overall it suffices.
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 coverage is 100% with one parameter (api_key) described in the schema. The description adds no additional meaning beyond what the schema provides, so a baseline score 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 clearly states 'List all webhooks for your BillionVerify account', using a specific verb (list) and resource (webhooks). It distinguishes itself from sibling tools like create_webhook and delete_webhook.
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?
No guidance on when to use this tool versus alternatives. It does not specify that it retrieves all webhooks with no filtering capabilities, nor does it mention any prerequisites or alternatives like create_webhook.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_batch_emailsC
Verify multiple email addresses (up to 50)
| Name | Required | Description | Default |
|---|---|---|---|
| emails | Yes | List of email addresses to verify (max 50) | |
| api_key | No | BillionVerify API key (optional if BILLIONVERIFY_API_KEY env is set) | |
| check_smtp | No | Perform SMTP verification |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not explain what 'verify' entails (e.g., format only, domain, SMTP), nor does it mention costs, rate limits, or error behavior.
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 a single sentence with no wasted words, efficiently conveying the core function and batch limit.
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?
Despite low complexity (3 parameters), the description lacks information about output format, verification depth, and error handling, making it incomplete for effective use.
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 baseline is 3. The description adds no extra meaning beyond the schema's parameter descriptions.
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 states it verifies multiple email addresses and includes a batch size limit of 50. However, it does not differentiate from its sibling tool 'verify_single_email'.
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?
No guidance on when to use batch vs single verification, or any prerequisites or limitations beyond the batch size.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_single_emailB
Verify a single email address
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | The email address to verify | ||
| api_key | No | BillionVerify API key (optional if BILLIONVERIFY_API_KEY env is set) | |
| check_smtp | No | Perform SMTP verification | |
| force_refresh | No | Bypass cache and force fresh verification |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description lacks behavioral details such as network calls, caching, rate limits, or what verification entails (e.g., SMTP check hinted in schema but not explained).
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?
Single sentence, no wasted words. Could benefit from slightly more detail but remains efficient.
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?
No output schema, no annotations, and description omits return format, error handling, or async behavior. Incomplete for a tool with 4 parameters.
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 baseline 3. Description adds no extra parameter meaning beyond 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?
Description clearly states it verifies a single email address, distinguishing it from sibling verify_batch_emails. Specific verb and resource.
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?
No guidance on when to use this tool vs alternatives like verify_batch_emails. Does not mention prerequisites or context.
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.
2 tool updates
v1.1.0- Added
get_verification_history - Added
get_verification_stats
9 tool updates
v1.0.0- First observed
create_webhook - First observed
delete_webhook - First observed
get_account_balance - First observed
get_download_url - First observed
get_task_status - First observed
health_check - First observed
list_webhooks - First observed
verify_batch_emails - First observed
verify_single_email
TDQS
Scored across 11 tools
Each tool targets a distinct action and resource: health, webhook CRUD, single vs batch verification, history vs stats, task status vs download URL, and account balance. The only close pair is single vs batch, but the descriptions clearly differentiate by count.
All tool names follow a consistent verb_noun snake_case pattern (health_check, create_webhook, verify_single_email, get_task_status). The verbs are predictable and the nouns are clear, with no style mixing.
11 tools is well within the ideal 3-15 range for a focused email verification service. Each tool has a clear role and none feel redundant or excessive.
The tool surface covers the main workflows: single/batch verification, history/stats, account balance, and webhook management. However, the presence of get_task_status and get_download_url implies file-based verification, yet there is no tool to initiate such a job, leaving a minor gap.
Maintenance
Related MCP Connectors
Email finder + verifier for AI agents: find work emails by name and company, check deliverability.
Email verification for AI agents — verify, clean & validate emails; self-onboard + crypto pay
Verified, pay-per-use API tools for AI agents through one authenticated connection.
Verify email deliverability & find business emails (single or bulk) via the Verifox API.
Related MCP Servers
AlicenseAqualityDmaintenanceEnables AI agents to send emails and manage sending domains, templates, analytics, and content checks through the SendByte platform using the Model Context Protocol.1113 npmMIT
Tratto MCP Serverofficial
FlicenseAqualityFmaintenanceLets AI tools send transactional emails, check status, and manage contacts through the Model Context Protocol.2-- AlicenseAqualityCmaintenanceEnables AI assistants to verify email deliverability and find business emails via the Verifox API, supporting single and bulk operations.644 npmMIT
- AlicenseAqualityDmaintenanceEnables AI agents to verify email addresses, clean lists, run bulk verification jobs, and manage a Verifly account through natural language, without writing HTTP calls.155 npmMIT