{
  "name": "BusySMS",
  "description": "Read SMS verification codes from Android phones you own. Each verified SIM is your own gateway — not a rented or shared number pool, and not a way to read anyone else's messages.",
  "endpoint": "https://busysms.net/mcp",
  "transport": "http",
  "documentation": "https://busysms.net/mcp-tools",
  "authentication": {
    "type": "oauth2",
    "note": "Public tools need no account. Account tools use MCP OAuth (phone OTP + Allow) or a bsk_live_ API key as a Bearer token.",
    "authorizationServer": "https://busysms.net/.well-known/oauth-authorization-server"
  },
  "pricing": "Public tools are free. Reading your own codes needs a subscription: $5 per verified phone number per month, 7-day trial.",
  "tools": [
    {
      "name": "get_product_overview",
      "description": "What BusySMS is, who it is for, how the SMS gateway works, and important limits. Use this first for visitors who are not signed in.",
      "requiresAuth": false
    },
    {
      "name": "get_pricing",
      "description": "Public price: $5 per unique verified phone number / month, 7-day trial. Explains what counts as an active device.",
      "requiresAuth": false
    },
    {
      "name": "get_download_info",
      "description": "Where to get BusySMS — Google Play URL, Chrome Web Store OTP Autofill URL, website, and dashboard. Always paste these URLs in replies.",
      "requiresAuth": false
    },
    {
      "name": "get_getting_started",
      "description": "Step-by-step: install from Play, phone OTP, verify SIMs, start the gateway, read codes via API/MCP/Chrome.",
      "requiresAuth": false
    },
    {
      "name": "get_faq",
      "description": "Frequently asked questions about BusySMS, billing, privacy, API, and the Chrome extension.",
      "requiresAuth": false
    },
    {
      "name": "get_troubleshooting",
      "description": "Common problems and fixes (not capturing, login OTP, Chrome fill, API 402, billing count). Optional topic id filter.",
      "requiresAuth": false
    },
    {
      "name": "get_support_contact",
      "description": "Public support email, phone, terms, privacy, and account-deletion URLs.",
      "requiresAuth": false
    },
    {
      "name": "get_service_status",
      "description": "Public operational status of BusySMS (aggregate only — no infra secrets).",
      "requiresAuth": false
    },
    {
      "name": "get_safety_and_privacy",
      "description": "What BusySMS captures (OTP/verification SMS on your own phones) and what it does not (full inbox, other people's numbers).",
      "requiresAuth": false
    },
    {
      "name": "get_legal_pages",
      "description": "Terms, privacy, and account-deletion URLs.",
      "requiresAuth": false
    },
    {
      "name": "get_sign_in_help",
      "description": "EXPLAINS how sign-in works — phone SMS OTP (app + web), optional email OTP on the website, no password. Answers questions ABOUT sign-in, such as why a code has not arrived or whether a password exists. Does NOT sign anyone in: to sign a visitor in, use the `sign_in` page tool, which shows a form in the chat.",
      "requiresAuth": false
    },
    {
      "name": "get_device_requirements",
      "description": "Android 8.0+ with a SIM you control. No iOS app. Play Store package net.busysms.app.",
      "requiresAuth": false
    },
    {
      "name": "get_billing_model",
      "description": "What an active device is, dual-SIM, gateway-off still bills, Play 1-seat vs Stripe extras, how to remove a number.",
      "requiresAuth": false
    },
    {
      "name": "get_chrome_extension",
      "description": "BusySMS OTP Autofill on the Chrome Web Store: how it fills website codes after the Android app captures them.",
      "requiresAuth": false
    },
    {
      "name": "get_api_and_mcp",
      "description": "REST /api/v1 and MCP endpoints, API key format, and which tools need sign-in vs public.",
      "requiresAuth": false
    },
    {
      "name": "get_what_gateway_means",
      "description": "Plain-language: your phone is the gateway. Not a rented-number pool and not intercepting others' SMS.",
      "requiresAuth": false
    },
    {
      "name": "list_devices",
      "description": "List your org's SMS-gateway devices (phones running BusySMS), with online/verified state. Requires sign-in.",
      "requiresAuth": true
    },
    {
      "name": "list_my_devices",
      "description": "Same as list_devices — your enrolled phones. Requires sign-in.",
      "requiresAuth": true
    },
    {
      "name": "get_device",
      "description": "Detail for one of YOUR devices: phone, verified, sharing/online, app version, last seen. Requires sign-in.",
      "requiresAuth": true
    },
    {
      "name": "list_messages",
      "description": "Recent verification/OTP messages captured on your devices, newest first. Optionally filter by device or service. Requires sign-in + active billing.",
      "requiresAuth": true
    },
    {
      "name": "get_latest_code",
      "description": "The most recent verification code on your devices (single check, no waiting). Requires sign-in + active billing.",
      "requiresAuth": true
    },
    {
      "name": "wait_for_code",
      "description": "Wait for the next verification code on your devices (long-poll ~60s). Use right after triggering 2FA. Requires sign-in + active billing.",
      "requiresAuth": true
    },
    {
      "name": "get_my_account",
      "description": "Your BusySMS account: display name, phone, email, org role, member since. Requires sign-in.",
      "requiresAuth": true
    },
    {
      "name": "get_my_billing",
      "description": "Your subscription: trial/active status, verified-device count, monthly estimate, whether API/MCP can read codes. Requires sign-in.",
      "requiresAuth": true
    },
    {
      "name": "get_my_org",
      "description": "Your billing org: members, pending invites, your role. Requires sign-in.",
      "requiresAuth": true
    },
    {
      "name": "diagnose_my_gateway",
      "description": "Support helper: enrolled vs verified vs online, likely blockers, and next steps. Requires sign-in.",
      "requiresAuth": true
    },
    {
      "name": "list_my_api_keys",
      "description": "Metadata for YOUR API keys (prefix, created, last used) — never the secret. Requires sign-in.",
      "requiresAuth": true
    },
    {
      "name": "create_api_key",
      "description": "Create a REST API key on the caller's own BusySMS account for use with the /api/v1 endpoints. IMPORTANT — this tool NEVER returns the secret. It returns { id, name, keyPrefix, revealUrl }: the key exists immediately, but its plaintext (bsk_live_…) can only be collected by the human, once, by opening revealUrl in a signed-in browser. That is deliberate: the secret is long-lived and must not enter an AI context, because captured SMS text from third parties also flows through this MCP. Do NOT ask the user to paste the key back to you, and do not attempt to read it another way — you do not need it. If you are writing code or config for the user, insert a placeholder such as BUSYSMS_API_KEY and tell them to paste the real value from revealUrl themselves. Give the key a descriptive name saying what will use it. The reveal link expires in 15 minutes and works once; if it lapses, create another key and revoke the unused one. Prefer the MCP tools over REST for your own calls — only create a key when the user needs external or scripted access. Requires sign-in; limited to a few keys per day.",
      "requiresAuth": true
    },
    {
      "name": "send_email_to_me",
      "description": "Email YOURSELF a message. Always delivered to the email address on your own BusySMS account — the recipient cannot be chosen. Requires sign-in and an email on your account.",
      "requiresAuth": true
    },
    {
      "name": "send_sms_to_me",
      "description": "Text YOURSELF a message. Always delivered to the phone number on your own BusySMS account — the recipient cannot be chosen. Requires sign-in and a phone on your account.",
      "requiresAuth": true
    }
  ]
}