Open Beta

Phone infrastructure
for AI agents.

Control real Android cloud phones via REST API, MCP server, or Python SDK. Natural language in — real actions out.

100K tasks/day <5s median 4 regions
phonebase · agent-loop
How it works

Three steps to a working phone agent.

01
Submit an instruction

Send a natural language task via REST API, Python SDK, or MCP. Specify region and optional BYOK model credentials.

POST /v1/tasks
{"instruction": "..."}
02
Agent loop executes

PhoneBase captures screenshots, routes to the optimal vision model, and executes ADB actions — up to 15 steps with 120s circuit breaker.

screenshot → vision AI
→ tap / swipe / input
03
Retrieve the result

Poll for completion or stream events. Tasks persist for 24 hours with step count, duration, and full action log.

GET /v1/tasks/{id}
{"status": "completed"}
Integration

Any interface. One API.

# Create a task
curl -X POST https://api.phonebase.cloud/v1/tasks \
  -H "X-API-Key: pb_live_xxxxx" \
  -H "Content-Type: application/json" \
  -d '{"instruction": "Open TikTok, like the first video, follow the creator"}'

# → 202 Accepted
{ "task_id": "task_01jk...", "status": "pending" }

curl https://api.phonebase.cloud/v1/tasks/task_01jk... \
  -H "X-API-Key: pb_live_xxxxx"

{
  "status": "completed",
  "result": "Liked video and followed @creator.",
  "steps_taken": 6,
  "model": "gemini-2.5-flash"
}
from phonebase_client import PhoneBase

client = PhoneBase(api_key="pb_live_xxxxx")

result = client.run(
    instruction="Open WeChat, find Alice, send hello",
    region="us",
    timeout=300,
)

print(result["result"])
# "Message sent to Alice. Steps: 7, 4.2s"

# BYOK — use your own model key
result = client.run(
    instruction="Screenshot the current screen",
    byok_model="gpt-4o",
    byok_api_key="sk-...",
)
// ~/.claude/claude_desktop_config.json
{
  "mcpServers": {
    "phonebase": {
      "command": "python",
      "args": ["-m", "phonebase.mcp.server"],
      "env": { "LLM_API_KEY": "pb_live_xxxxx" }
    }
  }
}

// run_phone_task(instruction, region?, byok_model?)
// take_phone_screenshot(region?)
// Claude calls run_phone_task automatically.
Capabilities

Built for production AI workflows.

Tiered AI routing

Routes tasks to Gemini Flash, GPT-4o, or Gemini Pro based on complexity — optimizing cost and latency automatically. ~$0.018 per task average.

MCP native

First-class MCP server with run_phone_task and take_screenshot. Works with Claude Desktop and Cursor out of the box.

Mock mode

Build and test without real cloud phones. Mock devices return synthetic screenshots and simulate all ADB interactions locally.

Multi-region

Allocate sessions in US, Singapore, Japan, or EU. Each phone binds to a residential IP in your target region for authentic local app behavior.

BYOK support

Override model routing with your own API key on any task. Compatible with any OpenAI-format endpoint, including locally hosted models.

Circuit breaker & audit trail

Hard limits of 15 steps and 120s prevent runaway agents. All tasks include step count, duration, model used, and a full action log.

Pricing

Simple, usage-based pricing.

Starter
$0
/month
  • 100 tasks / month
  • US region only
  • REST API access
  • Mock mode
  • Community support
Start free
Recommended
Pro
$49
/month
  • 5,000 tasks / month
  • All 4 regions
  • MCP server access
  • BYOK support
  • Priority queue
  • Email support
Get started →
Enterprise
Custom
  • Unlimited tasks
  • Dedicated device fleet
  • Custom regions + SLA
  • SSO / SAML
  • Dedicated Slack
  • On-prem option
Contact us
Get started

Your first 100 tasks are on us.

No credit card required. Start building with mock mode in minutes — no real phone needed.

Used by AI teams building production phone automation workflows.