Skip to main content

Observation

Screenshot, list devices, screen info, clipboard

User Interaction

Tap, swipe, long press, type, key presses

Playwright-style

Accessibility snapshot, wait for element, element exists

Device Management

Boot, shutdown, erase, open URLs, deep links

App Management

Install, launch, terminate, uninstall

Debugging & Diagnostics

Logs, crash reports, file browser, accessibility audit

System Simulation

GPS, push notifications, clipboard, permissions

UI Configuration

Dark mode, status bar, video recording

Advanced Debugging & Testing

Dynamic Type, biometric, keychain, UserDefaults, memory warnings

Category summary

CategoryToolsWhat it covers
Observation6Screenshots, device listing, app info, clipboard, screen geometry
User Interaction6Tap, swipe, long press, type text, key presses, back navigation
Playwright-style3Accessibility snapshot, element waiting, element existence check
Device Management6Boot, shutdown, erase, open URLs, open Simulator app
App Management4Install, launch, terminate, uninstall apps
Debugging & Diagnostics9Logs, crash reports, file browser, accessibility audit, diagnostics
System Simulation5GPS location, push notifications, clipboard, media, permissions
UI Configuration4Appearance, status bar, video recording
Advanced Debugging & Testing14Dynamic Type, biometric, keychain, iCloud, UserDefaults, memory warnings
Total57

Observation

Tools for reading the state of the simulator — what’s on screen, what’s installed, and what the device looks like. View full reference →
ToolDescription
simulator_screenshotTake a JPEG screenshot optimized for AI chat (~200–400 KB). Returns image inline.
simulator_list_devicesList simulators with name, UDID, state, runtime. Filter: booted, available, all.
simulator_list_appsList installed apps with bundle IDs. Toggle includeSystem for system apps.
simulator_app_infoGet app metadata: name, version, bundle path, data path, type.
simulator_get_clipboardRead the simulator’s clipboard text.
simulator_get_screen_infoWindow geometry, coordinate mapping, scale factor. Debug tap accuracy.

User Interaction

Tools for interacting with the simulator as a user would — touching the screen, typing, and pressing keys. View full reference →
ToolDescription
simulator_tapTap at (x, y) in simulator screen points. Cursor-free via idb.
simulator_swipeSwipe between two points. Supports edge-swipe-back from x=1.
simulator_long_pressLong press with configurable duration. Context menus, drag initiation.
simulator_type_textType text into the focused field.
simulator_press_keyPress special keys (return, escape, arrows, F-keys) with modifiers.
simulator_navigate_backNavigate back via Cmd+[. Workaround for edge-swipe limitations.

Playwright-style

Accessibility-first tools inspired by Playwright MCP for web automation. View full reference →
ToolDescription
simulator_snapshotPreferred over screenshots. Structured accessibility tree — roles, labels, values, positions. No vision model needed. Like Playwright’s browser_snapshot.
simulator_wait_for_elementWait for an element to appear (by label, role, or text). Polls with configurable timeout. Like Playwright’s browser_wait_for.
simulator_element_existsQuick boolean check: does an element matching criteria exist on screen right now?

Device Management

Tools for controlling the simulator device lifecycle. View full reference →
ToolDescription
simulator_bootBoot a device by name or UDID. Optional waitForBoot polling.
simulator_shutdownShut down a running simulator.
simulator_eraseFactory reset — erases all content and settings.
simulator_open_urlOpen URLs or deep links (e.g., myapp://screen).
simulator_open_simulatorOpen the Simulator.app application.
simulator_get_booted_sim_idGet the UDID of the currently booted simulator.

App Management

Tools for installing and controlling apps. View full reference →
ToolDescription
simulator_launch_appLaunch by bundle ID with optional args and env vars.
simulator_terminate_appForce-terminate a running app.
simulator_install_appInstall a .app bundle or .ipa from a local path.
simulator_uninstall_appUninstall by bundle ID.

Debugging & Diagnostics

Tools for inspecting app behavior, reading files, and analyzing crashes. View full reference →
ToolDescription
simulator_get_logsQuery device logs. Filter by process, subsystem, level, time range, message content.
simulator_stream_logsLive log streaming with start/read/stop lifecycle. Configurable buffer.
simulator_get_app_containerGet filesystem path to app’s bundle, data, or shared group container.
simulator_list_app_filesBrowse an app’s Documents/, Library/, Caches/, tmp/ directories.
simulator_read_app_fileRead plists (→JSON), SQLite (→schema), and text files from app data.
simulator_get_crash_logsRetrieve crash reports with stack traces and thread states.
simulator_diagnoseXcode version, disk usage, booted devices, system info.
simulator_accessibility_auditFull iOS accessibility tree — real UIButton/UILabel elements with labels, frames, roles.
simulator_describe_pointReturns the accessibility element at given coordinates.

System Simulation

Tools for simulating real-world system conditions like location, notifications, and permissions. View full reference →
ToolDescription
simulator_set_locationSet GPS coordinates (lat/lng). Test location-based features.
simulator_send_pushSend push notifications with full APNs payload JSON.
simulator_set_clipboardSet the simulator clipboard text.
simulator_add_mediaAdd photos/videos to the camera roll from local files.
simulator_grant_permissionGrant, revoke, or reset permissions (camera, location, photos, contacts, microphone, etc.).

UI Configuration

Tools for configuring the visual state of the simulator. View full reference →
ToolDescription
simulator_set_appearanceSwitch between light and dark mode.
simulator_override_status_barSet time, battery, signal, carrier, network type.
simulator_record_videoStart screen recording. On stop, key frames are extracted as images for AI chat.
simulator_stop_recordingStop recording. Returns key frames inline (no disk clutter). Optional savePath to keep the video.

Advanced Debugging & Testing

Tools for specialized testing scenarios — accessibility sizes, biometrics, keychain, and app configuration. View full reference →
ToolDescription
simulator_set_content_sizeSet Dynamic Type preferred size (13 categories from extra-small to accessibility-XXXL).
simulator_set_increase_contrastToggle Increase Contrast accessibility setting.
simulator_location_scenarioRun predefined GPS routes: Freeway Drive, City Run, City Bicycle Ride.
simulator_location_routeSimulate movement along custom waypoints with configurable speed.
simulator_memory_warningTrigger simulated memory warning (didReceiveMemoryWarning).
simulator_keychainAdd root certificates, add certificates, or reset the device keychain.
simulator_icloud_syncTrigger iCloud synchronization on the device.
simulator_verbose_loggingEnable/disable verbose device logging for deep debugging.
simulator_install_app_dataInstall .xcappdata packages to restore test data snapshots.
simulator_get_envRead environment variables from the running simulator.
simulator_biometricSet Face ID / Touch ID enrollment state for auth testing.
simulator_network_statusGet network configuration — DNS, interfaces, connectivity status.
simulator_defaults_readRead UserDefaults from inside the simulator (inspect app prefs, feature flags).
simulator_defaults_writeWrite UserDefaults inside the simulator (set flags, inject test config).

Disabling specific tools

You can disable any tool by adding its name to the PREFLIGHT_FILTERED_TOOLS environment variable. This is useful when your AI client has a tool limit or when you want to reduce noise from tools you don’t use.
{
  "mcpServers": {
    "preflight": {
      "command": "node",
      "args": ["/path/to/Preflight/dist/index.js"],
      "env": {
        "PREFLIGHT_FILTERED_TOOLS": "simulator_record_video,simulator_stop_recording,simulator_verbose_logging"
      }
    }
  }
}
Separate multiple tool names with commas. Filtered tools are silently skipped at server startup — no errors are thrown.

Build docs developers (and LLMs) love