grizzly-sms
SMS verification and virtual phone numbers via Grizzly SMS API
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
SMS verification and virtual phone numbers via Grizzly SMS API
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | grizzly_sms |
| description | SMS verification and virtual phone numbers via Grizzly SMS API |
| metadata | {"openclaw":{"primaryEnv":"GRIZZLY_SMS_API_KEY","askForEnvInDialog":true}} |
Use this skill when the user needs: SMS verification, virtual numbers (Uber, Telegram, WhatsApp, Instagram, etc.), balance, prices, countries, services, or account registration with a rented phone number.
Before running any Grizzly command, you MUST ask the user for the API key (unless they already gave it in this conversation):
Please provide your Grizzly SMS API key. Register on grizzlysms.com, then go to the API section (grizzlysms.com/docs) and copy the key.
When the user provides the key in chat — use it immediately. Pass it via exec env on every Grizzly call. Do NOT tell the user to set environment variables or edit config. The exec tool accepts env overrides; use them.
exec(command="node {baseDir}/scripts/grizzly-cli.mjs get_services", env={"GRIZZLY_SMS_API_KEY": "<exact_key_user_sent>"})
Example: user sends e069d36075b9b230fe1eb159b86526d1 → use env={"GRIZZLY_SMS_API_KEY": "e069d36075b9b230fe1eb159b86526d1"} in exec. Then proceed with get_services, request_number, etc.
If the key is already in config (skills.entries.grizzly_sms.env), omit env. Otherwise always ask and pass via env.
DO NOT ask the user to set GRIZZLY_SMS_API_KEY in environment variables or config files when they already provided the key in chat. Use it directly.
There is NO tool named grizzly_sms.get_services(). You MUST use the exec tool. Example:
exec(command="node {baseDir}/scripts/grizzly-cli.mjs get_services", env={"GRIZZLY_SMS_API_KEY": "<user_key>"})
Use host=gateway only if tools.exec.host is configured for gateway. OpenClaw replaces {baseDir} with the skill folder path.
| What to do | Exec command |
|---|---|
| List services (find Uber) | node {baseDir}/scripts/grizzly-cli.mjs get_services |
| List countries (Brazil=73) | node {baseDir}/scripts/grizzly-cli.mjs get_countries |
| Check balance | node {baseDir}/scripts/grizzly-cli.mjs get_balance |
| Request number | node {baseDir}/scripts/grizzly-cli.mjs request_number ub 73 |
| Get SMS code | node {baseDir}/scripts/grizzly-cli.mjs get_status <activationId> |
| Complete activation | node {baseDir}/scripts/grizzly-cli.mjs set_status <activationId> 6 |
When the user asks to "register an account for [service] in [country]" (e.g. Uber in Brazil, Instagram in Jamaica):
| Service | Registration URL |
|---|---|
| Uber | https://riders.uber.com/ |
| https://www.instagram.com/accounts/emailsignup/ | |
| Telegram | https://web.telegram.org/ |
| https://web.whatsapp.com/ | |
| https://www.facebook.com/reg/ | |
| https://accounts.google.com/signup |
Use browser.navigate, browser.fill, browser.click as needed. Set browser headless=false so the user can see the process on Mac.
When sending phone numbers, activation IDs, or SMS codes to the user, always format them for easy copying:
If the channel is Telegram — wrap each value in monospace using triple backticks. Example:
Phone: `+15551234567`
Activation ID: `12345678`
SMS code: `847291`
Or as a compact block:
`+15551234567` | actId: `12345678` | SMS: `847291`
If the channel is not Telegram — use plain labeled format with clear line breaks. Avoid extra punctuation around the values so the user can select and copy easily.