Wraps the Botcall API so Claude can provision real phone numbers, receive SMS messages, and extract verification codes through tool calls. Five tools cover the workflow: provision_number lets you request a number by area code, get_code long-polls for incoming messages and parses out the verification code, get_inbox retrieves message history, list_numbers shows what you've provisioned, and release_number cleans up when you're done. Useful when you need to automate signups or test SMS-based auth flows without manual phone access. Requires a Botcall API key and runs over stdio transport.
An MCP server that gives AI agents real phone numbers. Provision a number, receive SMS, and extract verification codes — all through tool calls.
Built for Claude Desktop, Claude Code, and any MCP-compatible client.
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"botcall": {
"command": "npx",
"args": ["-y", "botcall-mcp"],
"env": {
"BOTCALL_API_KEY": "bs_live_..."
}
}
}
}
claude mcp add botcall -- npx -y botcall-mcp
Then set your API key in the environment:
export BOTCALL_API_KEY="bs_live_..."
Any client that supports the MCP stdio transport works. Run npx botcall-mcp with BOTCALL_API_KEY set.
Sign up at botcall.io, pick a plan, and grab your key from Dashboard → API Keys.
provision_numberProvision a new phone number for receiving SMS.
| Parameter | Type | Description |
|---|---|---|
areaCode | string | Preferred area code, e.g. "206" (optional) |
country | string | ISO country code (default: "US") |
get_codeWait for an incoming SMS and extract the verification code. Long-polls until a message arrives or the timeout expires.
| Parameter | Type | Description |
|---|---|---|
timeout | number | Seconds to wait (default: 30, max: 30) |
numberId | string | Filter to a specific number (optional) |
get_inboxGet recent SMS messages received on your numbers.
| Parameter | Type | Description |
|---|---|---|
limit | number | Max messages to return (default: 10) |
numberId | string | Filter to a specific number (optional) |
list_numbersList all your provisioned phone numbers. No parameters.
release_numberRelease a phone number you no longer need.
| Parameter | Type | Description |
|---|---|---|
numberId | string | Required. The number ID to release |
get_usageGet your current plan, limits, and usage stats. No parameters.
You: Sign up for ExampleService using a phone number
Agent: I'll provision a number and handle the verification.
→ provision_number({ areaCode: "415" })
{ number: "+14155550123", id: "pn_abc123" }
→ [agent enters the number on ExampleService's signup page]
→ get_code({ numberId: "pn_abc123" })
Verification code: 847291
→ [agent enters 847291 to complete verification]
| Variable | Description |
|---|---|
BOTCALL_API_KEY | Required. Your API key from botcall.io |
BOTCALL_API_URL | API base URL (default: https://api.botcall.io) |
MIT
BOTCALL_API_KEY*secretYour botcall API key from botcall.io
io.github.ericm1018/skillfm-llm-cost-optimizer-openai-anthropic-usage
io.github.mikerawsonnz/llm-orchestration-agent
io.github.mikerawsonnz/authenticated-llm-agent
labforgedev/copilot-memory-mcp
csoai-org/agent-prompt-injection-firewall-mcp
io.github.mikerawsonnz/authenticated-multi-llm-agent