app_fill
This tool on every surface: CLI · MCP · Python · JavaScript · Go · Java · .NET
Clear a specific element and type text into it, replacing what it held — Vibium's fill; app_type adds to it instead. Located, checked and typed as app_type is; not on Android's uiautomator dump driver. On a slider, text is a position from 0 (the start of its track) to 1 (the end), and the result is the value the slider then reports, as map shows it. On Android the track is touched at the position and the slider lands there; on iOS the thumb is moved as a finger would move it: from either end it lands exactly, from partway it can land a step past, so to land exactly there, fill 0 or 1 first.
Changes the device, the app or the session: readOnlyHint is false.
Arguments
| Name | Type | Required | What it is |
|---|---|---|---|
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). | |
target | string | yes | A ref from app_map ("@e3") or a locator ("testid=search"). |
text | string | yes | The text the field should hold. An empty string clears it. For a slider, its position from 0 to 1. |
Examples
Each is the arguments of a tools/call request; the first is shown whole.
Replace what a field holds
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "app_fill",
"arguments": {
"target": "testid=search",
"text": "coffee"
}
}
}
Move a slider to a position
{
"target": "label=Volume",
"text": "0.3"
}
On an Android 15 emulator the answer's text was:
moved label=Volume to position 0.3 — it reads "3.0", was "5.0"
On a device

mobium fill testid=username mobium on an Android 15 emulator