app_biometric
This tool on every surface: CLI · MCP · Python · JavaScript · Go · Java · .NET
Biometrics on an emulator or simulator: read whether a face or finger is enrolled, enroll or unenroll one, and present a matching (match) or non-matching (nomatch) one to a prompt that is up. An iOS simulator is a Face ID or a Touch ID model, by its device type; an Android emulator has a fingerprint, and enrolling walks Settings' own enrollment — setting a PIN of 1111 first when the emulator has no screen lock, since Android enrolls none without one; unenroll removes both. match and nomatch report what the device made of it, read back: accepted, not recognized, failed (the prompt gave up) or locked out — and are refused when no prompt or lock screen is asking, rather than sent to nothing. Whether the app signed in is the app's to show: check the screen after. A real phone refuses — nothing outside it can present a finger or a face.
Changes the device, the app or the session: readOnlyHint is false.
Arguments
| Name | Type | Required | What it is |
|---|---|---|---|
action | string: status, enroll, unenroll, match, nomatch | status (the default) reads; enroll and unenroll set the enrollment; match and nomatch present a face or finger to the prompt | |
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). |
Examples
Each is the arguments of a tools/call request; the first is shown whole.
Enroll a face or a finger
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "app_biometric",
"arguments": {
"action": "enroll"
}
}
}
Present a matching one to the prompt that is up
{
"action": "match"
}