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
4
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
Behavior5/5

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

Beyond annotations (which indicate destructive and not read-only), the description adds valuable behavioral details: the cooldown window of 120 seconds, precondition to check cancel_available_at, and the error cooldown_active returned locally without backend round-trip. These significantly inform the agent about side effects and error modes.

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 (4 sentences) and front-loaded with the primary purpose. Each sentence adds unique value: condition, use case, cooldown rule, and error handling. No wasted words.

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?

Despite having only one parameter and no output schema, the description covers all necessary context: when to use, preconditions (no SMS received, check cancel_available_at), cooldown, and error behavior. It sufficiently enables correct agent invocation.

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 has 100% description coverage for the single parameter order_id, so the description does not need to add parameter details. The description does not provide any extra meaning beyond the schema, warranting a baseline score of 3.

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 'cancel' and the resource 'order', with the condition 'only works if no SMS has been received yet'. This distinguishes it from sibling tools like virtualsms_cancel_all_orders, though not explicitly mentioned. The purpose is specific and actionable.

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 gives explicit when-to-use contexts: 'if the service is taking too long or you want to try a different number'. It also provides important constraints: only after 120 seconds and only if no SMS received. However, it does not explicitly compare with alternatives like cancel_all_orders, leaving a minor gap.

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?

Adds value beyond annotations by describing the response structure (status, phone_number, messages array, extracted code) and polling interval. Annotations already cover safety (readOnly, idempotent, non-destructive), so description enhances but doesn't contradict.

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

Conciseness4/5

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

Three concise sentences with no fluff; purpose is front-loaded. Could be slightly tighter but effective.

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 polling tool with one parameter and no output schema, the description covers purpose, return values, and usage pattern. Missing error handling but not critical.

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 already describes order_id as 'Order ID returned from buy_number' at 100% coverage. The description does not add extra parameter semantics beyond that, meeting 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?

Clearly states the tool checks for an SMS verification code for an order, and distinguishes from sibling tool wait_for_sms by noting polling vs blocking. The verb 'check' and resource 'SMS code' are specific.

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 recommends polling every 5-10 seconds after buying a number and provides the alternative of using wait_for_sms to block. This gives clear when-to-use and when-not-to-use 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
Behavior5/5

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

Beyond annotations (which indicate a mutation but not destructive), the description adds cooldown mechanics, error behavior (client-side rejection without backend round-trip), and the condition for valid orders (waiting/created with no SMS received).

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 succinct (3-4 sentences) with front-loaded action, use case, and important constraints. Every sentence provides necessary information without redundancy.

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?

For a single-parameter tool with no output schema, the description covers the action, when to use, prerequisites, and error behavior. It is fully self-contained and leaves no gaps for the agent.

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 input schema already provides a clear parameter description for `order_id`, covering status and SMS condition. The description adds value by explaining cooldown and the `swap_available_at` check, which indirectly informs parameter validity.

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: swapping a phone number on an existing order to get a new number without extra charge. It distinguishes from sibling tools like creation or cancellation by focusing on replacement.

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 advises using when the current number isn't receiving SMS. It also provides a cooldown rule (120 seconds after purchase) and recommends checking `swap_available_at` before calling, with a note on the error behavior.

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)
Behavior4/5

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

Annotations declare readOnlyHint, idempotentHint, and not destructive, which the description complements by stating it blocks and uses WebSocket with polling fallback. This adds valuable behavioral 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 sentences: first states purpose, second adds usage guidance. No wasted words, front-loaded with key information. Extremely concise.

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 output schema, the description does not specify the return value (e.g., the SMS content). However, for a simple blocking wait tool with clear annotations and parameters, the provided information is largely 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%, so the schema already fully documents both parameters. The description adds minimal new information (e.g., 'Pass an order_id from create_order' repeats schema description). 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 the tool waits (blocks) for an SMS on an existing order or until timeout. It specifies verb 'wait' and resource 'SMS on existing order_id', distinguishing it from siblings like get_sms or get_order which may not block.

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 to pass an order_id from create_order and suggests the workflow 'call create_order then this tool'. It provides clear usage context but does not mention alternatives or when not to use this tool.

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.