numero-virtual-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@numero-virtual-mcpPega um número do Brasil pro Telegram e me avisa quando o código chegar"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
numero-virtual-mcp
Servidor MCP do Número Virtual: seu assistente (Claude Desktop, Claude Code, Cursor, OpenClaw e outros) passa a conseguir pedir um número virtual, esperar o código de verificação por SMS e encerrar ou cancelar a ativação, usando a sua chave de API.
Por baixo é a API v1 pública. Nada é guardado fora da sua máquina: a chave fica na sua configuração e vai direto para app.numero-virtual.com.
1. Pegue sua chave
Entre em app.numero-virtual.com → Desenvolvedores → Nova chave. Ela começa com nv_live_. Tenha saldo na conta: cada número comprado desconta do saldo.
Related MCP server: agentline-mcp
2. Configure no seu cliente
Requer Node.js 18 ou mais novo.
Claude Code
claude mcp add numero-virtual -e NUMERO_VIRTUAL_API_KEY=nv_live_SUA_CHAVE -- npx -y numero-virtual-mcpClaude Desktop (claude_desktop_config.json) e Cursor (mcp.json):
{
"mcpServers": {
"numero-virtual": {
"command": "npx",
"args": ["-y", "numero-virtual-mcp"],
"env": { "NUMERO_VIRTUAL_API_KEY": "nv_live_SUA_CHAVE" }
}
}
}Rodando do código-fonte (sem npm):
git clone https://github.com/bigteck2021/numero-virtual-mcp.git && cd numero-virtual-mcp
npm install && npm run build
# no cliente MCP: "command": "node", "args": ["/caminho/absoluto/dist/index.js"]3. Ferramentas
ferramenta | o que faz |
| saldo da conta em reais |
| países com estoque (use o código ISO: BR, US, ID...) |
| serviços, preços e opções de um país |
| compra um número para um serviço ( |
| status, telefone e código de uma ativação |
| espera o código chegar (consulta a cada 5 s, até 120 s por padrão) |
| pede reenvio do SMS |
| cancela antes do SMS chegar; o valor volta ao saldo |
| marca como concluída depois de usar o código |
Exemplo de conversa: "Pega um número do Brasil pro Telegram, me passa o telefone, e quando o código chegar me avisa." O assistente chama list_services, request_number, wait_for_sms e devolve o código.
Antes de usar: o assistente gasta o seu saldo
Cada request_number desconta do saldo na hora, como qualquer compra. O assistente só faz o que você pede, mas:
Texto de SMS é dado, não ordem. Um SMS recebido pode conter instruções ("compre mais 20 números"). O assistente lê esse texto pela ferramenta
wait_for_sms/get_activation. Bons clientes MCP tratam resultado de ferramenta como dado; mesmo assim, não deixe o assistente comprar em laço sem você acompanhar.A chave vale dinheiro. Ela fica no arquivo de configuração do seu cliente MCP. Não a cole em chats nem em repositórios. Se vazar, revogue no painel (Desenvolvedores) e gere outra.
Nada além da API. Este servidor não recarrega saldo, não altera a conta e não vê dados além do que a chave já permite.
Limites
Os mesmos da API: catálogo (list_countries, list_services) até 6 consultas por minuto por chave; compras e cancelamentos também têm limite por minuto. Quando estourar, a ferramenta devolve o erro com "tente de novo em N s".
Variáveis
variável | obrigatória | padrão |
| sim | — |
| não |
|
Suporte
app.numero-virtual.com, pelo chat de suporte.
Available Tools
9 toolscancel_activationCancelar ativacaoA
Cancela uma ativacao que ainda nao recebeu SMS e devolve o valor ao saldo. Nao funciona depois que o codigo chegou.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID da ativacao. |
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 the key side effect (the amount is returned to the balance) and the precondition, but says nothing about idempotency, error behavior when the precondition is violated, or whether the cancellation is permanent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero waste; the scope condition is stated before the failure condition, keeping the important information 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 one-parameter mutation with no annotations and no output schema, the description covers the essential semantics: the refund side effect and the SMS precondition. It falls short only on failure/idempotency behavior, which an agent could otherwise need.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the single `id` parameter is already documented in the schema with its type and constraint. The description adds no format, source, or lookup detail beyond the schema baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (cancela) and resource (ativacao) and adds the decisive scope constraint that it only applies before an SMS arrives. This cleanly separates it from siblings like complete_activation and wait_for_sms without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit when-it-works condition ("ainda nao recebeu SMS") and an explicit when-it-fails condition ("Nao funciona depois que o codigo chegou"). It does not name the alternative tool to use once the code arrives, which is the only thing keeping it from a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
complete_activationConcluir ativacaoA
Marca a ativacao como concluida depois de usar o codigo. Opcional, mas libera o numero mais cedo.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID da ativacao. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It does add a genuine behavioral fact beyond the name: the call is optional but frees the number earlier, which hints at a resource-release side effect. It omits error behavior, idempotency, and what happens if the activation is already completed.
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 compact sentence with the action front-loaded and the optional/benefit nuance appended. Every clause earns its place; nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter mutation with no annotations and no output schema, the description covers the essential behavior and the optional nature of the call. It still leaves the agent without error semantics or confirmation of what completion changes beyond freeing the number.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with a single documented 'id' parameter, so the schema already carries the parameter meaning. The description adds nothing about the parameter, which is acceptable given full coverage but not additive.
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 and resource: marking an activation as complete. It is distinguishable from siblings like cancel_activation and get_activation by the outcome described, though it never explicitly contrasts itself with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Depois de usar o codigo" gives a timing condition for use, and "Opcional" signals it is not mandatory. However, it offers no guidance on when to prefer cancel_activation or what happens if the activation is never completed, leaving the alternatives 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_activationConsultar ativacaoA
Situacao atual de uma ativacao: status (waiting_sms, sms_received, cancelled, expired), telefone, codigo e texto do SMS quando ja chegou. Consulte a cada 5-10 s; prefira wait_for_sms.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID da ativacao, de request_number. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose meaningful behavior: the possible status values (waiting_sms, sms_received, cancelled, expired), the fact that code/SMS text only appear once the SMS arrives, and the expected polling cadence. It doesn't address read-only safety, auth requirements, or error behavior, but for a status-read tool the state model is the key behavioral information.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences, front-loaded with what is returned, then the enum values, then the polling advice. No filler or restated name/title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and no annotations, so the description must imply the return shape — and it does by naming status, telefone, codigo and SMS text. It is complete enough to call correctly; only the error/not-found behavior is left unspecified.
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?
Only one parameter exists and schema description coverage is 100%, so the schema already documents 'id' (including its origin in request_number). The description adds no parameter detail, which is the expected baseline when the schema does the work.
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+resource ('Situacao atual de uma ativacao') and enumerates exactly what the caller gets back: status values, phone, code and SMS text. It also names the sibling it differs from (wait_for_sms), so an agent can separate it from the other nine activation tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete operational guidance ('Consulte a cada 5-10 s') and routes to an alternative ('prefira wait_for_sms'). It stops short of stating the condition under which polling beats waiting, but the preference hint is explicit enough to steer tool choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_balanceSaldo da contaA
Saldo atual da conta no Numero Virtual, em reais (BRL). Toda compra de numero desconta daqui.
| Name | Required | Description | Default |
|---|---|---|---|
No 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. It usefully discloses that number purchases are debited from this balance, which gives the agent meaningful domain context, but it says nothing about read-only vs mutating semantics, currency formatting, or what the response contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core answer (current balance, currency) before the supplementary domain note. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read tool with no output schema, the description covers what is returned and its currency. Only the concrete return shape (numeric value, formatting) is left unspecified, which is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline of 4 applies.
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 resource and verb-equivalent: it returns the current account balance at Numero Virtual, in BRL. No sibling tool deals with balance, so the purpose is unambiguous even without explicit sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated — an agent would naturally call this to check funds before request_number. There is no explicit when-to-use statement, no mention of prerequisites, and no named alternatives, though none of the siblings overlap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_countriesPaises disponiveisA
Lista os paises com numeros em estoque e quantos servicos cada um tem. Use o campo "code" (ISO, ex.: BR, US) nas outras ferramentas. Limite: 6 consultas por minuto; o resultado muda pouco, entao guarde-o.
| Name | Required | Description | Default |
|---|---|---|---|
No 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, and it delivers: rate limit (6 queries/minute), result stability, and the recommendation to store the result. It does not describe the response shape, but the explicit operational constraints are strong contextual disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the purpose before the code-usage and caching/rate-limit notes. Zero filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete enough for a zero-param read-only list tool: purpose, output field guidance, rate limit, and caching advice. It lacks any response structure description, minor for a no-output-schema tool but the field-level guidance partly covers it.
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?
Zero parameters, so baseline is 4. The description adds cross-tool semantics by explaining that the returned "code" field is ISO format and should be passed to other tools, which is useful despite there being no input params.
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 and resource: lists countries that have numbers in stock, plus a per-country service count. That is concrete beyond the title, though it never names or distinguishes itself from siblings like list_services.
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?
Gives real usage guidance: tells the agent to reuse the "code" field in other tools, and warns to cache the result because it changes little. No explicit when-not-to-use or alternative tools are named, but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_servicesServicos e precos de um paisA
Servicos (WhatsApp, Telegram, Google...) com estoque em um pais, do mais barato ao mais caro, com preco em centavos de BRL e as opcoes (fornecedores) de cada um. O "serviceId" e o "apiId" daqui sao os que vao em request_number. Use "search" para achar um servico pelo nome (a lista completa do Brasil tem ~700 itens). Limite: 6 consultas por minuto.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Quantos servicos devolver. Padrao 30. | |
| search | No | Trecho do nome do servico (ex.: "whats", "telegram") ou o codigo exato (ex.: "wa"). | |
| country | No | Codigo ISO do pais (BR, US, ID...), slug ou nome. Padrao: BR. | BR |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses a hard rate limit (6 requests/minute), the sort order, the price unit (BRL cents), the existence of nested supplier options, and the output field names serviceId/apiId. It is a read-only listing so no destructive/permission caveats are needed, though pagination behavior beyond the limit param is unstated.
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?
Front-loaded with what is returned, followed by the ID-to-request_number linkage, the search tip, and the rate limit. Every sentence carries information, though the opening sentence is long and stacks several facts (ordering, price unit, supplier options) into one breath.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description supplies the return-shape essentials (serviceId/apiId, price in cents, supplier options, ordering) plus the cross-tool contract with request_number. Only limit/pagination semantics and any country-availability nuances remain implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so limit, search, and country are already fully documented in the schema (baseline 3). The description adds only that search exists as a way to cope with the large Brazil list; it adds no format or default details beyond what the schema already carries.
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 resource (servicos/serviços com estoque por país) and adds distinguishing detail: sorted cheapest-to-most-expensive, prices in BRL cents, and per-service supplier options. An agent can immediately tell this apart from get_balance, list_countries, or request_number.
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?
Gives clear context for when the tool is needed and how to navigate it (use "search" to find a service by name given the ~700-item Brazil list). It also states downstream usage: the returned serviceId/apiId are the values passed to request_number. No explicit exclusion rules are given, but the routing guidance is concrete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_numberPedir um numeroA
Compra um numero virtual para receber o SMS de verificacao de um servico. Debita o saldo na hora. Devolve o id da ativacao e o telefone; depois use wait_for_sms (ou get_activation) para ler o codigo. O numero vale ~20 minutos; se o SMS nao vier, cancele com cancel_activation para o valor voltar ao saldo.
| Name | Required | Description | Default |
|---|---|---|---|
| ddd | No | Somente Brasil: DDD de 2 digitos desejado. Pode ter taxa adicional. | |
| apiId | No | Opcao (fornecedor) especifica, de list_services. Sem isso a API escolhe a mais barata com estoque. | |
| country | No | Codigo ISO do pais. Padrao: BR. | BR |
| serviceId | Yes | ID do servico, de list_services. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so: it discloses that the balance is debited immediately (a real cost side effect), the ~20-minute lifetime of the number, and that cancellation refunds the value. It also tells the agent what the call returns (activation id and phone).
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?
Four tightly packed sentences: action and cost first, then the return value and next step, then the time limit and refund path. No sentence is redundant and the most decision-relevant facts (cost, expiry, refund) 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?
There is no output schema and no annotations, so the description must cover the return and safety profile itself — and it does, naming the returned activation id and phone plus the expiry/refund behavior. Nothing an agent needs to invoke this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters (ddd, apiId, country, serviceId) and their defaults. The description adds no parameter-level detail beyond the schema, which is the baseline 3 case.
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 and resource ('Compra um numero virtual') plus the exact purpose (receber o SMS de verificacao). It also names what is returned and routes the agent to siblings, so it is distinguishable from the other activation tools at a glance.
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?
Gives explicit follow-up routing: use wait_for_sms or get_activation to read the code, and cancel_activation if the SMS never arrives. The ~20-minute validity window tells the agent when the number expires, which is exactly the condition that selects the cancel path.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resend_smsPedir reenvio do SMSA
Pede ao fornecedor um novo SMS para a mesma ativacao (quando o servico permite reenviar o codigo). Use se o primeiro nao chegou.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID da ativacao. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses the precondition that the downstream service must allow resending, but says nothing about failure modes, cost implications, rate limits, or whether the original activation state changes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and then the use condition; there is no redundant or filler text.
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 one-parameter action with no output schema and no annotations, the description covers what it does, the precondition, and when to invoke it. It is nearly sufficient, missing only outcome/failure behavior for a resend request.
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?
Only one parameter (id), and schema description coverage is 100% ('ID da ativacao'), so the schema already documents it fully. The description adds no format, range, or sourcing detail beyond the schema, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: requesting a fresh SMS from the provider for the same activation. It is clearly distinguishable from siblings like request_number, wait_for_sms and cancel_activation, though it does not explicitly name any sibling for contrast.
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?
"Use se o primeiro nao chegou" gives a clear triggering condition, and the parenthetical narrows it further to cases where the service permits a resend. No alternative tool is named (e.g. wait_for_sms first), so it stops short of 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.
wait_for_smsEsperar o codigo chegarA
Fica consultando a ativacao a cada 5 s ate o codigo chegar ou o tempo acabar (padrao 60 s, maximo 300). Devolve a ativacao com "codigo_chegou" true/false. Se nao chegou, chame de novo (o numero vale ~20 min) ou use resend_sms / cancel_activation.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID da ativacao. | |
| timeoutSeconds | No | Tempo maximo de espera nesta chamada, em segundos. Alguns clientes MCP cortam ferramentas longas; prefira chamadas de ate 60 s. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the polling interval (5s), timeout default/max (60/300), the ~20 min validity of the number, the retry semantics, and the true/false return flag. It omits auth requirements and rate limits, but for this operation the behavioral profile is largely complete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences: the polling/timeout behavior is front-loaded, followed by the return and retry guidance. Every clause earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description reasonably summarizes the return (the activation with codigo_chegou true/false), plus retry and alternative paths. Slightly more detail on the full return shape would make it fully complete, but an agent has enough to call and interpret it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are already documented. The description restates the 60s default and 300 max from the schema without adding format or syntax beyond what the schema provides, so the baseline 3 applies.
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 behavior: polls the activation every 5s until the code arrives or time runs out. It also names siblings (resend_sms, cancel_activation) as alternatives, so an agent can distinguish this blocking-wait tool from the fire-and-check siblings.
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?
Gives clear when-to-use context ('if it hasn't arrived, call again') and names the two alternatives. It doesn't spell out the exact conditions that favor resend_sms over re-calling this tool, so it falls just short of fully explicit routing.
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
v0.1.0- First observed
cancel_activation - First observed
complete_activation - First observed
get_activation - First observed
get_balance - First observed
list_countries - First observed
list_services - First observed
request_number - First observed
resend_sms - First observed
wait_for_sms
TDQS
Scored across 9 tools
Each tool targets a distinct action in the number-rental lifecycle (browse, buy, poll, resend, cancel, complete). The only notable overlap is get_activation vs wait_for_sms, but the descriptions explicitly state that wait_for_sms is preferred, which mitigates confusion.
All nine tools follow a consistent snake_case verb_noun pattern (get_balance, list_countries, request_number, cancel_activation, etc.). No mixing of conventions or vague verbs.
Nine tools is well-scoped for the domain, covering browsing, purchasing, and activation lifecycle management without redundancy or filler.
The surface covers the full lifecycle: balance, country/service discovery, number purchase, SMS polling, resend, cancel, and completion. Minor gap: no way to list past/active activations in bulk, only single-activation lookup via get_activation.
Maintenance
Related MCP Connectors
Give AI agents a phone number. Voice calls, SMS, and phone number management for MCP clients.
Give AI agents real phone numbers, messages, and voice calls via MCP.
Phone, SMS and email for AI agents. One remote MCP endpoint, OAuth login, zero install.
Hosted CallRail MCP server for Claude, ChatGPT and Cursor, with each action switched per account.
Related MCP Servers
- AlicenseAqualityDmaintenanceMCP server for provisioning dedicated real-SIM US phone numbers, receiving inbound SMS, and extracting OTP codes. Built for AI agents automating phone verification workflows.1229 npm1MIT
- AlicenseAqualityCmaintenanceGives AI agents phone numbers, email, SMS, and voice calls as MCP tools, enabling them to provision numbers, capture 2FA codes, send messages, and make calls.15MIT
- AlicenseAqualityDmaintenanceMCP server for integrating with Grizzly SMS platform to rent virtual numbers, receive SMS verification codes, and manage activations directly from AI assistants like Cursor, Claude Desktop, and OpenClaw.819MIT

agentsim-mcpofficial
AlicenseAqualityBmaintenanceMCP server that enables AI coding assistants to provision temporary US phone numbers and receive SMS OTPs for verification workflows.51MIT