agent-device
NPM · AGENT-DEVICE · SCANNED OCT 5
MCP server for mobile app automation: verify, control, and debug iOS, Android, TV, and desktop apps
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security100
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- No install/post-install scripts declared.Pass
- No production dependencies, so there is no dependency health to assess. View diagnostics → Pass
Provenance & Transparency48
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 2 days ago).Pass
- Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability50
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 25604 tokens (~433/item across 59 items; 59 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management90
- Stability observed for 27 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage97
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 89% of tool parameters carry a description.Partial
- Structured output schemas are declared (53% of tools); any adoption earns full credit.Pass
Tool Safety75
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- 0 of 3 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "batch" implies "execute" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
- An AI judge read all 60 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
How do I install the agent-device MCP server?
agent-device runs locally as an npm package, launched with npx -y agent-device. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · agent-device
claude mcp add callstack-agent-device -- npx -y agent-device
{
"mcpServers": {
"callstack-agent-device": {
"command": "npx",
"args": [
"-y",
"agent-device"
]
}
}
} {
"servers": {
"callstack-agent-device": {
"command": "npx",
"args": [
"-y",
"agent-device"
]
}
}
} codex mcp add callstack-agent-device -- npx -y agent-device
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"callstack-agent-device": {
"type": "local",
"command": [
"npx",
"-y",
"agent-device"
],
"enabled": true
}
}
} openclaw mcp add callstack-agent-device --command npx --arg -y --arg agent-device
mcp_servers:
callstack-agent-device:
command: "npx"
args: ["-y", "agent-device"] {
"McpServers": {
"callstack-agent-device": {
"Transport": "stdio",
"Command": "npx",
"Arguments": [
"-y",
"agent-device"
]
}
}
} assistant mcp add callstack-agent-device -t stdio -c npx -a -y agent-device
{
"mcpServers": {
"callstack-agent-device": {
"command": "npx",
"args": [
"-y",
"agent-device"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 4 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.
- 1 Oct 26 +16
- Malware scan: unverified → pass ▲ security
- 30 Sept 26 −15
- Malware scan: pass → unverified ▼ security
- Package version: 0.21.15 → 0.21.18 functional
- 29 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 67 to 70. That category is still filling its 30-day observation window: 20 days of observed history at the previous scan, 21 at this one. The score rises as the window fills, whether or not the server changes.
- 28 Sept 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 27 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 60 to 63. That category is still filling its 30-day observation window: 18 days of observed history at the previous scan, 19 at this one. The score rises as the window fills, whether or not the server changes.
- 26 Sept 26 +11
- Known CVEs: unverified → pass ▲ security
- Dependency health: unverified → pass ▲ functional
- 25 Sept 26 −10
- Known CVEs: pass → unverified ▼ security
- Dependency health: pass → unverified ▼ functional
- Package version: 0.21.12 → 0.21.15 functional
- Package version: 0.21.12 → 0.21.14 functional
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 5 Oct 2026 · Analysed npm/agent-device@0.21.18
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | npm |
Background: How many MCP packages publish verified provenance →
Dependencies 0 packages
| Packages resolved | 0 |
|---|---|
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
action-button ~406
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 press is not observed by this command: Simulators run no Shortcuts or App Intents, so delivery to an assigned Shortcut is verifiable only on a physical iPhone. Times out after 90s.
| Name | Type | Req | Description |
|---|---|---|---|
| androidDeviceAllowlist | string | – | Android serial allowlist used for device resolution. |
| debug | boolean | – | Enable debug diagnostics. |
| device | string | – | Device name selector (a UDID belongs in udid, a serial in serial). |
| deviceTarget | string | – | Device target form. Maps to the CLI --target flag. |
| includeCost | boolean | – | Include per-command agent-cost (cost.wallClockMs, …) in structuredContent. Defaults to off; the default response shape is unchanged. |
| leaseId | string | – | Existing lease identifier. |
| mcpOutputFormat | string | – | MCP text content format. Defaults to optimized agent-friendly text; use json for JSON text. Structured content is always returned separately. |
| noRecord | boolean | – | Do not record this action. |
| platform | string | – | Platform selector used to resolve a device. |
| responseLevel | string | – | Response verbosity: token-cheap digest / default (today) / full. Defaults to default; the default response shape is unchanged. |
| runId | string | – | Lease run identifier. |
| serial | string | – | Android, HarmonyOS, or Vega VVD serial selector. |
| session | string | – | Agent-device session name. |
| target | string | – | Alias for deviceTarget on commands without a UI target field. Interaction commands reserve target for the UI element. |
| tenant | string | – | Remote tenant identifier. |
| udid | string | – | Apple device or simulator UDID; the selector that pins one device when several share a name. |
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | – |
| message | string | yes | – |
No examples provided.
alert ~401
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. Inspect again after an unconfirmed action; never assume a timeout means nothing happened. Times out after 90s.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | – | – |
| androidDeviceAllowlist | string | – | Android serial allowlist used for device resolution. |
| debug | boolean | – | Enable debug diagnostics. |
| device | string | – | Device name selector (a UDID belongs in udid, a serial in serial). |
| deviceTarget | string | – | Device target form. Maps to the CLI --target flag. |
| includeCost | boolean | – | Include per-command agent-cost (cost.wallClockMs, …) in structuredContent. Defaults to off; the default response shape is unchanged. |
| leaseId | string | – | Existing lease identifier. |
| mcpOutputFormat | string | – | MCP text content format. Defaults to optimized agent-friendly text; use json for JSON text. Structured content is always returned separately. |
| noRecord | boolean | – | Do not record this action. |
| platform | string | – | Platform selector used to resolve a device. |
| responseLevel | string | – | Response verbosity: token-cheap digest / default (today) / full. Defaults to default; the default response shape is unchanged. |
| runId | string | – | Lease run identifier. |
| serial | string | – | Android, HarmonyOS, or Vega VVD serial selector. |
| session | string | – | Agent-device session name. |
| target | string | – | Alias for deviceTarget on commands without a UI target field. Interaction commands reserve target for the UI element. |
| tenant | string | – | Remote tenant identifier. |
| timeoutMs | integer | – | – |
| udid | string | – | Apple device or simulator UDID; the selector that pins one device when several share a name. |
No output schema declared.
No examples provided.
app-switcher ~357
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.
| Name | Type | Req | Description |
|---|---|---|---|
| androidDeviceAllowlist | string | – | Android serial allowlist used for device resolution. |
| debug | boolean | – | Enable debug diagnostics. |
| device | string | – | Device name selector (a UDID belongs in udid, a serial in serial). |
| deviceTarget | string | – | Device target form. Maps to the CLI --target flag. |
| includeCost | boolean | – | Include per-command agent-cost (cost.wallClockMs, …) in structuredContent. Defaults to off; the default response shape is unchanged. |
| leaseId | string | – | Existing lease identifier. |
| mcpOutputFormat | string | – | MCP text content format. Defaults to optimized agent-friendly text; use json for JSON text. Structured content is always returned separately. |
| noRecord | boolean | – | Do not record this action. |
| platform | string | – | Platform selector used to resolve a device. |
| responseLevel | string | – | Response verbosity: token-cheap digest / default (today) / full. Defaults to default; the default response shape is unchanged. |
| runId | string | – | Lease run identifier. |
| serial | string | – | Android, HarmonyOS, or Vega VVD serial selector. |
| session | string | – | Agent-device session name. |
| target | string | – | Alias for deviceTarget on commands without a UI target field. Interaction commands reserve target for the UI element. |
| tenant | string | – | Remote tenant identifier. |
| udid | string | – | Apple device or simulator UDID; the selector that pins one device when several share a name. |
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | – |
| message | string | yes | – |
No examples provided.
apps ~359
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.
| Name | Type | Req | Description |
|---|---|---|---|
| androidDeviceAllowlist | string | – | Android serial allowlist used for device resolution. |
| appsFilter | string | – | Restrict the listing to user-installed apps, or include system and OEM apps. |
| debug | boolean | – | Enable debug diagnostics. |
| device | string | – | Device name selector (a UDID belongs in udid, a serial in serial). |
| deviceTarget | string | – | Device target form. Maps to the CLI --target flag. |
| includeCost | boolean | – | Include per-command agent-cost (cost.wallClockMs, …) in structuredContent. Defaults to off; the default response shape is unchanged. |
| leaseId | string | – | Existing lease identifier. |
| mcpOutputFormat | string | – | MCP text content format. Defaults to optimized agent-friendly text; use json for JSON text. Structured content is always returned separately. |
| platform | string | – | Platform selector used to resolve a device. |
| responseLevel | string | – | Response verbosity: token-cheap digest / default (today) / full. Defaults to default; the default response shape is unchanged. |
| runId | string | – | Lease run identifier. |
| serial | string | – | Android, HarmonyOS, or Vega VVD serial selector. |
| session | string | – | Agent-device session name. |
| target | string | – | Alias for deviceTarget on commands without a UI target field. Interaction commands reserve target for the UI element. |
| tenant | string | – | Remote tenant identifier. |
| udid | string | – | Apple device or simulator UDID; the selector that pins one device when several share a name. |
| Name | Type | Req | Description |
|---|---|---|---|
| apps | array | yes | – |
No examples provided.
appstate ~327
Show foreground app/activity (Android; iOS answers per command) Times out after 90s.
| Name | Type | Req | Description |
|---|---|---|---|
| androidDeviceAllowlist | string | – | Android serial allowlist used for device resolution. |
| debug | boolean | – | Enable debug diagnostics. |
| device | string | – | Device name selector (a UDID belongs in udid, a serial in serial). |
| deviceTarget | string | – | Device target form. Maps to the CLI --target flag. |
| includeCost | boolean | – | Include per-command agent-cost (cost.wallClockMs, …) in structuredContent. Defaults to off; the default response shape is unchanged. |
| leaseId | string | – | Existing lease identifier. |
| mcpOutputFormat | string | – | MCP text content format. Defaults to optimized agent-friendly text; use json for JSON text. Structured content is always returned separately. |
| platform | string | – | Platform selector used to resolve a device. |
| responseLevel | string | – | Response verbosity: token-cheap digest / default (today) / full. Defaults to default; the default response shape is unchanged. |
| runId | string | – | Lease run identifier. |
| serial | string | – | Android, HarmonyOS, or Vega VVD serial selector. |
| session | string | – | Agent-device session name. |
| target | string | – | Alias for deviceTarget on commands without a UI target field. Interaction commands reserve target for the UI element. |
| tenant | string | – | Remote tenant identifier. |
| udid | string | – | Apple device or simulator UDID; the selector that pins one device when several share a name. |
Structured output declared, but exposes no named fields.
No examples provided.
artifacts ~361
List daemon or cloud provider artifacts for an active or completed session. Times out after 90s.
| Name | Type | Req | Description |
|---|---|---|---|
| androidDeviceAllowlist | string | – | Android serial allowlist used for device resolution. |
| debug | boolean | – | Enable debug diagnostics. |
| device | string | – | Device name selector (a UDID belongs in udid, a serial in serial). |
| deviceTarget | string | – | Device target form. Maps to the CLI --target flag. |
| includeCost | boolean | – | Include per-command agent-cost (cost.wallClockMs, …) in structuredContent. Defaults to off; the default response shape is unchanged. |
| leaseId | string | – | Existing lease identifier. |
| mcpOutputFormat | string | – | MCP text content format. Defaults to optimized agent-friendly text; use json for JSON text. Structured content is always returned separately. |
| platform | string | – | Platform selector used to resolve a device. |
| provider | string | – | Cloud provider name, for example browserstack or aws-device-farm. |
| providerSessionId | string | – | Cloud provider session id or ARN. |
| responseLevel | string | – | Response verbosity: token-cheap digest / default (today) / full. Defaults to default; the default response shape is unchanged. |
| runId | string | – | Lease run identifier. |
| serial | string | – | Android, HarmonyOS, or Vega VVD serial selector. |
| session | string | – | Agent-device session name. |
| target | string | – | Alias for deviceTarget on commands without a UI target field. Interaction commands reserve target for the UI element. |
| tenant | string | – | Remote tenant identifier. |
| udid | string | – | Apple device or simulator UDID; the selector that pins one device when several share a name. |
No output schema declared.
No examples provided.
audio ~382
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.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | – | – |
| androidDeviceAllowlist | string | – | Android serial allowlist used for device resolution. |
| bucketMs | integer | – | Audio level bucket size in milliseconds. |
| debug | boolean | – | Enable debug diagnostics. |
| device | string | – | Device name selector (a UDID belongs in udid, a serial in serial). |
| deviceTarget | string | – | Device target form. Maps to the CLI --target flag. |
| durationMs | integer | – | Probe duration in milliseconds. |
| includeCost | boolean | – | Include per-command agent-cost (cost.wallClockMs, …) in structuredContent. Defaults to off; the default response shape is unchanged. |
| leaseId | string | – | Existing lease identifier. |
| mcpOutputFormat | string | – | MCP text content format. Defaults to optimized agent-friendly text; use json for JSON text. Structured content is always returned separately. |
| platform | string | – | Platform selector used to resolve a device. |
| probeAction | string | – | – |
| responseLevel | string | – | Response verbosity: token-cheap digest / default (today) / full. Defaults to default; the default response shape is unchanged. |
| runId | string | – | Lease run identifier. |
| serial | string | – | Android, HarmonyOS, or Vega VVD serial selector. |
| session | string | – | Agent-device session name. |
| target | string | – | Alias for deviceTarget on commands without a UI target field. Interaction commands reserve target for the UI element. |
| tenant | string | – | Remote tenant identifier. |
| udid | string | – | Apple device or simulator UDID; the selector that pins one device when several share a name. |
No output schema declared.
No examples provided.
back ~451
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. Times out after 90s; a caller-supplied budget extends it.
| Name | Type | Req | Description |
|---|---|---|---|
| androidDeviceAllowlist | string | – | Android serial allowlist used for device resolution. |
| debug | boolean | – | Enable debug diagnostics. |
| device | string | – | Device name selector (a UDID belongs in udid, a serial in serial). |
| deviceTarget | string | – | Device target form. Maps to the CLI --target flag. |
| includeCost | boolean | – | Include per-command agent-cost (cost.wallClockMs, …) in structuredContent. Defaults to off; the default response shape is unchanged. |
| leaseId | string | – | Existing lease identifier. |
| mcpOutputFormat | string | – | MCP text content format. Defaults to optimized agent-friendly text; use json for JSON text. Structured content is always returned separately. |
| mode | string | – | – |
| noRecord | boolean | – | Do not record this action. |
| platform | string | – | Platform selector used to resolve a device. |
| responseLevel | string | – | Response verbosity: token-cheap digest / default (today) / full. Defaults to default; the default response shape is unchanged. |
| runId | string | – | Lease run identifier. |
| serial | string | – | Android, HarmonyOS, or Vega VVD serial selector. |
| session | string | – | Agent-device session name. |
| settle | boolean | – | After the action, wait for the UI to go quiet and return the settled diff vs the pre-action tree in the same response. Best-effort; never fails the action. |
| settleQuietMs | integer | – | Settle: quiet window in milliseconds (default 500). |
| target | string | – | Alias for deviceTarget on commands without a UI target field. Interaction commands reserve target for the UI element. |
| tenant | string | – | Remote tenant identifier. |
| timeoutMs | integer | – | Settle: wait deadline in milliseconds (default 10000). |
| udid | string | – | Apple device or simulator UDID; the selector that pins one device when several share a name. |
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | – |
| message | string | yes | – |
| mode | string | yes | – |
| settle | object | – | – |
No examples provided.
batch ~387
Execute multiple commands in one daemon request. Times out after 90s.
| Name | Type | Req | Description |
|---|---|---|---|
| androidDeviceAllowlist | string | – | Android serial allowlist used for device resolution. |
| debug | boolean | – | Enable debug diagnostics. |
| device | string | – | Device name selector (a UDID belongs in udid, a serial in serial). |
| deviceTarget | string | – | Device target form. Maps to the CLI --target flag. |
| includeCost | boolean | – | Include per-command agent-cost (cost.wallClockMs, …) in structuredContent. Defaults to off; the default response shape is unchanged. |
| leaseId | string | – | Existing lease identifier. |
| maxSteps | integer | – | Maximum number of steps accepted for this batch. |
| mcpOutputFormat | string | – | MCP text content format. Defaults to optimized agent-friendly text; use json for JSON text. Structured content is always returned separately. |
| onError | string | – | Batch failure policy. |
| out | string | – | Optional output path for command artifacts. |
| platform | string | – | Platform selector used to resolve a device. |
| responseLevel | string | – | Response verbosity: token-cheap digest / default (today) / full. Defaults to default; the default response shape is unchanged. |
| runId | string | – | Lease run identifier. |
| serial | string | – | Android, HarmonyOS, or Vega VVD serial selector. |
| session | string | – | Agent-device session name. |
| steps | array | yes | Structured batch steps. Each step uses a command name and the same input object as that command tool. |
| target | string | – | Alias for deviceTarget on commands without a UI target field. Interaction commands reserve target for the UI element. |
| tenant | string | – | Remote tenant identifier. |
| udid | string | – | Apple device or simulator UDID; the selector that pins one device when several share a name. |
No output schema declared.
No examples provided.
boot ~413
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.
| Name | Type | Req | Description |
|---|---|---|---|
| androidDeviceAllowlist | string | – | Android serial allowlist used for device resolution. |
| debug | boolean | – | Enable debug diagnostics. |
| device | string | – | Device name selector (a UDID belongs in udid, a serial in serial). |
| deviceTarget | string | – | Device target form. Maps to the CLI --target flag. |
| headless | boolean | – | Boot without showing simulator UI when supported. |
| includeCost | boolean | – | Include per-command agent-cost (cost.wallClockMs, …) in structuredContent. Defaults to off; the default response shape is unchanged. |
| leaseId | string | – | Existing lease identifier. |
| mcpOutputFormat | string | – | MCP text content format. Defaults to optimized agent-friendly text; use json for JSON text. Structured content is always returned separately. |
| platform | string | – | Platform selector used to resolve a device. |
| responseLevel | string | – | Response verbosity: token-cheap digest / default (today) / full. Defaults to default; the default response shape is unchanged. |
| runId | string | – | Lease run identifier. |
| serial | string | – | Android, HarmonyOS, or Vega VVD serial selector. |
| session | string | – | Agent-device session name. |
| target | string | – | Alias for deviceTarget on commands without a UI target field. Interaction commands reserve target for the UI element. |
| tenant | string | – | Remote tenant identifier. |
| timeoutMs | integer | – | Startup budget in milliseconds. Bounds the boot wait, so a never-booted Simulator can finish its first-boot migration or a cold emulator its boot; omit for the default startup behavior. |
| udid | string | – | Apple device or simulator UDID; the selector that pins one device when several share a name. |
| Name | Type | Req | Description |
|---|---|---|---|
| booted | boolean | yes | – |
| device | string | yes | Human-readable device name. |
| id | string | yes | Stable device id. |
| kind | string | yes | – |
| platform | string | yes | – |
| target | string | yes | – |
No examples provided.
capabilities ~338
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.
| Name | Type | Req | Description |
|---|---|---|---|
| androidDeviceAllowlist | string | – | Android serial allowlist used for device resolution. |
| debug | boolean | – | Enable debug diagnostics. |
| device | string | – | Device name selector (a UDID belongs in udid, a serial in serial). |
| deviceTarget | string | – | Device target form. Maps to the CLI --target flag. |
| includeCost | boolean | – | Include per-command agent-cost (cost.wallClockMs, …) in structuredContent. Defaults to off; the default response shape is unchanged. |
| leaseId | string | – | Existing lease identifier. |
| mcpOutputFormat | string | – | MCP text content format. Defaults to optimized agent-friendly text; use json for JSON text. Structured content is always returned separately. |
| platform | string | – | Platform selector used to resolve a device. |
| responseLevel | string | – | Response verbosity: token-cheap digest / default (today) / full. Defaults to default; the default response shape is unchanged. |
| runId | string | – | Lease run identifier. |
| serial | string | – | Android, HarmonyOS, or Vega VVD serial selector. |
| session | string | – | Agent-device session name. |
| target | string | – | Alias for deviceTarget on commands without a UI target field. Interaction commands reserve target for the UI element. |
| tenant | string | – | Remote tenant identifier. |
| udid | string | – | Apple device or simulator UDID; the selector that pins one device when several share a name. |
No output schema declared.
No examples provided.
click ~609
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; use settle or verify to confirm the result without a follow-up snapshot. Times out after 90s; a caller-supplied budget extends it.
| Name | Type | Req | Description |
|---|---|---|---|
| androidDeviceAllowlist | string | – | Android serial allowlist used for device resolution. |
| button | string | – | Pointer button for platforms that support mouse buttons. |
| count | integer | – | Number of press/click repetitions. |
| debug | boolean | – | Enable debug diagnostics. |
| depth | integer | – | Snapshot traversal depth. |
| device | string | – | Device name selector (a UDID belongs in udid, a serial in serial). |
| deviceTarget | string | – | Device target form. Maps to the CLI --target flag. |
| doubleTap | boolean | – | Request a double-tap action. |
| holdMs | integer | – | Hold duration for each action. |
| includeCost | boolean | – | Include per-command agent-cost (cost.wallClockMs, …) in structuredContent. Defaults to off; the default response shape is unchanged. |
| intervalMs | integer | – | Delay between repeated press/click actions. |
| jitterPx | integer | – | Randomization radius in pixels. |
| leaseId | string | – | Existing lease identifier. |
| mcpOutputFormat | string | – | MCP text content format. Defaults to optimized agent-friendly text; use json for JSON text. Structured content is always returned separately. |
| noRecord | boolean | – | Do not record this action. |
| platform | string | – | Platform selector used to resolve a device. |
| raw | boolean | – | Use raw snapshot data during selector resolution. |
| responseLevel | string | – | Response verbosity: token-cheap digest / default (today) / full. Defaults to default; the default response shape is unchanged. |
| runId | string | – | Lease run identifier. |
| scope | string | – | Snapshot scope selector used before resolution. |
| serial | string | – | Android, HarmonyOS, or Vega VVD serial selector. |
| session | string | – | Agent-device session name. |
| settle | boolean | – | After the action, wait for the UI to go quiet and return the settled diff vs the pre-action tree in the same response. Best-effort; never fails the action. |
| settleQuietMs | integer | – | Settle: quiet window in milliseconds (default 500). |
| target | – | yes | UI target. This is separate from deviceTarget, which selects the device form. |
| tenant | string | – | Remote tenant identifier. |
| timeoutMs | integer | – | Settle: wait deadline in milliseconds (default 10000). |
| udid | string | – | Apple device or simulator UDID; the selector that pins one device when several share a name. |
| verify | boolean | – | Capture cheap post-action evidence (AX digest, node counts, changedFromBefore) instead of a follow-up snapshot. |
| Name | Type | Req | Description |
|---|---|---|---|
| button | string | – | – |
| cost | object | – | – |
| count | number | – | Number of press/click repetitions. |
| doubleTap | boolean | – | Whether the command requested a double-tap action. |
| evidence | object | – | – |
| hint | string | – | – |
| holdMs | number | – | Hold duration for each action. |
| intervalMs | number | – | Delay between repeated press/click actions. |
| jitterPx | number | – | Randomization radius in pixels. |
| maestroFallbackReason | string | – | – |
| maestroNonHittableCoordinateFallbackAllowed | boolean | – | Whether the direct iOS Maestro coordinate fallback was allowed for this selector. |
| maestroNonHittableCoordinateFallbackUsed | boolean | – | Whether the direct iOS Maestro coordinate fallback was actually used. |
| message | string | – | – |
| ref | string | – | Snapshot ref without the @ prefix when the target was an @ref. |
| refLabel | string | – | – |
| referenceHeight | number | – | Reference frame height for visualizing the interaction point. |
| referenceWidth | number | – | Reference frame width for visualizing the interaction point. |
| resolution | object | – | Pre-action disclosure of how the acting path resolved its target. Absent when resolutionDisclosure is inapplicable for the path. |
| selector | string | – | Selector expression when the target was a selector. |
| selectorChain | array | – | – |
| settle | object | – | – |
| targetHittable | boolean | – | – |
| targetKind | string | yes | Resolved interaction target kind. |
| warning | string | – | – |
| x | number | – | Resolved interaction x coordinate when available. |
| y | number | – | Resolved interaction y coordinate when available. |
No examples provided.
clipboard ~392
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 UNSUPPORTED_OPERATION rather than reporting an empty clipboard. Times out after 90s.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | – |
| androidDeviceAllowlist | string | – | Android serial allowlist used for device resolution. |
| debug | boolean | – | Enable debug diagnostics. |
| device | string | – | Device name selector (a UDID belongs in udid, a serial in serial). |
| deviceTarget | string | – | Device target form. Maps to the CLI --target flag. |
| includeCost | boolean | – | Include per-command agent-cost (cost.wallClockMs, …) in structuredContent. Defaults to off; the default response shape is unchanged. |
| leaseId | string | – | Existing lease identifier. |
| mcpOutputFormat | string | – | MCP text content format. Defaults to optimized agent-friendly text; use json for JSON text. Structured content is always returned separately. |
| noRecord | boolean | – | Do not record this action. |
| platform | string | – | Platform selector used to resolve a device. |
| responseLevel | string | – | Response verbosity: token-cheap digest / default (today) / full. Defaults to default; the default response shape is unchanged. |
| runId | string | – | Lease run identifier. |
| serial | string | – | Android, HarmonyOS, or Vega VVD serial selector. |
| session | string | – | Agent-device session name. |
| target | string | – | Alias for deviceTarget on commands without a UI target field. Interaction commands reserve target for the UI element. |
| tenant | string | – | Remote tenant identifier. |
| text | string | – | – |
| udid | string | – | Apple device or simulator UDID; the selector that pins one device when several share a name. |
Structured output declared, but exposes no named fields.
No examples provided.
close ~408
Close the named app, or close the active session app when app is omitted. Use shutdown only when the selected simulator or emulator should also stop. Times out after 90s.
| Name | Type | Req | Description |
|---|---|---|---|
| androidDeviceAllowlist | string | – | Android serial allowlist used for device resolution. |
| app | string | – | Optional app to close. |
| debug | boolean | – | Enable debug diagnostics. |
| device | string | – | Device name selector (a UDID belongs in udid, a serial in serial). |
| deviceTarget | string | – | Device target form. Maps to the CLI --target flag. |
| force | boolean | – | Overwrite an existing --save-script target instead of refusing (alias: --overwrite). |
| includeCost | boolean | – | Include per-command agent-cost (cost.wallClockMs, …) in structuredContent. Defaults to off; the default response shape is unchanged. |
| leaseId | string | – | Existing lease identifier. |
| mcpOutputFormat | string | – | MCP text content format. Defaults to optimized agent-friendly text; use json for JSON text. Structured content is always returned separately. |
| noRecord | boolean | – | Do not record this action. |
| platform | string | – | Platform selector used to resolve a device. |
| responseLevel | string | – | Response verbosity: token-cheap digest / default (today) / full. Defaults to default; the default response shape is unchanged. |
| runId | string | – | Lease run identifier. |
| saveScript | – | – | – |
| serial | string | – | Android, HarmonyOS, or Vega VVD serial selector. |
| session | string | – | Agent-device session name. |
| shutdown | boolean | – | Shutdown the session/device where supported. |
| target | string | – | Alias for deviceTarget on commands without a UI target field. Interaction commands reserve target for the UI element. |
| tenant | string | – | Remote tenant identifier. |
| udid | string | – | Apple device or simulator UDID; the selector that pins one device when several share a name. |
No output schema declared.
No examples provided.
debug ~440
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, and react-devtools for React Native profiles. Times out after 90s.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | – |
| androidDeviceAllowlist | string | – | Android serial allowlist used for device resolution. |
| artifact | string | yes | Apple crash artifact path (.ips, .crash, or .log). |
| debug | boolean | – | Enable debug diagnostics. |
| device | string | – | Device name selector (a UDID belongs in udid, a serial in serial). |
| deviceTarget | string | – | Device target form. Maps to the CLI --target flag. |
| dsym | string | – | Path to a matching .dSYM bundle. |
| includeCost | boolean | – | Include per-command agent-cost (cost.wallClockMs, …) in structuredContent. Defaults to off; the default response shape is unchanged. |
| leaseId | string | – | Existing lease identifier. |
| mcpOutputFormat | string | – | MCP text content format. Defaults to optimized agent-friendly text; use json for JSON text. Structured content is always returned separately. |
| out | string | – | Output path for the symbolicated artifact. |
| platform | string | – | Platform selector used to resolve a device. |
| responseLevel | string | – | Response verbosity: token-cheap digest / default (today) / full. Defaults to default; the default response shape is unchanged. |
| runId | string | – | Lease run identifier. |
| searchPath | string | – | Directory to scan for matching .dSYM bundles. |
| serial | string | – | Android, HarmonyOS, or Vega VVD serial selector. |
| session | string | – | Agent-device session name. |
| target | string | – | Alias for deviceTarget on commands without a UI target field. Interaction commands reserve target for the UI element. |
| tenant | string | – | Remote tenant identifier. |
| udid | string | – | Apple device or simulator UDID; the selector that pins one device when several share a name. |
No output schema declared.
No examples provided.
devices ~345
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.
| Name | Type | Req | Description |
|---|---|---|---|
| androidDeviceAllowlist | string | – | Android serial allowlist used for device resolution. |
| debug | boolean | – | Enable debug diagnostics. |
| device | string | – | Device name selector (a UDID belongs in udid, a serial in serial). |
| deviceTarget | string | – | Device target form. Maps to the CLI --target flag. |
| includeCost | boolean | – | Include per-command agent-cost (cost.wallClockMs, …) in structuredContent. Defaults to off; the default response shape is unchanged. |
| leaseId | string | – | Existing lease identifier. |
| mcpOutputFormat | string | – | MCP text content format. Defaults to optimized agent-friendly text; use json for JSON text. Structured content is always returned separately. |
| platform | string | – | Platform selector used to resolve a device. |
| responseLevel | string | – | Response verbosity: token-cheap digest / default (today) / full. Defaults to default; the default response shape is unchanged. |
| runId | string | – | Lease run identifier. |
| serial | string | – | Android, HarmonyOS, or Vega VVD serial selector. |
| session | string | – | Agent-device session name. |
| target | string | – | Alias for deviceTarget on commands without a UI target field. Interaction commands reserve target for the UI element. |
| tenant | string | – | Remote tenant identifier. |
| udid | string | – | Apple device or simulator UDID; the selector that pins one device when several share a name. |
| Name | Type | Req | Description |
|---|---|---|---|
| devices | array | yes | – |
No examples provided.
diff ~393
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.
| Name | Type | Req | Description |
|---|---|---|---|
| androidDeviceAllowlist | string | – | Android serial allowlist used for device resolution. |
| debug | boolean | – | Enable debug diagnostics. |
| depth | integer | – | – |
| device | string | – | Device name selector (a UDID belongs in udid, a serial in serial). |
| deviceTarget | string | – | Device target form. Maps to the CLI --target flag. |
| includeCost | boolean | – | Include per-command agent-cost (cost.wallClockMs, …) in structuredContent. Defaults to off; the default response shape is unchanged. |
| interactiveOnly | boolean | – | – |
| kind | string | yes | – |
| leaseId | string | – | Existing lease identifier. |
| mcpOutputFormat | string | – | MCP text content format. Defaults to optimized agent-friendly text; use json for JSON text. Structured content is always returned separately. |
| noRecord | boolean | – | Do not record this action. |
| out | string | – | – |
| platform | string | – | Platform selector used to resolve a device. |
| raw | boolean | – | – |
| responseLevel | string | – | Response verbosity: token-cheap digest / default (today) / full. Defaults to default; the default response shape is unchanged. |
| runId | string | – | Lease run identifier. |
| scope | string | – | – |
| serial | string | – | Android, HarmonyOS, or Vega VVD serial selector. |
| session | string | – | Agent-device session name. |
| target | string | – | Alias for deviceTarget on commands without a UI target field. Interaction commands reserve target for the UI element. |
| tenant | string | – | Remote tenant identifier. |
| udid | string | – | Apple device or simulator UDID; the selector that pins one device when several share a name. |
| Name | Type | Req | Description |
|---|---|---|---|
| baselineInitialized | boolean | yes | – |
| lines | array | yes | – |
| mode | string | yes | – |
| summary | object | yes | – |
| warnings | array | – | – |
No examples provided.
doctor ~422
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 it also warms the XCTest runner build cache in the background when missing, so run it before the first Apple snapshot or interaction of a session. Times out after 90s.
| Name | Type | Req | Description |
|---|---|---|---|
| androidDeviceAllowlist | string | – | Android serial allowlist used for device resolution. |
| debug | boolean | – | Enable debug diagnostics. |
| device | string | – | Device name selector (a UDID belongs in udid, a serial in serial). |
| deviceTarget | string | – | Device target form. Maps to the CLI --target flag. |
| includeCost | boolean | – | Include per-command agent-cost (cost.wallClockMs, …) in structuredContent. Defaults to off; the default response shape is unchanged. |
| leaseId | string | – | Existing lease identifier. |
| mcpOutputFormat | string | – | MCP text content format. Defaults to optimized agent-friendly text; use json for JSON text. Structured content is always returned separately. |
| platform | string | – | Platform selector used to resolve a device. |
| remote | boolean | – | Check remote connection setup instead of local device inventory. |
| responseLevel | string | – | Response verbosity: token-cheap digest / default (today) / full. Defaults to default; the default response shape is unchanged. |
| runId | string | – | Lease run identifier. |
| serial | string | – | Android, HarmonyOS, or Vega VVD serial selector. |
| session | string | – | Agent-device session name. |
| target | string | – | Alias for deviceTarget on commands without a UI target field. Interaction commands reserve target for the UI element. |
| targetApp | string | – | Installed app package/bundle id or app name to verify without opening a session. |
| tenant | string | – | Remote tenant identifier. |
| udid | string | – | Apple device or simulator UDID; the selector that pins one device when several share a name. |
| Name | Type | Req | Description |
|---|---|---|---|
| checks | array | yes | – |
| kind | string | yes | – |
| metro | object | – | – |
| platform | string | – | – |
| status | string | yes | – |
| summary | string | yes | – |
| target | string | – | – |
| targetApp | string | – | – |
No examples provided.
events ~340
Read the daemon-owned session event timeline as paged JSON-friendly entries Times out after 90s.
| Name | Type | Req | Description |
|---|---|---|---|
| androidDeviceAllowlist | string | – | Android serial allowlist used for device resolution. |
| cursor | string | – | – |
| debug | boolean | – | Enable debug diagnostics. |
| device | string | – | Device name selector (a UDID belongs in udid, a serial in serial). |
| deviceTarget | string | – | Device target form. Maps to the CLI --target flag. |
| includeCost | boolean | – | Include per-command agent-cost (cost.wallClockMs, …) in structuredContent. Defaults to off; the default response shape is unchanged. |
| leaseId | string | – | Existing lease identifier. |
| limit | integer | – | – |
| mcpOutputFormat | string | – | MCP text content format. Defaults to optimized agent-friendly text; use json for JSON text. Structured content is always returned separately. |
| platform | string | – | Platform selector used to resolve a device. |
| responseLevel | string | – | Response verbosity: token-cheap digest / default (today) / full. Defaults to default; the default response shape is unchanged. |
| runId | string | – | Lease run identifier. |
| serial | string | – | Android, HarmonyOS, or Vega VVD serial selector. |
| session | string | – | Agent-device session name. |
| target | string | – | Alias for deviceTarget on commands without a UI target field. Interaction commands reserve target for the UI element. |
| tenant | string | – | Remote tenant identifier. |
| udid | string | – | Apple device or simulator UDID; the selector that pins one device when several share a name. |
No output schema declared.
No examples provided.
fill ~594
Replace text in a UI input selected by snapshot ref, selector, or coordinates. Pass an empty text to clear the field. Prefer refs or selectors after snapshot; use recordAs to keep sensitive text out of a recorded replay while sending it to the live app. Times out after 90s; a caller-supplied budget extends it.
| Name | Type | Req | Description |
|---|---|---|---|
| androidDeviceAllowlist | string | – | Android serial allowlist used for device resolution. |
| debug | boolean | – | Enable debug diagnostics. |
| delayMs | integer | – | Delay between typed characters. |
| depth | integer | – | Snapshot traversal depth. |
| device | string | – | Device name selector (a UDID belongs in udid, a serial in serial). |
| deviceTarget | string | – | Device target form. Maps to the CLI --target flag. |
| includeCost | boolean | – | Include per-command agent-cost (cost.wallClockMs, …) in structuredContent. Defaults to off; the default response shape is unchanged. |
| leaseId | string | – | Existing lease identifier. |
| mcpOutputFormat | string | – | MCP text content format. Defaults to optimized agent-friendly text; use json for JSON text. Structured content is always returned separately. |
| noRecord | boolean | – | Do not record this action. |
| platform | string | – | Platform selector used to resolve a device. |
| raw | boolean | – | Use raw snapshot data during selector resolution. |
| recordAs | string | – | When script recording is armed, send text to the live app but publish it as ${VAR}. Use an uppercase replay variable name such as PASSWORD. |
| responseLevel | string | – | Response verbosity: token-cheap digest / default (today) / full. Defaults to default; the default response shape is unchanged. |
| runId | string | – | Lease run identifier. |
| scope | string | – | Snapshot scope selector used before resolution. |
| serial | string | – | Android, HarmonyOS, or Vega VVD serial selector. |
| session | string | – | Agent-device session name. |
| settle | boolean | – | After the action, wait for the UI to go quiet and return the settled diff vs the pre-action tree in the same response. Best-effort; never fails the action. |
| settleQuietMs | integer | – | Settle: quiet window in milliseconds (default 500). |
| target | – | yes | UI target. This is separate from deviceTarget, which selects the device form. |
| tenant | string | – | Remote tenant identifier. |
| text | string | yes | Text to enter into the target. Pass "" to clear it. |
| timeoutMs | integer | – | Settle: wait deadline in milliseconds (default 10000). |
| udid | string | – | Apple device or simulator UDID; the selector that pins one device when several share a name. |
| verify | boolean | – | Capture cheap post-action evidence (AX digest, node counts, changedFromBefore) instead of a follow-up snapshot. |
Structured output declared, but exposes no named fields.
No examples provided.
find ~452
Find by text/label/value/role/id and run action Times out after 90s.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | – | – |
| androidDeviceAllowlist | string | – | Android serial allowlist used for device resolution. |
| debug | boolean | – | Enable debug diagnostics. |
| depth | integer | – | – |
| device | string | – | Device name selector (a UDID belongs in udid, a serial in serial). |
| deviceTarget | string | – | Device target form. Maps to the CLI --target flag. |
| first | boolean | – | – |
| includeCost | boolean | – | Include per-command agent-cost (cost.wallClockMs, …) in structuredContent. Defaults to off; the default response shape is unchanged. |
| last | boolean | – | – |
| leaseId | string | – | Existing lease identifier. |
| locator | string | – | – |
| mcpOutputFormat | string | – | MCP text content format. Defaults to optimized agent-friendly text; use json for JSON text. Structured content is always returned separately. |
| noRecord | boolean | – | Do not record this action. |
| platform | string | – | Platform selector used to resolve a device. |
| query | string | yes | – |
| raw | boolean | – | – |
| record | boolean | – | Force-record this out-of-band observation into a repair-armed heal (mutually exclusive with noRecord). Authored replay steps are recorded automatically and never need this. On find, valid only for a… |
| responseLevel | string | – | Response verbosity: token-cheap digest / default (today) / full. Defaults to default; the default response shape is unchanged. |
| runId | string | – | Lease run identifier. |
| serial | string | – | Android, HarmonyOS, or Vega VVD serial selector. |
| session | string | – | Agent-device session name. |
| target | string | – | Alias for deviceTarget on commands without a UI target field. Interaction commands reserve target for the UI element. |
| tenant | string | – | Remote tenant identifier. |
| timeoutMs | integer | – | – |
| udid | string | – | Apple device or simulator UDID; the selector that pins one device when several share a name. |
| value | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| cost | object | – | – |
| found | boolean | – | Whether a wait/exists/read-only find satisfied its condition. |
| locator | string | – | Locator kind used for the find action. |
| matches | array | – | Every match for the read-only find list action (#1625): { ref, node } each. |
| message | string | – | Diagnostic message for mutating find actions. |
| node | object | – | Snapshot node for find get_attrs/get_text. |
| query | string | – | Query argument used for the find action. |
| ref | string | – | Snapshot ref without the @ prefix when the find action returns one. |
| refsGeneration | number | – | ADR 0014 ref frame epoch for read-only find actions. |
| text | string | – | Text value returned by find get_text. |
| waitedMs | number | – | Milliseconds waited for a read-only find condition. |
| x | number | – | Resolved x coordinate for mutating find actions. |
| y | number | – | Resolved y coordinate for mutating find actions. |
No examples provided.
focus ~374
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.
| Name | Type | Req | Description |
|---|---|---|---|
| androidDeviceAllowlist | string | – | Android serial allowlist used for device resolution. |
| debug | boolean | – | Enable debug diagnostics. |
| device | string | – | Device name selector (a UDID belongs in udid, a serial in serial). |
| deviceTarget | string | – | Device target form. Maps to the CLI --target flag. |
| includeCost | boolean | – | Include per-command agent-cost (cost.wallClockMs, …) in structuredContent. Defaults to off; the default response shape is unchanged. |
| leaseId | string | – | Existing lease identifier. |
| mcpOutputFormat | string | – | MCP text content format. Defaults to optimized agent-friendly text; use json for JSON text. Structured content is always returned separately. |
| noRecord | boolean | – | Do not record this action. |
| platform | string | – | Platform selector used to resolve a device. |
| responseLevel | string | – | Response verbosity: token-cheap digest / default (today) / full. Defaults to default; the default response shape is unchanged. |
| runId | string | – | Lease run identifier. |
| serial | string | – | Android, HarmonyOS, or Vega VVD serial selector. |
| session | string | – | Agent-device session name. |
| target | string | – | Alias for deviceTarget on commands without a UI target field. Interaction commands reserve target for the UI element. |
| tenant | string | – | Remote tenant identifier. |
| udid | string | – | Apple device or simulator UDID; the selector that pins one device when several share a name. |
| x | number | yes | X coordinate. |
| y | number | yes | Y coordinate. |
No output schema declared.
No examples provided.
fold ~550
Fold or unfold a foldable iPhone simulator (iPhone Duo) into the closed, half-open, or open pose, or follow timestamped angle keyframes, by sending a simulator HID hinge event, then read the hinge angle back from CoreDevice to confirm it. A pose change moves the app to a different panel with a different point size, so every ref and coordinate from before it is stale: re-snapshot after this command. Taps, long presses, and scrolling target the app window on its current panel in closed, half-open, and open poses. Simulator-only; requires the iOS simulator SDK; Device Hub and host Accessibility permission are not required. A simulator scoped to a non-default simulator set is refused with UNSUPPORTED_OPERATION and reason unsupported-device-scope; run fold against a simulator in the default set. Times out after 255s.
| Name | Type | Req | Description |
|---|---|---|---|
| androidDeviceAllowlist | string | – | Android serial allowlist used for device resolution. |
| debug | boolean | – | Enable debug diagnostics. |
| device | string | – | Device name selector (a UDID belongs in udid, a serial in serial). |
| deviceTarget | string | – | Device target form. Maps to the CLI --target flag. |
| includeCost | boolean | – | Include per-command agent-cost (cost.wallClockMs, …) in structuredContent. Defaults to off; the default response shape is unchanged. |
| keyframes | array | – | Piecewise-linear hinge motion. Start at 0ms; strictly increasing timestamps, up to 60000ms. Repeated angles create holds. Mutually exclusive with pose. |
| leaseId | string | – | Existing lease identifier. |
| mcpOutputFormat | string | – | MCP text content format. Defaults to optimized agent-friendly text; use json for JSON text. Structured content is always returned separately. |
| noRecord | boolean | – | Do not record this action. |
| platform | string | – | Platform selector used to resolve a device. |
| pose | string | – | Instant preset; mutually exclusive with keyframes. |
| responseLevel | string | – | Response verbosity: token-cheap digest / default (today) / full. Defaults to default; the default response shape is unchanged. |
| runId | string | – | Lease run identifier. |
| serial | string | – | Android, HarmonyOS, or Vega VVD serial selector. |
| session | string | – | Agent-device session name. |
| target | string | – | Alias for deviceTarget on commands without a UI target field. Interaction commands reserve target for the UI element. |
| tenant | string | – | Remote tenant identifier. |
| udid | string | – | Apple device or simulator UDID; the selector that pins one device when several share a name. |
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | – |
| hingeAngleDegrees | number | yes | Hinge angle CoreDevice read back after the pose settled. |
| message | string | yes | – |
| pose | string | yes | – |
| screen | object | – | – |
No examples provided.
gesture ~539
Perform a structured pan, fling, swipe, pinch, rotate, transform, or drag gesture. Select the gesture kind, then provide only the inputs that apply to that kind. Times out after 90s.
| Name | Type | Req | Description |
|---|---|---|---|
| androidDeviceAllowlist | string | – | Android serial allowlist used for device resolution. |
| debug | boolean | – | Enable debug diagnostics. |
| degrees | number | – | Rotation in degrees. |
| delta | object | – | Movement delta for pan or transform gestures. |
| destination | string | – | Drag destination @ref or selector. |
| destinationHoldMs | integer | – | Hold before releasing at the destination. |
| device | string | – | Device name selector (a UDID belongs in udid, a serial in serial). |
| deviceTarget | string | – | Device target form. Maps to the CLI --target flag. |
| direction | string | – | Fling direction. |
| distance | integer | – | Fling distance. |
| durationMs | integer | – | Pan/transform duration. |
| includeCost | boolean | – | Include per-command agent-cost (cost.wallClockMs, …) in structuredContent. Defaults to off; the default response shape is unchanged. |
| kind | string | yes | Gesture variant. |
| leaseId | string | – | Existing lease identifier. |
| mcpOutputFormat | string | – | MCP text content format. Defaults to optimized agent-friendly text; use json for JSON text. Structured content is always returned separately. |
| moveMs | integer | – | Drag movement duration. |
| noRecord | boolean | – | Do not record this action. |
| origin | object | – | Gesture origin point. |
| platform | string | – | Platform selector used to resolve a device. |
| pointerCount | integer | – | Pan touch pointer count (1 or 2). |
| preset | string | – | Swipe preset. |
| responseLevel | string | – | Response verbosity: token-cheap digest / default (today) / full. Defaults to default; the default response shape is unchanged. |
| runId | string | – | Lease run identifier. |
| scale | number | – | Pinch or transform scale. |
| serial | string | – | Android, HarmonyOS, or Vega VVD serial selector. |
| session | string | – | Agent-device session name. |
| source | string | – | Drag source @ref or selector. |
| sourceHoldMs | integer | – | Drag activation hold duration. |
| target | string | – | Alias for deviceTarget on commands without a UI target field. Interaction commands reserve target for the UI element. |
| tenant | string | – | Remote tenant identifier. |
| udid | string | – | Apple device or simulator UDID; the selector that pins one device when several share a name. |
No output schema declared.
No examples provided.
get ~437
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.
| Name | Type | Req | Description |
|---|---|---|---|
| androidDeviceAllowlist | string | – | Android serial allowlist used for device resolution. |
| debug | boolean | – | Enable debug diagnostics. |
| depth | integer | – | Snapshot traversal depth. |
| device | string | – | Device name selector (a UDID belongs in udid, a serial in serial). |
| deviceTarget | string | – | Device target form. Maps to the CLI --target flag. |
| format | string | yes | – |
| includeCost | boolean | – | Include per-command agent-cost (cost.wallClockMs, …) in structuredContent. Defaults to off; the default response shape is unchanged. |
| leaseId | string | – | Existing lease identifier. |
| mcpOutputFormat | string | – | MCP text content format. Defaults to optimized agent-friendly text; use json for JSON text. Structured content is always returned separately. |
| noRecord | boolean | – | Do not record this action. |
| platform | string | – | Platform selector used to resolve a device. |
| raw | boolean | – | Use raw snapshot data during selector resolution. |
| record | boolean | – | Force-record this out-of-band observation into a repair-armed heal (mutually exclusive with noRecord). Authored replay steps are recorded automatically and never need this. On find, valid only for a… |
| responseLevel | string | – | Response verbosity: token-cheap digest / default (today) / full. Defaults to default; the default response shape is unchanged. |
| runId | string | – | Lease run identifier. |
| scope | string | – | Snapshot scope selector used before resolution. |
| serial | string | – | Android, HarmonyOS, or Vega VVD serial selector. |
| session | string | – | Agent-device session name. |
| target | – | yes | UI element target by snapshot ref or selector expression. |
| tenant | string | – | Remote tenant identifier. |
| udid | string | – | Apple device or simulator UDID; the selector that pins one device when several share a name. |
No output schema declared.
No examples provided.
What is the agent-device MCP server?
agent-device is an MCP server listed in the public MCP registry as io.github.callstack/agent-device. MCP server for mobile app automation: verify, control, and debug iOS, Android, TV, and desktop apps. This page covers its npm package (agent-device).
Is the agent-device MCP server safe to use?
agent-device scores 77 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 October 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the agent-device MCP server expose?
agent-device exposes 59 tools: action-button, alert, app-switcher, apps, appstate, and 54 more. Their descriptions and schemas cost roughly 25,210 tokens of context every time the server is loaded.
Is the agent-device MCP server still maintained?
agent-device is still listed as active in the MCP registry. We last reached this channel on 5 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the agent-device MCP server under?
agent-device declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.