Native app QA automation for AI agents over MCP — drive and test macOS, Windows, and iOS apps in the background, without stealing your focus or cursor
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport stdio · http counts 36 tools · 0 res
· 0 prompts
permission surface via code analysis
tools
-
boot_simulator
-
describe_screen
-
device_action
-
device_actions
-
dismiss_keyboard
-
get_clipboard
-
get_device_info
-
get_execution_context
-
get_orientation
-
get_screenshot
-
handle_alert
-
install_app
-
launch_app
-
list_apps
-
list_devices
-
lock_screen
-
open_url
-
read_alert
-
scan_ui
-
send_push
-
set_appearance
-
set_clipboard
-
set_content_size
-
set_location
-
set_orientation
-
set_permission
-
set_status_bar
-
setup_device
-
shutdown_simulator
-
start_recording
-
stop_recording
-
tap_element
-
terminate_app
-
uninstall_app
-
unlock_screen
-
wait_for_element
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 104
filesystem 6
- fs Kasempiternal-agentcontroller-276f84d/iOS/src/cli.ts :3
import { existsSync, mkdirSync, readFileSync, writeFileSync, symlinkSync, rmSync } from 'fs' - fs Kasempiternal-agentcontroller-276f84d/iOS/src/idb/companion-client.ts :2
import { existsSync } from 'fs' - fs Kasempiternal-agentcontroller-276f84d/iOS/src/idb/idb-client.ts :5
import { writeFile, unlink } from 'fs/promises' - fs Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :3
import { promises as fs, readFileSync } from 'node:fs' - fs Kasempiternal-agentcontroller-276f84d/iOS/src/paths.ts :1
import { existsSync } from 'fs' - fs Kasempiternal-agentcontroller-276f84d/iOS/src/wda/wda-manager.ts :3
import { existsSync, mkdirSync } from 'fs'
shell / exec 9
- shell Kasempiternal-agentcontroller-276f84d/iOS/src/child-env.ts :3
import { execFileSync } from 'node:child_process' - shell Kasempiternal-agentcontroller-276f84d/iOS/src/cli.ts :7
import { exec, execSync } from 'child_process' - shell Kasempiternal-agentcontroller-276f84d/iOS/src/execution-context.ts :1
import { execFile } from 'child_process' - shell Kasempiternal-agentcontroller-276f84d/iOS/src/idb/ax-scan-client.ts :1
import { spawn, type ChildProcess, execFile } from 'child_process' - shell Kasempiternal-agentcontroller-276f84d/iOS/src/idb/companion-client.ts :1
import { spawn, type ChildProcess } from 'child_process' - shell Kasempiternal-agentcontroller-276f84d/iOS/src/idb/idb-client.ts :1
import { spawn, type ChildProcess, execFile } from 'child_process' - shell Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :6
import { execFile, spawn, type ChildProcess } from 'node:child_process' - shell Kasempiternal-agentcontroller-276f84d/iOS/src/wda/device-discovery.ts :1
import { exec } from 'child_process' - shell Kasempiternal-agentcontroller-276f84d/iOS/src/wda/wda-manager.ts :1
import { spawn, type ChildProcess, exec } from 'child_process'
network 2
- net Kasempiternal-agentcontroller-276f84d/iOS/src/viewer/server.ts :2
import { createServer, type Server } from 'node:http' - net Kasempiternal-agentcontroller-276f84d/iOS/src/wda/wda-client.ts :85
const response = await fetch(url, options)
tool registrations 36
- describe_screen Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :195
- device_action Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :236
- device_actions Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :361
- get_screenshot Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :482
- scan_ui Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :564
- list_devices Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :619
- get_execution_context Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :646
- setup_device Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :738
- launch_app Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :821
- list_apps Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :853
- open_url Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :905
- terminate_app Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :930
- install_app Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :955
- uninstall_app Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :979
- get_clipboard Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :1003
- set_clipboard Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :1025
- wait_for_element Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :1050
- get_orientation Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :1113
- set_orientation Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :1136
- start_recording Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :1162
- stop_recording Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :1206
- tap_element Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :1238
- read_alert Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :1308
- handle_alert Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :1331
- dismiss_keyboard Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :1358
- lock_screen Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :1381
- unlock_screen Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :1404
- get_device_info Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :1427
- send_push Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :1473
- set_location Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :1501
- set_permission Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :1534
- set_appearance Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :1563
- set_status_bar Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :1587
- set_content_size Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :1633
- boot_simulator Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :1660
- shutdown_simulator Kasempiternal-agentcontroller-276f84d/iOS/src/mcp-server.ts :1686
declared dependencies 11
- @modelcontextprotocol/sdk@^1.12.1
- @grpc/grpc-js@^1.14.4
- @grpc/proto-loader@^0.8.1
- express@^5.1.0
- ws@^8.18.3
- zod@^3.23.0
- @types/express@^5.0.0
- @types/node@^22.0.0
- @types/ws@^8.5.0
- typescript@^5.7.0
- unix-dgram@^2.0.7
clipboard 1
- clipboard shell call Kasempiternal-agentcontroller-276f84d/iOS/src/idb/idb-client.ts :497
const { stdout } = await execFileAsync('xcrun', ['simctl', 'pbpaste', resolvedUdid], { env: childEnv(), timeout: SIMCTL_TIMEOUT_MS })