New mobilerun VA is now in beta, a hosted 24/7 agent for mobile automation
Agents & MCP

An agent that taps, types and reads.

mobilerun runs an agent on a real phone that taps, types and reads any app. Pick the model that drives it per task: mobile-agent-fast, mobile-agent-thinking, or a Claude, Gemini, GPT or Kimi model. One API call runs the task.

run one API call
model per task
reads a11y tree
connect hosted MCP
Capabilities

One call, a real run.

Capability What it does In the API
Run a task One API call drives the app: client.tasks.run({ deviceId, task }). Toggle reasoning, vision, maxSteps and stealth per call. client.tasks.run
Structured output Pass an outputSchema and the agent returns typed JSON, not a screenshot for you to parse. The task hands back the data you asked for. outputSchema → JSON
Reads the screen The agent reads the accessibility tree, not just pixels. Fewer tokens and cleaner steps than a vision-only run, with vision still there when a screen needs it. a11y tree
Pick the model Pick the model per task with llmModel: mobile-agent-fast, mobile-agent-thinking, or a Claude, Gemini, GPT or Kimi model. Usage is billed from your credits, no provider key needed. llmModel
One call

One sentence in, a real run out.

No flow to build, no selectors to maintain. Post the task, pick the model, get the run back. Attach to it for the live trajectory.

agent.ts
import Mobilerun from '@mobilerun/sdk'

const client = new Mobilerun()          // reads MOBILERUN_CLOUD_API_KEY

const task = await client.tasks.run({
  deviceId: 'dev_...',
  task: 'Open DoorDash and reorder my usual',
})

console.log(task.status)                // 'queued', poll tasks.getStatus(task.id)
What it sees

It screenshots when it needs to look.

The agent reads the accessibility tree first, so most steps stay fast and cheap. When a screen needs eyes it takes a screenshot, and every shot is pinned to the step that produced it. Watch it live, or replay the whole run after.

Live view

  • Attach to a running task and watch the device in real time
  • Every step streams a screenshot as the agent takes it
  • Step in by hand with tap, type and swipe when you need to

Step trajectory

  • Each step is an event: queued, screenshot, tool call, result
  • Click a step to see exactly what the agent saw and did
  • No more guessing why a run failed on step 47

Replay & history

  • Turn on recordingEnabled to keep a video of the whole run
  • Screenshots, tool calls and typed output, kept as an audit trail
  • See full observability →
watch.ts
import { TaskTrajectoryDecoderStream } from '@mobilerun/sdk/lib/trajectory-decoder-stream'

const res = await client.tasks.attach(task.id).asResponse()   // live SSE
const events = res.body!
  .pipeThrough(new TextDecoderStream())
  .pipeThrough(new TaskTrajectoryDecoderStream())
  .getReader()

while (true) {
  const { done, value } = await events.read()
  if (done) break
  if (value.event === 'ScreenshotEvent') {
    save((value.data as { url: string }).url)   // what the agent just saw
  }
}

Pick the model, per task

  • mobile-agent-fast for quick, repeatable taps and reads
  • mobile-agent-thinking when a flow needs a plan before it acts
  • Or pick a Claude, Gemini, GPT or Kimi model instead
  • Every model drives real apps on a real device, step by step

Same agent, in your editor

  • A hosted MCP server plugs the agent into Claude Code, Cursor and VS Code
  • Remote MCP at api.mobilerun.ai/v1/mcp, authorized with a Bearer key
  • Same runtime, same real devices, from the tools you already use
  • No local daemon to babysit, no setup to keep alive
FAQ

Agents, common questions.

Which model drives the agent?+
You pick one per task with llmModel: mobile-agent-fast, mobile-agent-thinking, or a Claude, Gemini, GPT or Kimi model. GET /v1/models lists the models your account can use. Usage is billed from your credits, so you need no provider key.
How does one task run?+
One API call: client.tasks.run({ deviceId, task }). Set reasoning, vision, maxSteps and stealth as options. Pass an outputSchema and you get typed JSON back instead of a screenshot to parse. From Claude Code, Cursor or VS Code, the hosted MCP server runs the same agent.
How is agent usage billed?+
Agent runs use credits: model usage is deducted in real time. Plans include 500 credits ($5) on Free up to 10,000 credits ($100) on Scaleup, then $0.01 per credit on paid plans. The phone is billed separately: device minutes come from your plan's pooled allowance, and dedicated phones are add-ons with their own monthly price.

Also on the platform: real devices · observability · the framework · plans and credits

Give your agent a phone.

One API call runs the task on a real device, driven by the model you pick. Plug the same agent into your editor over MCP.