On this page
What the MCP server gives an agent
BusySMS runs a remote MCP server at https://busysms.net/mcp over Streamable HTTP. Once connected, an agent can call tools that read your own verification codes. These matter most:
wait_for_code
Waits for the next code: about a minute by default, 90 seconds at most. It returns nothing rather than a stale code, because a used code costs a login attempt. Filters: phone, sender, service, deviceId.
get_latest_code
The newest code, checked once, with no waiting.
get_latest_sms
The newest SMS in full, for when the agent needs the whole text and not just the digits.
list_devices, diagnose_my_gateway
Which phones are enrolled, verified and online, and why codes may not be arriving.
test_my_gateway
Texts a test code to your own number and reports whether the phone forwarded it back.
The full list, including public tools that any assistant can call without an account, is on the MCP tools page and, machine-readable, at /.well-known/mcp.json.
Connect your agent
Sign-in is OAuth 2.1 with dynamic client registration: point the client at the URL, a browser window opens, you confirm with a code sent to your email (or to the phone on your account) and press Allow. There is no client ID or secret to paste.
claude mcp add --transport http busysms https://busysms.net/mcpcodex mcp add busysms --url https://busysms.net/mcp[mcp_servers.busysms]
url = "https://busysms.net/mcp"In the Claude app, open Customize → Connectors → + Add → Add custom connector, name it BusySMS and paste https://busysms.net/mcp. Other MCP clients, Grok included, add it as a remote HTTP server with the same URL. A client that cannot do OAuth can send a bsk_live_ API key as a Bearer token instead.
A typical agent flow
- 1
Start the sign-in
The agent fills in the login form or calls the service, and the service texts a code to your number.
- 2
Wait for the code
It calls
wait_for_codestraight away, passingphoneorsenderwhen you have several numbers. - 3
Use the code
It types the code in and carries on. If nothing arrives, it gets nothing back and can retry or ask you, instead of guessing.
A prompt as plain as this works with any connected agent:
Sign in to staging.example.com as +44 7700 900123.
When the site asks for the SMS code, call BusySMS wait_for_code
with phone 447700900123, enter the code, and tell me when you are in.Several numbers, shared numbers, and when codes do not come
With more than one number on your account, or a number a teammate has shared with you, "the next code" is ambiguous. Pass phone with the receiving number so a code for another sign-in on another number is not returned, or sender with part of the sender's name. Shared numbers work like your own: once you accept a share, the code tools include its new codes.
If codes are not arriving at all, ask the agent to run diagnose_my_gateway: it compares what is enrolled, verified and online and suggests the next step. test_my_gateway goes further and proves the whole path end to end. Let the agent ask you first, because it sends a real SMS to your number.
Safety built into the tools
- Your phones only. Every tool is scoped to your account and to numbers shared with you. An agent cannot read anyone else's messages.
- No secret in the transcript.
create_api_keymakes a REST key but never returns it: you get a one-time link, valid for 15 minutes, that you open yourself. SMS text can carry instructions written by a stranger, so a long-lived key must never enter the agent's context. - Changes need a signed-in session. Tools that change things, such as testing your gateway, sharing a number or revoking a key, cannot be used with an API key at all.
- Messages to yourself only.
send_sms_to_meandsend_email_to_mehave no recipient argument; they can only reach the number and address on your own account.
What the agent needs on your side
- A phone with the SIM: Android with the BusySMS app, or an iPhone with a Shortcuts automation.
- The number verified in BusySMS.
- An active trial or subscription. Without one, code-reading tools return a billing error, while
list_deviceskeeps working so the agent can tell you why.
No account yet?
The public tools answer product questions without signing in (pricing, setup steps, device requirements, troubleshooting), so an assistant can tell you accurately what BusySMS does before you sign up. Reading codes needs an account: $5 per verified number per month after a 7-day free trial.
FAQ
Frequently asked questions
Is there an MCP server for SMS?
Yes. BusySMS runs one at https://busysms.net/mcp that reads verification codes received on phones you own. It does not send SMS and does not provide numbers.
Which AI clients work with it?
Any MCP client that supports remote HTTP servers: the Claude app, Claude Code, OpenAI Codex CLI, Grok and others.
Can the agent read all my messages?
Only what BusySMS captures: every text from an Android SIM set to Sync all texts (you choose at setup), and verification-style messages from the rest. Code tools return only codes, and the tools reach only your own numbers and numbers shared with you, which show codes only.
Can I connect without OAuth?
Yes: send a bsk_live_ API key as a Bearer token. Tools that change things stay unavailable to keys.
How long does wait_for_code wait?
60 seconds by default, up to 90 seconds. If nothing new arrives it returns no code, and the agent can call it again.
Does the agent ever see my API key?
No. If an agent creates a key for you, it gets a one-time link instead of the secret, and you collect the key yourself in your browser.
Blog
More from the blog
All articlesKeep reading
Related guides
All guidesAutomate OTP in tests
Automate SMS two-factor codes in Playwright, Selenium, Cypress and plain scripts by waiting for the code over the API.
Read the guideSMS gateway API
The receive-side API reference: authentication, endpoints, the response shape, errors, and curl, Node.js and Python code.
Read the guideForward SMS codes from iPhone
Forward verification codes from an iPhone to your computer, Chrome and API with one Shortcuts automation.
Read the guideTry it on a number you own
Install the app, verify your number and read your first code today. Every account starts with a 7-day free trial; after that it is $5 per verified number per month, and you can cancel any time.
