app_call
This tool on every surface: CLI · MCP · Python · JavaScript · Go · Java · .NET
Simulate an incoming call: "ring", then "accept" or "hang". Interruption is where mobile apps fail and desktop software does not — a call mid-form, state lost on resume, a callback that never fires — and none of it can be provoked by tapping. Emulator only: a real phone cannot be made to ring from outside, which is a property of phones, and mobium says so rather than failing obscurely. Confirmed against the device's telephony state, not the console's acknowledgement. Discards the refs from the last app_map, since a call takes over the screen.
Changes the device, the app or the session: readOnlyHint is false.
Arguments
| Name | Type | Required | What it is |
|---|---|---|---|
action | string: ring, accept, hang | "ring" (default), "accept" or "hang". | |
device | string | Device serial to target, e.g. "emulator-5554". Omit when only one device is running. | |
driver | string: uiautomator2, uiautomator, wda | Driver to use: "uiautomator2" (default for Android; fast, installs a server APK on first use), "uiautomator" (Android, installs nothing, slower, cannot type), or "wda" (WebDriverAgent: iOS simulators and iPhones). | |
number | string | Calling number. Defaults to 5551234. |
Examples
Each is the arguments of a tools/call request; the first is shown whole.
Ring the device with an incoming call
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "app_call",
"arguments": {
"number": "5551234"
}
}
}
On an Android 15 emulator the answer's text was:
ringing a call from 5551234

mobium call --number 5551234 on an Android 15 emulator
Hang up
{
"action": "hang"
}
On an Android 15 emulator the answer's text was:
ended a call from 5551234