Skip to main content
Glama
GrizzlySMS-Git

Grizzly SMS MCP Server

Official

Grizzly SMS — MCP Server & OpenClaw Skill

English | Русский


English

MCP (Model Context Protocol) server and OpenClaw Skill for integrating with Grizzly SMS — a platform for SMS verification codes and virtual phone numbers. Compatible with Cursor, Claude Desktop, OpenClaw (MCP and Skill modes).

What This Project Provides

Mode

Description

Use Case

MCP Server

Standards-based MCP server exposing Grizzly API tools

Cursor, Claude Desktop, OpenClaw with mcpServers

OpenClaw Skill

Instruction-based skill using exec + CLI script

OpenClaw skills-only setup (no mcpServers)

Features

MCP Server

  • Phone operations: request_number, get_status, set_status

  • Account: get_balance

  • Info: get_countries, get_services, get_prices

OpenClaw Skill

  • Dialog-based API key: Bot asks for the key during the conversation

  • Balance & top-up: Check balance and provide crypto wallet (USDT TRC-20) for top-up

  • Number lifecycle: Request number, poll for SMS, complete or cancel activation

  • Full registration workflow: Resolve service/country codes → rent number → open browser → fill forms → enter SMS code

  • Formatted output: Phone, activation ID, and SMS in copy-friendly format (monospace on Telegram)

OpenClaw Skill Pipeline

  1. API key — Bot asks: Please provide your Grizzly SMS API key

  2. Balance & top-up — Bot can show balance and crypto wallet address for USDT TRC-20 top-up

  3. Number — Bot rents a number for the requested service and country

  4. Status — Bot can cancel an activation or request a new SMS

  5. SMS — Bot polls and returns the verification code

  6. Complete — Bot marks activation complete after code is used

See CONFIG.md for OpenClaw skill setup.

Prerequisites


Installation

git clone https://github.com/GrizzlySMS-Git/grizzly-sms-mcp.git
cd grizzly-sms-mcp
npm install
npm run build

Configuration: MCP Server (Cursor, Claude Desktop, OpenClaw mcpServers)

Cursor

Location: %APPDATA%\Cursor\User\globalStorage\mcp.json (Windows) | ~/Library/Application Support/Cursor/User/globalStorage/mcp.json (macOS) | ~/.config/Cursor/User/globalStorage/mcp.json (Linux)

{
  "mcpServers": {
    "grizzly-sms": {
      "command": "node",
      "args": ["/absolute/path/to/grizzly-sms-mcp/dist/index.js"],
      "env": {
        "GRIZZLY_SMS_API_KEY": "your_api_key",
        "GRIZZLY_SMS_BASE_URL": "https://api.grizzlysms.com"
      }
    }
  }
}

OpenClaw (mcpServers)

Location: ~/.openclaw/openclaw.json (macOS/Linux) | %APPDATA%\.openclaw\openclaw.json (Windows)

{
  "agents": {
    "list": [{
      "id": "main",
      "mcpServers": {
        "grizzly-sms": {
          "command": "node",
          "args": ["/absolute/path/to/grizzly-sms-mcp/dist/index.js"],
          "env": {
            "GRIZZLY_SMS_API_KEY": "your_api_key",
            "GRIZZLY_SMS_BASE_URL": "https://api.grizzlysms.com"
          }
        }
      }
    }
  }
}

Use absolute paths. Restart after changes: openclaw gateway restart


Configuration: OpenClaw Skill (skills-only, no mcpServers)

  1. Add skill path to openclaw.json:

{
  "skills": {
    "load": {
      "extraDirs": ["/absolute/path/to/grizzly-sms-mcp"]
    },
    "entries": {
      "grizzly_sms": {
        "enabled": true
      }
    }
  }
}
  1. Enable exec and optionally browser tools for the agent

  2. Restart: npx openclaw gateway restart

Full setup (exec approvals, browser tool, API key in dialog) — see CONFIG.md.


MCP Tools Reference

Tool

Parameters

Description

request_number

service (required), country (optional), maxPrice, providerIds, exceptProviderIds

Rent a virtual number

get_status

activationId (required)

Get activation status and SMS code

set_status

activationId, status (6=complete, 8=cancel)

Change activation status

get_balance

Check balance

get_wallet

Get USDT TRC-20 wallet address for top-up

get_countries

List countries

get_services

List services

get_prices

service, country (optional)

Get prices

Common Service Codes

Code

Service

tg

Telegram

wa

WhatsApp

ig

Instagram

fb

Facebook

go

Google

ub

Uber

Common Country IDs

ID

Country

73

Brazil

1

Ukraine

16

England

187

USA

22

India


Project Structure

grizzly-sms-mcp/
├── SKILL.md           # OpenClaw skill instructions
├── CONFIG.md          # OpenClaw skill config guide
├── clawhub.json       # ClawHub metadata
├── scripts/
│   └── grizzly-cli.mjs # CLI for OpenClaw exec
├── src/               # MCP server (TypeScript)
│   ├── index.ts
│   └── grizzly-sms-client.ts
├── docs/
├── package.json
└── README.md

Development

npm run dev      # Development mode
npm run build    # Build MCP server
npm start        # Run MCP server
npm test         # Run tests
npm run test:api # Test API methods

Troubleshooting

  • GRIZZLY_SMS_API_KEY required — Set in .env, config, or provide in chat (Skill mode)

  • BAD_KEY — Verify API key at grizzlysms.com

  • NO_BALANCE — Top up at grizzlysms.com (USDT TRC-20 supported)

  • exec not permitted — Configure exec approvals; see CONFIG.md


Support


License

MIT — see LICENSE


Related MCP server: MCP Agents SMS

Русский

MCP (Model Context Protocol) сервер и OpenClaw Skill для интеграции с Grizzly SMS — платформой SMS верификации и виртуальных номеров. Совместимо с Cursor, Claude Desktop, OpenClaw (режимы MCP и Skill).

Что предоставляет проект

Режим

Описание

Когда использовать

MCP Server

MCP‑сервер с инструментами Grizzly API

Cursor, Claude Desktop, OpenClaw с mcpServers

OpenClaw Skill

Skill на exec + CLI‑скрипт

OpenClaw только со skills (без mcpServers)

Возможности

MCP Server

  • Номера: request_number, get_status, set_status

  • Аккаунт: get_balance

  • Справочники: get_countries, get_services, get_prices

OpenClaw Skill

  • API‑ключ в диалоге: бот запрашивает ключ в чате

  • Баланс и пополнение: показывает баланс и криптокошелёк (USDT TRC-20) для пополнения

  • Жизненный цикл номера: аренда номера, ожидание SMS, завершение или отмена активации

  • Полный workflow регистрации: определение сервиса/страны → аренда номера → браузер → заполнение форм → ввод SMS‑кода

  • Форматированный вывод: номер, ID активации и SMS в удобном для копирования виде (моноширинный текст в Telegram)

Пайплайн OpenClaw Skill

  1. API‑ключ — бот спрашивает: Выдайте API ключ Grizzly SMS

  2. Баланс и пополнение — бот показывает баланс и адрес кошелька USDT TRC-20

  3. Номер — бот арендует номер для указанного сервиса и страны

  4. Статус — бот может отменить активацию или запросить новый SMS

  5. SMS — бот опрашивает статус и возвращает код

  6. Завершение — бот помечает активацию выполненной после использования кода

Подробная настройка — в CONFIG.md.

Требования


Установка

git clone https://github.com/GrizzlySMS-Git/grizzly-sms-mcp.git
cd grizzly-sms-mcp
npm install
npm run build

Конфигурация: MCP Server (Cursor, Claude Desktop, OpenClaw mcpServers)

Cursor

Путь: %APPDATA%\Cursor\User\globalStorage\mcp.json (Windows) | ~/Library/Application Support/Cursor/User/globalStorage/mcp.json (macOS) | ~/.config/Cursor/User/globalStorage/mcp.json (Linux)

{
  "mcpServers": {
    "grizzly-sms": {
      "command": "node",
      "args": ["/абсолютный/путь/к/grizzly-sms-mcp/dist/index.js"],
      "env": {
        "GRIZZLY_SMS_API_KEY": "ваш_api_ключ",
        "GRIZZLY_SMS_BASE_URL": "https://api.grizzlysms.com"
      }
    }
  }
}

OpenClaw (mcpServers)

Путь: ~/.openclaw/openclaw.json (macOS/Linux) | %APPDATA%\.openclaw\openclaw.json (Windows)

{
  "agents": {
    "list": [{
      "id": "main",
      "mcpServers": {
        "grizzly-sms": {
          "command": "node",
          "args": ["/абсолютный/путь/к/grizzly-sms-mcp/dist/index.js"],
          "env": {
            "GRIZZLY_SMS_API_KEY": "ваш_api_ключ",
            "GRIZZLY_SMS_BASE_URL": "https://api.grizzlysms.com"
          }
        }
      }
    }
  }
}

Используйте абсолютные пути. После изменений: openclaw gateway restart


Конфигурация: OpenClaw Skill (только skills, без mcpServers)

  1. Добавьте путь к skill в openclaw.json:

{
  "skills": {
    "load": {
      "extraDirs": ["/абсолютный/путь/к/grizzly-sms-mcp"]
    },
    "entries": {
      "grizzly_sms": {
        "enabled": true
      }
    }
  }
}
  1. Включите инструменты exec и по необходимости browser

  2. Перезапуск: npx openclaw gateway restart

Полная настройка (exec approvals, browser, API key в диалоге) — в CONFIG.md.


Справка по MCP‑инструментам

Инструмент

Параметры

Описание

request_number

service (обяз.), country (опц.), maxPrice, providerIds, exceptProviderIds

Аренда виртуального номера

get_status

activationId (обяз.)

Статус активации и SMS‑код

set_status

activationId, status (6=завершить, 8=отменить)

Изменение статуса

get_balance

Баланс

get_wallet

Адрес кошелька USDT TRC-20 для пополнения

get_countries

Список стран

get_services

Список сервисов

get_prices

service, country (опц.)

Цены

Коды сервисов

Код

Сервис

tg

Telegram

wa

WhatsApp

ig

Instagram

fb

Facebook

go

Google

ub

Uber

ID стран

ID

Страна

73

Бразилия

1

Украина

16

Англия

187

США

22

Индия


Решение проблем

  • GRIZZLY_SMS_API_KEY required — Задайте в .env, конфиге или передайте в чате (Skill)

  • BAD_KEY — Проверьте ключ на grizzlysms.com

  • NO_BALANCE — Пополните на grizzlysms.com (USDT TRC-20)

  • exec not permitted — Настройте exec approvals в CONFIG.md


Поддержка


Лицензия

MIT — см. LICENSE

Available Tools

8 tools
get_balanceB

Get account balance

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It does not state whether the operation is read-only, whether authentication is required, or what the response format is. The description is minimal and lacks transparency beyond the bare function.

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?

The description is extremely concise, using only four words. It is front-loaded and has no wasted content. However, it could be slightly more descriptive without losing conciseness, such as adding 'current' or 'available' balance.

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?

Given the simplicity of the tool (no parameters, no output schema), the description is minimally adequate. It tells what the tool does, but it does not mention return values, potential errors, or any related context. For a simple getter, this is acceptable but not comprehensive.

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 schema covers 100% of the parameters trivially. The baseline for zero-parameter tools is 4, and no additional parameter information is needed or provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/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 'account balance'. It is unambiguous and specific enough to understand the tool's purpose, though it does not explicitly distinguish it from siblings beyond the resource name.

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

Usage Guidelines2/5

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

No guidance is provided about when to use this tool versus alternatives. There are no hints about prerequisites, context, or exclusions. The description simply states what it does without any usage direction.

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

get_countriesB

Get list of available countries

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are present, so the description carries the full burden of behavioral disclosure. It only says 'Get list of available countries,' which implies a read operation but does not mention return format, pagination, size limits, or any other behavioral traits.

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 concise single sentence that is front-loaded and free of filler. Every word is meaningful for the simple operation it describes.

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?

The tool is simple with no parameters and no output schema, and the description is mostly sufficient to understand its purpose. However, a bit more detail about the response structure or its distinction from 'get_top_countries' would improve completeness. For this low complexity, the description is largely complete.

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 schema fully covers parameter semantics, and the description does not need to elaborate. The phrase 'available countries' adds a slight contextual nuance, but the baseline of 4 for parameterless tools is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Get' and resource 'list of available countries', clearly identifying this as a read operation returning country data. It is not tautological, but it does not explicitly distinguish itself from the sibling tool 'get_top_countries'.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like 'get_top_countries' or other list tools. The description only states what the tool does, with no mention of typical use cases, prerequisites, or exclusions.

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

get_pricesB

Get prices for services by country

ParametersJSON Schema
NameRequiredDescriptionDefault
countryNoCountry ID or "*" for any country
serviceNoService code
versionNoAPI version (v1, v2, or v3)

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations provided, the description must carry the burden of behavioral disclosure. It does not state whether the operation is read-only, whether authentication is required, what the response shape is, or whether multiple countries/services can be queried in one call. The verb 'get' hints at a non-destructive operation, but that is not explicit.

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, front-loaded sentence with no redundant words. It is appropriately sized for the tool's apparent simplicity, delivering the core message without waste.

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?

Given that there are three parameters with full schema descriptions and no output schema, the description is minimally complete. It communicates the tool's purpose but omits details about return format, invocation nuances (e.g., whether service is optional), or how version affects pricing. However, for a straightforward lookup tool, this may be 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 description coverage is 100%, so the baseline is 3. The description adds no additional meaning to the parameters beyond what the schema already provides; it just reiterates the general purpose. The schema clearly defines country, service, and version, including the '*' wildcard for country, so this is adequate.

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'), the resource ('prices for services'), and the scope ('by country'). It distinguishes itself from siblings like get_countries and get_services by specifying that this tool retrieves pricing data. 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.

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives. There is no mention of prerequisites, exclusions, or scenarios where get_balance or get_wallet might be more appropriate. The description implies its use for price lookups but provides no explicit context.

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

get_servicesB

Get list of available services

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are present, so the description alone must convey behavioral traits. It only says 'Get list' without explaining response format, authentication needs, rate limits, or any side effects. For a read-only tool, this is minimal but not entirely misleading.

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, concise sentence with no redundant words. It is appropriately sized for a zero-parameter tool.

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?

With no parameters and no output schema, the description is minimally viable. However, it fails to define the domain meaning of 'services' or how this list relates to the sibling tools, leaving room for ambiguity.

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 has zero parameters, so the baseline is 4. The description adds value by specifying the output is a list of services, though it does not elaborate on what constitutes a 'service' in this domain.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Get list of available services' clearly states the verb and resource. It is more specific than a tautology but lacks explicit differentiation from siblings like get_countries or get_operators, though 'services' likely has a distinct domain meaning.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus siblings or on prerequisites. The description simply states the action without any contextual pointers or exclusions.

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

get_statusC

Get activation status and SMS code

ParametersJSON Schema
NameRequiredDescriptionDefault
activationIdYesActivation ID

TDQS

C2.9/5.0
Behavior2/5

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 only states the purpose and does not explain return format, error behavior, permissions, or side effects. The word 'Get' implies read-only, but no explicit safety or response details are given.

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 immediately conveys the tool's purpose. Every word is meaningful, with no redundancy or filler, making it highly efficient.

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

Completeness2/5

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

Given the lack of output schema and annotations, the description should provide more detail about return values and usage context. It fails to mention when to preference this over similar siblings (e.g., get_active_activations) and does not clarify what 'status' entails, leaving the agent with incomplete information for reliable 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 input schema has 100% coverage for the single parameter, with description 'Activation ID' that minimally defines the parameter. The tool description adds no additional semantics beyond the schema, so the baseline of 3 applies. The parameter description is terse but present.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Get activation status and SMS code' clearly identifies the action (get) and the resource (activation status and SMS code). It distinguishes from siblings like get_balance or get_operators, though it does not explicitly mention it operates on a single activationId, leaving some ambiguity with get_active_activations or get_activation_history.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as get_active_activations or get_activation_history. The description simply states what it does without any context or exclusions, leaving the agent to infer usage from the tool name and parameter.

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

get_walletA

Get USDT TRC-20 crypto wallet address for balance top-up. Send USDT to this address (min 50 USD). Funds credit automatically.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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 adds useful behavioral details (min 50 USD, funds credit automatically), but it does not disclose whether the address is static or changes on each call, nor any authentication or rate-limit constraints. This is a moderate gap for a no-annotation tool.

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 three concise sentences, each serving a purpose: defining the action, providing instruction, and explaining the automatic crediting behavior. There is no extraneous text.

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 zero-parameter tool with no output schema, the description is sufficiently complete. It explains what is returned (a wallet address) and what the caller should do with it. It does not cover edge cases like errors or address stability, but those are not critical for this simple tool.

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 baseline is 4. The description adds context about the returned address's purpose, which is useful even though no parameter explanations are needed.

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 function: 'Get USDT TRC-20 crypto wallet address for balance top-up.' It specifies the resource (wallet address) and the verb (Get), and distinguishes it from siblings like get_balance by focusing on top-up rather than balance checking.

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 by stating 'for balance top-up' and explains the follow-up action ('Send USDT to this address'). It does not explicitly name alternatives, but sibling tools are distinctly different, so the usage context is sufficient.

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

request_numberB

Request a phone number for SMS verification

ParametersJSON Schema
NameRequiredDescriptionDefault
refNoReferral code
ref_idNoReferral ID
countryNoCountry ID (e.g., 0 for Russia) or "*" or "any" for any country
forwardNoForward option (0 or 1)
serviceYesService code or name (e.g., "tg", "Telegram", "wa", "WhatsApp")
versionNoAPI version (v1=plain text, v2=JSON with details)
maxPriceNoMaximum price
operatorNoOperator name
providerIdsNoComma-separated provider IDs
activationTypeNoActivation type (1, 2, 3, or 4)
phoneExceptionNoComma-separated phone numbers to exclude
exceptProviderIdsNoComma-separated provider IDs to exclude

TDQS

B3.3/5.0
Behavior2/5

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 only states the intended action without detailing side effects, cost implications, authentication requirements, or response format. For a mutating tool (requesting a number), this is a significant gap.

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, focused sentence that efficiently states the tool's purpose. There is no wasted text, and the core action is front-loaded, making it highly concise.

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

Completeness1/5

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

For a tool with 12 parameters, no output schema, and no annotations, a one-sentence description is severely lacking. It does not explain the request lifecycle, expected response, or error conditions, leaving the agent without enough context to invoke the tool 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?

Schema description coverage is 100%, so all 12 parameters are documented in the schema. The description itself adds no parameter information, but since the schema already provides full coverage, the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('request') and resource ('phone number') with a clear purpose ('for SMS verification'). It clearly distinguishes itself from sibling tools, which are all get/set operations on balance, wallet, status, prices, countries, or services.

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 when to use the tool (when a phone number is needed for SMS verification) but does not explicitly state when to use it over alternatives or any exclusions. It relies on the user to infer the use case, and no sibling alternatives are mentioned.

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

set_statusC

Change activation status

ParametersJSON Schema
NameRequiredDescriptionDefault
statusYesStatus code: 1=report SMS sent, 3=request another code, 6=complete activation, 8=cancel activation
activationIdYesActivation ID

TDQS

C2.8/5.0
Behavior2/5

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 implies a write operation but does not disclose side effects, required state, or error behavior.

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

Conciseness3/5

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

The description is a single short sentence, which is concise but lacks substance. It's not wordy, but it also doesn't earn its place with added value.

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

Completeness2/5

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

The tool is part of a larger SMS activation flow (with siblings like request_number, get_status, etc.), but the description doesn't place it in that context. No output schema exists, so the description should explain behaviors or outcomes, but it doesn't.

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 already fully describes both parameters (status codes and activationId). The description adds no additional parameter information, so the schema carries the full weight.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the verb 'change' with the resource 'activation status', clearly identifying this as a mutation tool. It distinguishes itself from sibling tools like 'get_status' by the action, though it could be more specific about the status types.

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

Usage Guidelines2/5

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

The description provides no context on when to use this tool versus retrieving status or requesting numbers. With 16 sibling tools, there is no guidance on integration or prerequisites.

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.

  1. 8 tool updatesv1.0.0
    • First observedget_balance
    • First observedget_countries
    • First observedget_prices
    • First observedget_services
    • First observedget_status
    • First observedget_wallet
    • First observedrequest_number
    • First observedset_status

TDQS

A3.7/5.0

Scored across 8 tools

Disambiguation5/5

Each tool targets a distinct aspect of the SMS verification workflow: account finances, number requests, status management, and reference data. There is no meaningful overlap between any pair of tools.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (e.g., get_balance, request_number). The naming is uniform and predictable across the entire set.

Tool Count5/5

With 8 tools, the server is well-scoped for an SMS verification service. Every tool serves a clear function without unnecessary bloat or missing essentials.

Completeness5/5

The tools cover the core lifecycle: top-up (get_wallet, get_balance), request a number (request_number), poll for SMS (get_status, set_status), and reference data (get_prices, get_countries, get_services). This appears sufficient for the stated purpose.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server for provisioning dedicated real-SIM US phone numbers, receiving inbound SMS, and extracting OTP codes. Built for AI agents automating phone verification workflows.
    20 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server that enables AI agents to autonomously buy virtual phone numbers and receive SMS verification codes. Supports multiple providers (5sim, SMS-Activate, OnlineSim) with automatic cheapest-provider selection.
    1
    MIT
  • A
    license
    B
    quality
    B
    maintenance
    MCP server for sending SMS via the SMSPM API. Send transactional SMS from Claude Desktop, Cursor, Windsurf, Cline, or any MCP client.
    1
    20 npm
    MIT