Skip to main content
Glama

Server Details

Real SIM phone numbers for AI agents. 145+ countries, 2500+ services. #1 on ChatGPT and Perplexity.

Status
Healthy
Last Tested
Transport
Streamable HTTP
URL
Repository
virtualsms-io/mcp-server
GitHub Stars
1
Server Listing
VirtualSMS MCP Server

Glama MCP Gateway

Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.

MCP client
Glama
MCP server

Full call logging

Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.

Tool access control

Enable or disable individual tools per connector, so you decide what your agents can and cannot do.

Managed credentials

Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.

Usage analytics

See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.

100% free. Your data is private.
Tool DescriptionsA

Average 4.2/5 across 18 of 18 tools scored. Lowest: 3.5/5.

Server CoherenceA
Disambiguation5/5

Every tool has a clearly distinct purpose, such as canceling all active orders vs. canceling a single order, or checking SMS vs. automatically waiting for it. No ambiguity.

Naming Consistency4/5

All tools start with 'virtualsms_' and mostly follow a verb_noun pattern (e.g., cancel_order, get_balance). The exception is 'order_history', which is noun_noun, but overall consistency is high.

Tool Count5/5

18 tools is well-scoped for an SMS verification server, covering order management, account details, discovery, and advanced features like automatic waiting and number swapping.

Completeness5/5

The tool set covers the full lifecycle: create, cancel, swap, retrieve SMS, plus account management, stats, and service/country discovery. No obvious gaps.

Available Tools

18 tools
virtualsms_cancel_all_ordersCancel All Active OrdersA
DestructiveIdempotent
Inspect

Bulk-cancel every currently active order in your account. Returns the number of orders cancelled plus any failures. Useful for quick cleanup after a batch run or test session.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior4/5

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

Annotations already indicate destructiveHint=true and idempotentHint=true. The description adds value by disclosing the return value (number cancelled plus failures) and the scope (every active order). No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the action, and every sentence provides essential information. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters and no output schema, the description adequately covers purpose, return value, and usage context. It could include a caution about irreversibility since destructiveHint=true, but the annotation already signals that.

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?

The tool has zero parameters, so the input schema is complete (100% coverage). The description does not need to add parameter semantics, but it usefully describes what the tool returns. Baseline for zero parameters is 4, which is appropriate here.

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?

The description explicitly states 'Bulk-cancel every currently active order in your account', specifying the action (cancel), resource (orders), and scope (all active). This clearly distinguishes it from sibling tools like virtualsms_cancel_order which targets a single order.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description says 'Useful for quick cleanup after a batch run or test session', providing a usage context. However, it does not explicitly state when not to use it or compare to alternatives like virtualsms_cancel_order, leaving some ambiguity about when to prefer this bulk operation over individual cancellation.

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

virtualsms_cancel_orderCancel OrderA
DestructiveIdempotent
Inspect

Cancel an order and request a refund. Only works if no SMS has been received yet. Use this if the service is taking too long or you want to try a different number. Cooldown: cancel is only available 120 seconds after purchase. Check cancel_available_at on the order before calling. Calling earlier returns a cooldown_active error from this MCP server (no backend round-trip).

ParametersJSON Schema
NameRequiredDescriptionDefault
order_idYesOrder ID to cancel
Behavior4/5

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

Annotations indicate destructiveHint=true; description confirms destructive action and adds the constraint about SMS receipt. No contradiction. Does not detail refund timing or side effects, but adds useful context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two efficient sentences covering purpose, condition, and use case without any fluff. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter and no output schema, the description is sufficient. It covers purpose, condition, and usage guidance. Could mention return values or error behavior, but not essential.

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?

Single parameter 'order_id' is fully described in schema; description adds no additional meaning. Schema coverage is 100%, so baseline of 3 is appropriate.

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?

Clearly states the verb 'cancel', the resource 'order', and adds the condition 'only works if no SMS has been received yet'. Distinguishes from siblings like cancel_all_orders and swap_number.

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?

Provides explicit usage scenarios ('if service is taking too long or you want to try a different number') and implies when not to use (after SMS received). Could explicitly mention alternative tools but is clear enough.

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

virtualsms_create_orderBuy Virtual NumberAInspect

Purchase a virtual phone number for SMS verification. Returns order_id and phone_number. Use check_sms to poll for the verification code, or use wait_for_code to do it automatically.

ParametersJSON Schema
NameRequiredDescriptionDefault
countryYesCountry ISO code (e.g. "US", "GB", "RU")
serviceYesService code (e.g. "telegram", "whatsapp", "google")
Behavior3/5

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

The description adds that the tool returns order_id and phone_number and suggests polling. Annotations already indicate it is a mutation (readOnlyHint=false) and not destructive. The description does not elaborate on potential side effects like cost, availability, or error conditions, leaving some behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long, front-loading the primary action and purpose. Every word is necessary, with no redundancy or irrelevant details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity (2 required params, no output schema), the description covers the essential: what it does, what it returns, and how to proceed. It could mention prerequisites like account balance or that the number is for SMS only, but overall it is sufficient for an agent to invoke correctly.

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?

The input schema has 100% coverage with clear descriptions. The description does not add additional meaning to the parameters beyond stating the overall purpose. Baseline is 3 for high schema coverage; no extra value contributed.

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?

The description clearly states the tool's purpose: 'Purchase a virtual phone number for SMS verification.' It specifies what the tool does (buy a number) and what it returns (order_id and phone_number), distinguishing it from sibling tools like cancel, swap, or list operations.

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?

The description provides clear guidance on how to use the result by referencing follow-up tools (check_sms and wait_for_code) for verification. However, it does not explicitly state when to avoid this tool or compare it to alternatives like swap_number or find_cheapest, which would improve decision-making.

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

virtualsms_find_cheapestFind Cheapest CountriesA
Read-onlyIdempotent
Inspect

Find the cheapest countries for a given service, sorted by price. Returns available countries with prices and stock levels so you can pick the best deal.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of cheapest options to return (default: 5)
serviceYesService code (e.g. "telegram", "whatsapp", "google")
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and non-destructive. Description adds that results are sorted by price and include stock levels, which are behavioral details beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two succinct sentences, no redundant information, front-loaded with purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema; description mentions returns have prices and stock levels but lacks details on format. Given low complexity, still useful but could specify field names.

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 coverage is 100% with descriptions for both parameters. Description adds no additional meaning beyond schema; it reiterates that service is the input.

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?

Description clearly states 'Find the cheapest countries for a given service, sorted by price', specifying verb ('find'), resource ('countries'), and sorting criterion. Differentiates from siblings like virtualsms_get_price which gets price for a specific country.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description implies usage context (finding cheapest deals) but does not explicitly state when to use vs alternatives (e.g., use virtualsms_get_price for a specific country's price). No exclusion criteria provided.

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

virtualsms_get_balanceGet Account BalanceA
Read-onlyIdempotent
Inspect

Check your VirtualSMS account balance in USD. Requires VIRTUALSMS_API_KEY to be set.

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyNoDisplay balance in specific currency (default: USD)
Behavior4/5

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

Annotations already provide readOnlyHint=true and idempotentHint=true. The description adds that an API key must be set, which is a behavioral requirement beyond annotations. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core function, no redundancy. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with no output schema, the description is adequate but does not explain the response format (e.g., balance amount and currency). Slightly more detail would be beneficial.

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% with one optional 'currency' parameter. The description explains the default behavior ('in USD'), adding context beyond the schema's basic description.

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?

The description clearly states 'Check your VirtualSMS account balance in USD,' specifying the verb (check), resource (account balance), and default currency. It distinguishes from sibling tools like virtualsms_create_order or virtualsms_get_sms.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions 'Requires VIRTUALSMS_API_KEY to be set,' which is a prerequisite. However, it does not explicitly state when to use this tool versus alternatives or provide when-not guidance.

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

virtualsms_get_orderGet Order DetailsA
Read-onlyIdempotent
Inspect

Get the full details of a specific order, including status, phone number, service, country, timestamps, and any received SMS code/text. Use this when you have an order_id and need the latest state beyond what check_sms returns.

ParametersJSON Schema
NameRequiredDescriptionDefault
order_idYesOrder ID to retrieve full details for
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is clear. The description adds that it returns SMS code/text and full details, which is useful beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with purpose, no filler. Every sentence adds 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?

Given 1 parameter, no output schema, and high annotation coverage, the description comprehensively explains what the tool returns and when to use it. It covers all necessary context.

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?

Single parameter order_id is described sufficiently in schema ('Order ID to retrieve full details for'). The description doesn't add extra semantic detail beyond implying it's required, but schema coverage is 100%, meeting the baseline.

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?

The description clearly states it gets full details of a specific order, listing included fields like status, phone number, service, and timestamps. It distinguishes itself from check_sms by noting it provides more than that tool returns.

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?

Explicitly tells when to use: 'Use this when you have an order_id and need the latest state beyond what check_sms returns.' This provides direct guidance on context and alternative.

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

virtualsms_get_priceCheck Service PriceA
Read-onlyIdempotent
Inspect

Check the price and availability for a specific service + country combination. Always check price before buying to confirm availability.

ParametersJSON Schema
NameRequiredDescriptionDefault
countryYesCountry ISO code (e.g. "US", "GB", "RU")
serviceYesService code (e.g. "telegram", "whatsapp", "google")
Behavior3/5

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

Annotations already indicate readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the description needs to add behavioral context. It adds that the tool checks availability, but does not describe response format or edge cases (e.g., service unavailable). The description is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the action. No redundant information; every sentence earns its place. Very concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description tells the agent to use it before buying, which fits the context. However, with no output schema, the agent lacks information about return format (e.g., price value, availability flag). For a simple query tool, this is a notable gap, but the context signals (low complexity) mitigate it somewhat.

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?

The input schema has 100% description coverage for both parameters (ISO code for country, service code for service). The description does not add any additional semantic information beyond what is already in the schema.

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?

The description clearly states the tool checks price and availability for a specific service+country combination, with a precise verb and resource. It implicitly distinguishes from sibling 'virtualsms_find_cheapest' by focusing on a single combination.

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?

The description explicitly advises 'Always check price before buying to confirm availability,' providing clear context for when to use this tool relative to 'virtualsms_create_order'.

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

virtualsms_get_profileGet Account ProfileA
Read-onlyIdempotent
Inspect

Full account profile: email, Telegram link status, current balance, lifetime spend, total orders, active API keys, and account creation date.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior4/5

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

Annotations already provide readOnlyHint, openWorldHint, idempotentHint=true, so the agent knows it's a safe read. The description adds transparency by detailing the exact fields returned, which helps the agent understand the response structure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that immediately lists the key returned fields. No wasted words; it is front-loaded and efficient.

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?

With no output schema, the description fully describes the return value by listing all relevant fields. It is complete enough for an agent to understand what the tool provides without additional context.

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?

There are no parameters, and the description implies no input needed. According to rubric, with 0 params baseline is 4. The description does not add param info but is unnecessary.

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?

The description clearly states the tool returns the full account profile and lists specific fields (email, Telegram link status, balance, etc.), distinguishing it from sibling tools like virtualsms_get_balance which only returns balance.

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?

While not explicitly stating when to use vs alternatives, the description implies this tool is for a comprehensive overview. Given the sibling tools are more specific (e.g., get_balance, get_stats), the description effectively guides the agent to use this when multiple profile fields are needed.

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

virtualsms_get_smsCheck SMS CodeA
Read-onlyIdempotent
Inspect

Check if an SMS verification code has been received for an order. Returns status, phone_number, and (when delivered) messages[] array plus an extracted code. Poll this every 5-10 seconds after buying a number, or use wait_for_sms to block until delivery.

ParametersJSON Schema
NameRequiredDescriptionDefault
order_idYesOrder ID returned from buy_number
Behavior4/5

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

Annotations already indicate readOnly, idempotent, non-destructive behavior. The description adds polling frequency advice but does not cover edge cases like invalid order_id or timeout behavior. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with purpose, followed by guidance. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Missing output schema. The description does not explain return value format, making it incomplete for an agent to interpret results. For a simple check tool, more detail would help.

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 coverage is 100% with one parameter 'order_id' described as 'Order ID returned from buy_number'. The description mentions 'after buying a number' but adds minimal value beyond the schema.

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?

The description clearly states the tool checks if an SMS verification code has been received for an order, with specific verb 'check' and resource 'SMS code for an order'. It distinguishes from sibling tool 'wait_for_code' which handles automatic polling.

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?

The description explicitly says to poll every 5-10 seconds after buying a number and recommends using wait_for_code for automatic polling, providing clear when-to-use and when-not guidance.

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

virtualsms_get_statsGet Account StatsA
Read-onlyIdempotent
Inspect

Account usage stats aggregated from your order history: total orders, success rate, total spend, top services/countries, and status breakdown over a configurable lookback window.

ParametersJSON Schema
NameRequiredDescriptionDefault
since_daysNoWindow in days for activity stats (default: 30)
Behavior4/5

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

Annotations already declare readOnlyHint and idempotentHint, and the description adds useful behavioral context by detailing what stats are returned. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence that is informative, front-loaded with the key output, and contains no superfluous words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite no output schema, the description lists the types of stats returned (total orders, success rate, etc.), providing sufficient context for a simple read-only tool with one optional parameter.

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 coverage is 100% and the description mentions 'configurable lookback window', aligning with the schema's 'since_days' parameter. No additional semantic value beyond schema.

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?

The description clearly states the tool provides 'account usage stats' and lists specific aggregated data (total orders, success rate, spend, etc.), distinguishing it from sibling tools like get_balance or get_transactions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for obtaining aggregated stats over a configurable lookback window, but does not explicitly state when to use this tool versus alternatives or when not to use it.

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

virtualsms_get_transactionsGet Transaction HistoryA
Read-onlyIdempotent
Inspect

Transaction history for the account with optional filters for type, date range, and pagination. Types: "deposit", "purchase", "refund", "admin_credit".

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoUpper bound on created_at — RFC3339 or YYYY-MM-DD
fromNoLower bound on created_at — RFC3339 or YYYY-MM-DD
typeNoFilter by type: "deposit", "purchase", "refund", "admin_credit"
limitNoMax transactions (1-200, default: 50)
offsetNoPagination offset (default: 0)
Behavior2/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description adds little extra behavioral context beyond listing filter types already in the schema, without disclosing response format or pagination behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the main purpose followed by filter types, with no redundant words. Efficient and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite no output schema, the description does not clarify the return format (e.g., array of objects with fields like amount, type, timestamp) or default order, leaving the agent without a complete picture of the response.

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 all parameters are already documented. The description reiterates type and date range filters without adding new semantic meaning beyond the schema.

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?

The title and description clearly identify the verb 'get' and the resource 'transaction history', and the optional filters distinguish it from sibling tools like virtualsms_get_balance or virtualsms_get_order.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for viewing financial transactions with filters but does not explicitly state when to use this tool versus alternatives (e.g., virtualsms_list_orders) 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.

virtualsms_list_countriesList Available CountriesA
Read-onlyIdempotent
Inspect

Get all available countries for SMS verification. Use this to discover valid country codes before buying a number.

ParametersJSON Schema
NameRequiredDescriptionDefault
serviceNoFilter countries available for a specific service (optional)
Behavior3/5

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

Annotations already indicate readOnlyHint, idempotentHint, and nondestructive nature. The description adds only that it 'gets' countries, which is consistent. No additional behavioral traits are disclosed (e.g., no mention of return format or pagination). With strong annotations, the description adds minimal value beyond confirming purpose.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with purpose. Every word serves a function. No redundancy or fluff. Excellent structure for quick agent comprehension.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers purpose and usage timing but does not describe the output format (e.g., list of country codes, names, or structure). Given no output schema, this omission reduces completeness for an agent to parse results. It is adequate but not fully self-sufficient.

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 coverage is 100%; the parameter 'service' is already described in the schema. The description's mention of 'discover valid country codes' adds context for the overall tool but does not specifically enhance meaning of the parameter beyond the schema. Thus, at baseline 3, it adds limited extra semantics.

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?

The description clearly states the verb 'Get' and the resource 'all available countries', specifying it's for SMS verification and discovering country codes. This distinguishes it from sibling list tools like list_services, which focus on services. The purpose is unambiguous.

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?

The description explicitly advises when to use this tool: 'Use this to discover valid country codes before buying a number.' This provides clear context and timing. While it doesn't mention when not to use it, the tool's simplicity and optional parameter make exclusions unnecessary. No alternative tools are mentioned, but the context is sufficient for an agent.

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

virtualsms_list_ordersList Active OrdersA
Read-onlyIdempotent
Inspect

List your active orders. Essential for crash recovery — if your session was interrupted, use this to find pending orders and their phone numbers, then use check_sms to retrieve codes.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNoOptional status filter: "pending", "sms_received", "cancelled", "completed"
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive nature. The description adds behavioral context by specifying the crash recovery use case and that the tool retrieves pending orders with phone numbers, enhancing transparency 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with two sentences: the first front-loads the core purpose, the second adds critical usage context. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple input schema (one optional parameter, no output schema) and thorough annotations, the description is largely complete. It covers purpose and a key use case. However, it does not describe the response fields beyond hinting at phone numbers.

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 coverage is 100% for the single parameter 'status', which is fully described in the schema. The description adds no additional parameter information, so baseline 3 is appropriate.

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?

The description clearly states 'List your active orders', using specific verb and resource. It distinguishes from sibling tools like virtualsms_get_order (single order) and virtualsms_order_history (historical list) by focusing on active orders and crash recovery.

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?

The description provides explicit usage context: 'Essential for crash recovery — if your session was interrupted, use this to find pending orders and their phone numbers, then use check_sms to retrieve codes.' It tells when to use the tool and suggests a follow-up tool, though it lacks explicit when-not guidance.

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

virtualsms_list_servicesList Available ServicesA
Read-onlyIdempotent
Inspect

Get all available SMS verification services (Telegram, WhatsApp, Google, etc.). Use this to discover valid service codes before buying a number.

ParametersJSON Schema
NameRequiredDescriptionDefault
searchNoFilter services by name (optional)
Behavior3/5

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

Annotations already indicate readOnlyHint=true, destructiveHint=false, idempotentHint=true, so the safety profile is fully covered. The description adds no behavioral details beyond the annotated traits, but it does not contradict them. With annotations carrying the burden, a 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences (19 words) with no wasted words. It front-loads the action and provides immediate value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple listing tool with one optional filter and no output schema, the description is adequate. It could optionally describe the output structure (e.g., list of service codes and names), but the current content suffices for basic agent use.

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?

The schema covers the single optional 'search' parameter with a description. The description does not add extra meaning beyond the schema, but schema coverage is 100%, so baseline 3 is suitable.

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?

The description clearly states the tool lists all available SMS verification services with concrete examples (Telegram, WhatsApp, Google), and distinguishes its purpose from siblings like virtualsms_search_services by focusing on discovering service codes before purchasing.

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?

The description explicitly says 'Use this to discover valid service codes before buying a number,' giving a clear use-case context. It does not explicitly mention when not to use or compare with alternative tools, but the context is sufficient for typical usage scenarios.

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

virtualsms_order_historyOrder HistoryA
Read-onlyIdempotent
Inspect

List past orders with optional filters for status, service, country, and a lookback window in days. Returns up to 50 orders (server cap) ordered most-recent-first.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax orders to return (default: 20, server cap: 50)
statusNoOptional status filter: "completed", "cancelled", "expired", "sms_received", "waiting"
countryNoOptional country ISO code filter (e.g. "US", "GB")
serviceNoOptional service code filter (e.g. "telegram", "whatsapp")
since_daysNoOnly include orders from the last N days
Behavior4/5

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

Annotations already indicate read-only, idempotent, and non-destructive traits. The description adds value by disclosing the server cap of 50 orders and ordering (most-recent-first), which are behavioral traits beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that front-loads the purpose. Every word adds value, with no waste.

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?

Given the rich annotations (readOnlyHint, idempotentHint, openWorldHint) and complete schema (100% coverage), the description adequately covers return behavior (ordered, capped at 50). No output schema exists, but the description compensates sufficiently.

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 parameters are documented in the schema. The description adds context by summarizing the filters as 'status, service, country, and a lookback window in days,' which reinforces their purpose without being redundant.

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?

The description clearly states 'List past orders' with optional filters, conveying the specific verb and resource. It distinguishes from siblings like virtualsms_list_orders by specifying 'past orders' and filters.

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?

The description provides clear context on when to use the tool: to list past orders with optional filters. It does not explicitly exclude alternatives (e.g., virtualsms_list_orders for different scopes), but the context is sufficient for most cases.

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

virtualsms_search_servicesSearch Service by NameA
Read-onlyIdempotent
Inspect

Find the right service code using natural language. Don't know the exact code? Just search "uber", "binance", "steam" etc. Returns matching services with similarity scores.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesNatural language search query (e.g. "uber", "whatsapp", "binance")
Behavior4/5

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

Annotations already show readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false. Description adds that it returns 'matching services with similarity scores', which hints at fuzzy matching behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with purpose and usage advice, no filler content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter tool with no output schema, the description adequately covers purpose, usage, and return type (matching services with scores). Could mention if there is a maximum result count or pagination.

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 coverage is 100% and already describes the parameter as 'Natural language search query'. Description adds no new semantics beyond restating the same concept.

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?

Clear verb ('search') and resource ('service code'), with natural language example. Distinguishes from sibling 'list_services' which does not use fuzzy matching.

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?

Explicitly states when to use ('don't know the exact code'), but does not mention when to use alternatives like 'list_services' for browsing all services.

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

virtualsms_swap_numberSwap Phone NumberAInspect

Swap a phone number on an existing order. Gets a new number for the same service and country without additional charge. Use when the current number isn't receiving SMS. Cooldown: swap is only available 120 seconds after purchase. Check swap_available_at on the order before calling. Calling earlier returns a cooldown_active error from this MCP server (no backend round-trip).

ParametersJSON Schema
NameRequiredDescriptionDefault
order_idYesOrder ID to swap — must be in waiting/created status with no SMS received
Behavior4/5

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

Annotations already indicate not read-only and not destructive. The description adds transparency about no additional charge and the effect of swapping numbers. However, it does not disclose side effects like the fate of the old number.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with no wasted words. The action and use case are immediately clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description lacks information about what the tool returns (no output schema). For a simple tool, this is a minor gap but still leaves agents uncertain about the response. Minimal viable for the given complexity.

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?

The input schema covers the single parameter with a detailed description. The tool description adds no further parameter information, so it meets the baseline for full schema coverage.

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?

The description clearly states the action (swap), the resource (phone number on existing order), and key details (same service/country, no additional charge). It uniquely identifies this tool among siblings.

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?

The description provides a clear use case ('Use when the current number isn't receiving SMS'), but does not explicitly mention when not to use or list alternatives. It implicitly guides usage.

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

virtualsms_wait_for_smsWait for SMS on Existing OrderA
Read-onlyIdempotent
Inspect

Wait (block) until the SMS arrives on an existing order_id, or until timeout. Uses real-time WebSocket delivery with automatic polling fallback. Pass an order_id from create_order. To buy AND wait in one step, call create_order then this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
order_idYesExisting order ID returned from create_order
timeout_secondsNoHow long to wait for SMS in seconds (default: 60, min: 5, max: 600)
Behavior5/5

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

Describes real-time WebSocket delivery with polling fallback and mentions return behavior (order_id always) and recovery option, adding value beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise sentences, each adding value. Front-loaded with 'RECOMMENDED' and clear purpose. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers key behaviors and recovery mechanism. Lacks discussion of prerequisites like balance, but annotations provide openWorldHint.

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 coverage is 100% so parameters are well-documented. Description does not add new semantic information beyond the schema, earning baseline score.

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?

The description clearly states it is a one-step tool that buys a number and waits for SMS code, distinguishing it from siblings like virtualsms_create_order and virtualsms_get_sms.

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?

The description explicitly recommends this tool and explains recovery via check_sms on timeout. However, it does not specify when to avoid using it or compare directly to alternatives.

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

Discussions

No comments yet. Be the first to start the discussion!

Try in Browser

Your Connectors

Sign in to create a connector for this server.