smsverbot-mcp
Server Details
SMS verification for AI agents: buy a number, get the code, cancel with refund.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- MassimoSun/smsverbot-mcp
- GitHub Stars
- 0
TDQS
Scored across 9 tools
Most tools target clearly distinct resources or actions: buy versus price, country versus service, order history versus waiting for a code. The only real overlap is get_balance and whoami, since both return balance; whoami adds API key verification, but an agent needing only the balance could still misselect.
Seven of nine names follow a clear verb_noun pattern such as buy_number, cancel_order, get_balance, list_services, and wait_for_code. The deviations are order_history (noun phrase) and whoami (single word), which are minor but keep it from perfect consistency.
Nine tools is well within the ideal 3-15 range and each maps to a meaningful step in the SMS activation lifecycle: discovery, purchase, waiting, cancellation, history, and account checks. The set feels scoped, not padded.
The surface covers discovery, purchasing, code retrieval, cancellation, history, and balance/API verification. Minor gaps exist, such as no dedicated get_order or explicit order-status tool beyond order_history, and no release-number operation beyond cancel_order.
Available Tools
9 toolsbuy_numberCInspect
Buy a phone number and debit the prepaid balance.
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | No | ||
| country | Yes | ||
| service | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it does disclose the key trait that this is a paid operation debiting the prepaid balance. However, it says nothing about whether the purchase is reversible, what happens if balance is insufficient, whether api_key authentication is required, or that a code must later be retrieved via wait_for_code.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence with zero filler and the core action front-loaded; the cost implication is appended efficiently. It is arguably under-sized for a paid mutation, but nothing in it is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, but the definition is still thin for a financial transaction tool: no annotations, no parameter documentation, no guidance on prerequisites or error conditions. An agent has enough to attempt the call but not enough to use it safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description adds no parameter meaning whatsoever for the three parameters. It does not indicate that country/service are required selectors that should come from list_countries/list_services, nor what format api_key takes, leaving the agent to guess at accepted values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ("Buy a phone number") and adds the financial effect ("debit the prepaid balance"), so the agent immediately knows what the call does. It does not reference any sibling or state how it relates to cancel_order/get_price, but no sibling overlaps its function, so ambiguity is low.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no mention of the natural workflow implied by the siblings (list_countries, list_services, get_price before buying; cancel_order after). The agent must infer that this is the terminal step of a purchase flow entirely on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_orderBInspect
Cancel an order and refund the balance exactly once.
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | No | ||
| order_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses that the operation refunds the balance and does so 'exactly once', hinting at idempotency, but it omits permissions, irreversibility, error states, and what happens if the order is already cancelled or otherwise not eligible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence with no wasted words. The action and its important exactly-once refund guarantee are front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a high-stakes financial mutation with no annotations and 0% schema description coverage, the description is too thin. An output schema exists so return details are not needed, but authentication, eligibility conditions, and failure behavior remain unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for undocumented parameters. It implies an order identifier through the word 'order', but says nothing about the required 'order_id' format or the optional 'api_key' parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Cancel an order') plus its side effect ('refund the balance exactly once'). It clearly distinguishes itself from the sibling tools, which are all read or purchase operations, but it does not name or contrast any specific sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives, no prerequisites, and no exclusions. The description implies usage only by its name and action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_balanceCInspect
Return the current prepaid balance.
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It does not mention that this is a read-only operation, whether authentication is required, or any rate limits, leaving the agent with only the name and purpose.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. However, its extreme brevity contributes to gaps in other dimensions, though structurally it is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations, undocumented parameter, and no usage guidance, the description is too sparse. An output schema exists so return values need not be described, but the agent still lacks critical context for when and how to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 0% for the single api_key parameter, so the description must compensate but adds no information about the parameter's meaning, whether it is required, or how it is used. The agent receives no guidance beyond the schema's bare name and default.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (return) and resource (current prepaid balance), making the tool's function clear. It does not explicitly differentiate from siblings like whoami or get_price, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as whoami or order_history. The description only states what it does, leaving context entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_priceBInspect
Get the retail price for a service and country without buying.
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | No | ||
| country | Yes | ||
| service | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'Without buying' does signal a non-mutating read, which is helpful, but the description says nothing about the api_key requirement, authentication, rate limits, or the currency/format the price is returned in.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the scope constraint front-loaded and no filler. It is efficient, though one more clause on identifier format would have earned its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explanation is not required. Still, for a tool needing an API key plus service/country identifiers drawn from sibling listing tools, the description leaves the agent without prerequisite or identifier-format guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 3 parameters. The description names the two required inputs (service, country) but adds no format or identifier syntax, and the api_key parameter is entirely unexplained in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (retail price) qualified by scope (for a service and country). The phrase 'without buying' implicitly separates it from the buy_number sibling, though it doesn't name that sibling directly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The trailing 'without buying' implies this is the pre-purchase price-check step versus buy_number, which is useful implied routing. However, there is no explicit when-to-use statement, no prerequisite callouts (e.g., resolve service/country first via list_services/list_countries), and no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_countriesCInspect
List countries available for SMS activation.
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It implies a read-only listing but says nothing about authentication requirements (an api_key parameter exists with an empty default and is never explained), rate limits, result scope, or ordering — significant gaps for a tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence, front-loaded with the verb and resource, with no filler. It is efficient, though arguably terse to the point of under-specification rather than optimally sized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the tool is a straightforward list operation. Still, with no annotations and an undocumented api_key parameter, the definition covers only the minimum an agent needs; it lacks any auth or usage context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single api_key parameter, and the description never mentions it. Whether the key is required, optional (default is an empty string), or how it is supplied is left entirely undocumented in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('List') and resource ('countries') with a scoping qualifier ('available for SMS activation'), which is clearer than a bare 'list countries'. It does not, however, differentiate itself from sibling listing tools such as list_services or get_price, leaving the agent to infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance, no prerequisites, and no mention of alternatives. Usage is only implied by the phrase 'for SMS activation' — an agent could guess this precedes buy_number or get_price, but nothing states that relationship or any when-not-to-use condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_servicesCInspect
List services available for SMS activation in a country.
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | No | ||
| country | No | indonesia |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It implies a read-only listing, but says nothing about the required API key, rate limits, or pagination behavior for what is presumably a large catalog.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single clean sentence with the purpose front-loaded and no wasted words. There is simply little content to structure, so it cannot reach the top of the range.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. However, with no annotations, 0% parameter coverage, and no usage context, the description is too thin for an agent to invoke this confidently, especially regarding the unexplained api_key.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so both parameters are undocumented structurally. The description only hints at 'country' and adds no format detail (e.g. the lowercase 'indonesia' default), and the api_key parameter is never mentioned.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (List) and resource (services available for SMS activation), scoped by country. An agent can distinguish it from siblings like list_countries and get_price, though it doesn't explicitly name those alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, prerequisites, or alternatives are given. It doesn't say whether this should be called before buy_number or how it relates to get_price, leaving the workflow entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
order_historyCInspect
Return recent orders for the API key.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| api_key | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does not disclose pagination, ordering, the time window covered by 'recent', rate limits, or what happens when the key has no orders, leaving the behavior largely opaque.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence that is front-loaded and wastes no words. However, the brevity reflects under-specification rather than discipline, so it earns only a middling score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described. Still, for a query tool with zero annotation coverage and zero parameter documentation, the definition omits the time scope, pagination behavior, and auth expectations an agent needs to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and neither parameter is documented. The phrase 'for the API key' loosely maps to the api_key parameter, but 'limit' is never explained and no default or format guidance is added beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Return') and resource ('recent orders') scoped to an API key, so the agent knows what it retrieves. It does not distinguish itself from siblings like get_balance or cancel_order, and 'recent' is left undefined.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of alternatives among the eight sibling tools, and no prerequisites. The agent must infer that this is the tool for retrieving past order data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wait_for_codeCInspect
Wait for an SMS code for an existing order.
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | No | ||
| order_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. For a blocking wait/poll operation it says nothing about timeout behavior, poll duration, whether the call blocks indefinitely, or whether the received code is consumed by the read — all critical traits an agent needs before invoking it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler and the scope constraint placed last for emphasis. It is efficiently written, though arguably too terse given the blocking semantics of the operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. But for a wait-based tool the description omits the behavioral facts that matter most (blocking/timeout behavior), so an agent cannot confidently invoke it or handle the no-code case.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for two parameters. The phrase 'existing order' loosely maps to order_id, but neither the expected order_id format/provenance nor the api_key parameter is explained anywhere. With a 0% coverage schema, the description should compensate and largely does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb ('wait for') and resource ('SMS code') plus a scope qualifier ('for an existing order'), which clearly separates it from siblings like buy_number or order_history. It does not explicitly name a sibling it replaces or contrast with alternatives, but the intent is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'For an existing order' implies the prerequisite that an order must already have been placed, so usage is inferable. However, there is no explicit when-to-use guidance, no statement of what to do if no code arrives, and no alternative tool named for checking order status or history.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
whoamiBInspect
Verify an API key and return its id and balance in rubles.
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose the core behavior (validates the key and returns an id plus ruble balance), but it omits what happens on an invalid key, whether the call requires the key as a parameter versus ambient auth, and any rate-limit or failure behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the action first and the return payload second. Nothing is wasted or buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be spelled out, and the description is adequate for a one-parameter tool. Still missing are the auth/failure semantics and any indication of how this differs from get_balance, which is the main thing an agent needs to route correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single api_key parameter, so the description must compensate. It does signal that the parameter is the API key to verify, but it never clarifies that the field is optional with an empty default, nor any format expectations, leaving real ambiguity for a tool whose whole purpose is key validation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (verify) and resource (API key) plus what is returned (id and balance in rubles), which is concrete and readable. However, it does not differentiate itself from the sibling get_balance, which also returns balance, so an agent must guess which to pick when it only wants a balance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance and no named alternative. The name and purpose imply this is for validating a key, but nothing tells the agent to prefer get_balance for pure balance checks or when this tool is appropriate versus the other sibling calls.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
9 tool updates
- First observed
buy_number - First observed
cancel_order - First observed
get_balance - First observed
get_price - First observed
list_countries - First observed
list_services - First observed
order_history - First observed
wait_for_code - First observed
whoami
Related MCP Connectors
Virtual phone numbers for AI agents — rent numbers in 200+ countries, receive SMS.
Real SIM numbers for AI agents: SMS verification, rentals, proxies, cloud browser, x402 deposits.
Give an AI agent a throwaway email and phone number to test signup/verification flows end to end.
Phone, SMS and email for AI agents. One remote MCP endpoint, OAuth login, zero install.
Related MCP Servers
- AlicenseAqualityDmaintenanceGives AI agents real phone numbers to receive SMS and extract verification codes through tool calls.622 npmMIT
- AlicenseAqualityCmaintenanceVirtual phone number platform for AI agents — rent numbers across 200+ countries, receive SMS, and manage the full activation lifecycle.6226 npm4MIT
- AlicenseAqualityBmaintenanceEnables AI agents to purchase phone numbers and retrieve one-time SMS/OTP verification codes via the CODASMS API, with support for 700+ services and 180+ countries including automatic refunds if no code arrives.719 npmMIT
- AlicenseAqualityCmaintenanceEnables AI clients and assistants to order virtual phone numbers and disposable email addresses, and retrieve verification codes (OTPs) from SMS and email messages for account verification workflows.18MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.