io.github.callstack/agent-device · version 0.21.36 · 658,150 weekly npm downloads · audited 2026-11-03
Notes
No hidden-instruction or invisible-character findings in any tool, prompt, or resource description.
Checks the directory's published tool requirements that are visible from tools/list. Passing them does not guarantee acceptance.
| Name | Title | Hint | Description |
|---|---|---|---|
action-button | none | Press the iPhone or iPad Action Button once. The press is dispatched without activating the session app and nothing is re-observed afterwards, so the app keeps the state the press found. What the system does with the pre… | |
alert | none | Inspect, wait for, accept, or dismiss a platform alert. Use get before acting when the alert content matters; accept and dismiss change the active alert state. Each iOS XCTest execution activates once, then only observes… | |
app-switcher | none | Open the device app switcher to inspect or change foreground apps. This changes the visible system UI and may move focus away from the current app. Times out after 90s. | |
apps | none | List the apps installed on the selected device. Include system or OEM apps only when they are needed as automation targets. Times out after 90s. | |
appstate | none | Show foreground app/activity (Android and HarmonyOS; iOS and macOS answer per session) Times out after 90s. | |
artifacts | none | List daemon or cloud provider artifacts for an active or completed session. Times out after 90s. | |
audio | none | Measure browser or host-rendered simulator/emulator audio as compact dBFS buckets. Start a probe before requesting its status or stopping it. Times out after 90s. | |
back | none | Navigate back in the app or through system navigation. Use in-app for the app navigation stack and system when the platform back behavior is required. On iOS, a single-screen iPhone or an iPad whose app provably fills it… | |
batch | none | Execute multiple commands in one daemon request. Times out after 90s. | |
boot | none | Boot or prepare the selected device or simulator so later commands can target it. The device is chosen through the device-selection inputs, not by naming it here. Times out after 90s; a caller-supplied budget extends it. | |
capabilities | none | List the commands supported by the selected device or active session. Use device-selection inputs when checking support before a session is open. Times out after 90s. | |
click | none | Activate a UI target by snapshot ref, selector, or coordinates. Prefer a ref or selector after a snapshot; use coordinates only when semantic targeting is unavailable. This can change app state. Success means the click w… | |
clipboard | none | Read the current device clipboard text, or replace its contents with the given text. Android runs both through the clipboard service shell command, and a build that implements none (Android 16 does not) refuses with UNSU… | |
close | none | Close the named app, or close the active session app when app is omitted. If the session booted a local simulator or emulator, add shutdown when you finish, unless the user asks to keep it running; close alone never stop… | |
debug | none | Symbolicate Apple crash artifacts with matching dSYM UUIDs. This debug namespace is intentionally narrow: use logs for app logs, network for HTTP evidence, perf for performance samples, record/trace for media and traces,… | |
devices | none | List available devices and simulators that can be selected for automation. Use platform, device, udid, or serial inputs on later commands to target one result. Times out after 90s. | |
diff | none | Compare accessibility snapshots or screenshots to identify UI changes. Use snapshot comparisons for semantic tree changes and screenshot comparisons for pixel differences. Times out after 90s. | |
doctor | none | Diagnose device, app, development-server, and React Native or Expo readiness issues. Returns compact evidence for local inventory, sessions, optional app discovery, toolchains, and server reachability. On iOS simulators … | |
events | none | Read the daemon-owned session event timeline as paged JSON-friendly entries Times out after 90s. | |
fill | none | Replace text in a UI input selected by snapshot ref, selector, or coordinates. Pass an empty text to clear the field. Inspect unconfirmed evidence and assert the expected value or resulting screen before continuing. Pref… | |
find | none | Find by text/label/value/role/id and run action; the action defaults to click. The role locator matches snapshot kind vocabulary (button, text, text-field, switch, ...); pre-reconciliation leaf spellings (statictext, edi… | |
focus | none | Move input focus to explicit screen coordinates without entering text. Prefer semantic interactions when a snapshot ref or selector is available; use type or fill after focus. Times out after 90s. | |
fold | none | Fold or unfold a foldable iPhone simulator (iPhone Duo) or a foldable Android emulator into the closed, half-open, or open pose. iOS sends a simulator HID hinge event, then reads the hinge angle back inside the simulator… | |
gesture | none | Perform a structured pan, fling, swipe, pinch, rotate, transform, tap, or drag gesture. Select the gesture kind, then provide only the inputs that apply to that kind. A tap touches 2 to 5 points at once; repeat it with c… | |
get | none | Read text or accessibility attributes from a snapshot ref or selector without changing the app. Use format text for visible content or attrs for the element attribute map. Times out after 90s. | |
hardware-button | none | Press a phone hardware button once: volume-up, volume-down, power, mute, sleep, wake, media-play-pause, media-next, media-previous, media-rewind, or media-fast-forward. The press is dispatched without activating the sess… | |
home | none | Send the selected device to its home screen. This leaves the app session open but moves the foreground away from the app. Times out after 90s. | |
hover | none | Move the pointer over a UI target by snapshot ref, selector, or coordinates without pressing, to reveal hover-gated UI such as row toolbars or menus. Web only; touch platforms have no hover state. Use settle to observe w… | |
install | none | Install an app binary from a local path. Provide an app identifier with the path when the target needs explicit app selection; use reinstall to replace an already installed app. Local Android and iOS install steps time o… | |
install-from-source | none | Install app builds from URLs, remote source specs, or CI artifacts resolved by a remote daemon. The command allows 600s, including up to 120s for the download; local Android and iOS install steps time out after 120s. Tim… | |
is | none | Check whether a selector satisfies a UI predicate such as visible, hidden, exists, absent, editable, selected, focused, or text. `absent` passes only when one readable, complete, settled, unscoped, full-depth accessibili… | |
keyboard | none | Inspect Android keyboard visibility/type or press/dismiss the device keyboard. To hide the keyboard, use keyboard dismiss. It taps the keyboard dismiss/hide key when one is exposed, verifies the keyboard closed, and repo… | |
logs | none | Session app log info, start/stop streaming, diagnostics, and markers Times out after 90s. | |
longpress | none | Hold a UI target by snapshot ref, selector, or coordinates to open a context menu or perform another hold gesture. Set durationMs when the default hold duration is unsuitable. Times out after 320s; a caller-supplied budg… | |
metro | none | Prepare a React Native development server or ask connected apps to reload, using the development server this session is bound to. Provide explicit runtime inputs only to override that binding for one call. The binding is… | |
network | none | Dump recent HTTP(s) traffic parsed from the session app log Times out after 90s. | |
open | none | Boot the selected device when needed, then open an app, deep link, or URL in a session. Use the app or URL inputs to choose what becomes the foreground automation target. metroHost, metroPort, and bundleUrl choose the ap… | |
orientation | none | Set device orientation on iOS and Android. auto hands rotation back to the sensor on ADB-backed Android (local and Limrun); other backends refuse it. A foldable iPhone simulator (iPhone Duo) refuses portrait-upside-down,… | |
perf | none | Collect frame health, memory diagnostics, and platform profiling artifacts with compact agent-readable summaries. For CPU profiles, start and stop write the raw artifact while report writes a compact summary; request the… | |
press | none | Short-press a UI target by snapshot ref, selector, or coordinates. Use longpress instead when the target requires a context-menu or hold gesture. Success means the press was dispatched, not that it landed: use settle or … | |
push | none | Deliver push notification payloads to an installed app. Times out after 90s. | |
react-native | none | Run supported React Native automation helpers. Use dismiss-overlay to close a visible development error overlay before continuing normal UI automation. Times out after 90s. | |
record | none | Start or stop a screen recording for the active app session or, where supported, the selected device, or build a contact-sheet PNG from a recording already exported. Long Android recordings can return multiple video arti… | |
reinstall | none | Replace an installed app with a binary from a local path. Use this when preserving the same app identity while installing a new build on the selected device. Local Android and iOS install steps time out after 120s; the c… | |
replay | none | Run a recorded automation script, including compatible Maestro YAML flows. A script without a terminal close leaves its session active for subsequent automation. Times out after 90s; a caller-supplied budget extends it. | |
screenshot | none | Capture a screenshot of the active app or web session. Choose the capture scope, density, size, or annotations through the corresponding input fields when needed. Times out after 90s. | |
scroll | none | Scroll in a direction, or toward the top/bottom edge of scrollable content. Set until to a selector to reach an off-screen target in one command rather than a scroll-and-check loop. The optional amount is the finger-path… | |
session | none | List active sessions, print the effective daemon state directory, or publish an armed open-to-destination script without closing its session Times out after 90s. | |
settings | none | Read or change supported operating-system settings, animation scales, appearance, or app permissions on the selected target. Platform support varies by setting and action. Times out after 90s. | |
shutdown | none | Shutdown a selected simulator or emulator. Times out after 90s. | |
snapshot | none | Capture the accessibility tree or compare it with the previous session baseline. Use the returned refs for subsequent semantic interactions and the diff option to verify UI changes. Times out after 90s; a caller-supplied… | |
swipe | none | Quick coordinate fling with optional repeat pattern. Times out after 90s. | |
telephony | none | Simulate an incoming phone call or SMS on an Android emulator through its console over adb: call rings from the number, accept answers, cancel ends the call, and sms delivers a text message. The call screen or notificati… | |
test | none | Run one or more replay scripts as a serial test suite Streams progress; no fixed client timeout. | |
trace | none | Start or stop trace-log capture and return the resulting artifact when capture ends. Without a path, start writes a timestamped trace log named after the session in the sessions directory of the daemon state; a path on s… | |
trigger-app-event | none | Ask the app to handle an app-defined automation or test event, with an optional structured payload. Call this only for event names and payload shapes the app documents. Times out after 90s. | |
tv-remote | none | Press or long-press a TV remote button on Android TV, tvOS, or Vega OS. Android TV also supports volume, power, media, channel, guide, captions, input, color keys, and android-keycode:N. tvOS and Vega OS support up, down… | |
type | none | Append text to the currently focused input. Use fill when the existing field value should be replaced, and focus first when no input is active. Times out after 90s. | |
uninstall | none | Remove an installed app from the selected device. A package name or bundle id that is not installed succeeds with wasInstalled: false. The command allows 480s including device startup. Times out after 480s. | |
viewport | none | Resize the active web viewport before taking snapshots or screenshots. Useful for fixed-layout or 100vh apps where changing the viewport reveals different content. Times out after 90s. | |
wait | none | Wait for a duration, text, snapshot ref, selector to appear, selector to be strictly absent, or stable UI. Use the strict absence target when zero selector matches are required; stable waits until the UI stays quiet for … | |
help | none | Usage guides. No topic: the root decision card. topic = one of commands, manual-qa, maestro, workflow, scripting, gestures, tv, debugging, react-devtools, cdp, react-native, physical-device, ios-system-ui, foldable, remo… |
npx mcpvetter scan --liveAdd this to a README:
[](https://mcpvetter.com/servers/agent-device)Get the MCPVetter verified badge, a re-audit within 24 hours of every npm release, and an email whenever tools, findings, or Claude directory readiness change. $29 per server per month. You prove ownership first, free.