MCP tools
Every tool the Parallax MCP server gives your coding agent, generated from the server itself.
The Parallax MCP server gives your coding agent tools to see and drive your app: read the simulator screen, tap and type, read logs and errors, inspect the component tree, network requests, state and navigation, and run commands your app registered.
Tool descriptions and parameter lists are deliberately short. Every agent session pays for the tools/list answer in its context, so the server keeps it small and puts the detail in the tool answers instead (each answer says what to do next, and an error carries a Fix line).
Tools marked read-only never change the simulator or your app. Tools marked acts are every tool that is not read-only: they boot a simulator, tap, type, swipe, open a URL, launch or reload, run an app command that can change app data, or use the inbox. With --allow-read-only-tools the setup command adds only the read-only tools to Claude Code's allow list; see the CLI.
This page is generated from the built server, so it always matches the version shown below.
On Android, device takes an emulator's serial (emulator-5554), or a shut-down AVD as avd:<name> for device_boot. Coordinates there are in dp, as React Native lays out, the same unit device_ui reports; device_ui takes about 2 s on Android (uiautomator).
19 tools, from Parallax 0.1.0-beta.2.
read-only tools never change anything. acts marks every tool that is not read-only, including device_boot and parallax_inbox. destructive and open-world are the server's own hints.
Whether the agent asks you first is decided by its own permission prompt. Claude Code asks for every MCP tool until you allow it; Codex asks for destructive or open-world tools. With --strict-approvals the Parallax window asks for the tools that act on the app or the device: device_tap, device_type, device_swipe, device_open_url, app_launch, app_reload and app_command_run (not device_boot).
Status and doctor
statusread-only
Parallax status
Metro, project root (other paths are relative to it), RN version, app connection, SDK versions, warnings. Start here. App tools take device when several apps run.
No parameters.
doctorread-only
Parallax doctor
Checklist (device tools, Metro, app, SDK, build plugin, versions) a Fix per problem.
No parameters.
Device tools
device_listread-only
List devices
Lists iOS simulators/Android emulators (id, name, state), booted first. With several booted, tools need device.
No parameters.
device_bootacts
Boot a device
Boots an iOS simulator or Android emulator by id or name.
| Parameter | Type | Required | Description |
|---|---|---|---|
| device | string | no | – |
device_screenshotread-only
Screenshot
Screenshot of the simulator/emulator screen (downscaled; full: true for native size). device_ui is cheaper for text.
| Parameter | Type | Required | Description |
|---|---|---|---|
| device | string | no | – |
| full | boolean | no | – |
device_uiread-only
Read the screen
Simulator or emulator screen as an accessibility tree: elements with id (testID) or label, role, value, position. Default 80 lines; filter narrows.
| Parameter | Type | Required | Description |
|---|---|---|---|
| device | string | no | – |
| filter | string | no | – |
| limit | integer (1 to 200) | no | – |
device_tapactsdestructive
Tap
Taps an element on the simulator/emulator screen by id, label, or point (x, y): exactly one. Says what changed. Can change app data.
| Parameter | Type | Required | Description |
|---|---|---|---|
| device | string | no | – |
| id | string | no | – |
| label | string | no | – |
| x | number | no | – |
| y | number | no | – |
device_typeactsdestructive
Type text
Types ASCII text input (max 500) into the focused field of the simulator/emulator; tap it first. No return key.
| Parameter | Type | Required | Description |
|---|---|---|---|
| device | string | no | – |
| text | string | yes | – |
device_swipeactsdestructive
Swipe
Swipes or scrolls the screen (simulator/emulator); direction is where the finger moves (up shows content below).
| Parameter | Type | Required | Description |
|---|---|---|---|
| device | string | no | – |
| direction | "up" | "down" | "left" | "right" | yes | – |
| distance | number (0.1 to 0.9) | no | – |
device_open_urlactsdestructiveopen-world
Open a URL
Opens a URL or deep link on the simulator/emulator (a web URL opens Safari; a deep link can run app actions).
| Parameter | Type | Required | Description |
|---|---|---|---|
| device | string | no | – |
| url | string | yes | – |
App tools
app_launchactsdestructive
Launch the app
Launches an installed app on the simulator/emulator by bundle id/package; restart: true terminates it first.
| Parameter | Type | Required | Description |
|---|---|---|---|
| device | string | no | – |
| bundle_id | string | yes | – |
| restart | boolean | no | – |
app_reloadactsdestructive
Reload the app
Reloads the running React Native app through Metro and waits for it. State is lost; not done if the bundle does not build.
| Parameter | Type | Required | Description |
|---|---|---|---|
| device | string | no | – |
| timeout_ms | integer (1000 to 40000) | no | – |
app_logsread-only
App console logs
Console logs of the running React Native app across reloads. Newest 50; level, filter; next: cursor goes in since.
| Parameter | Type | Required | Description |
|---|---|---|---|
| device | string | no | – |
| level | "debug" | "log" | "info" | "warn" | "error" | no | – |
| filter | string | no | – |
| limit | integer (1 to 200) | no | – |
| since | string | no | – |
app_errorsread-only
App errors and build errors
Metro build error (syntax error, missing module), then JS exceptions (crashes, red box, render errors), grouped, with files and a code frame. next: cursor goes in since.
| Parameter | Type | Required | Description |
|---|---|---|---|
| device | string | no | – |
| limit | integer (1 to 25) | no | – |
| since | string | no | – |
app_treeread-only
App component tree
React component tree of the running app: project components and screen elements, file:line with the build plugin. Max 150 lines; root, depth, filter. filter = a device_ui id (testID), label or text finds its component; several matches are AMBIGUOUS. Checked on RN 0.85-0.87 / React 19.2.3 only.
| Parameter | Type | Required | Description |
|---|---|---|---|
| device | string | no | – |
| root | string | no | Node id (#12) or component name: only that subtree. |
| depth | integer (0 to 60) | no | – |
| filter | string | no | – |
| roots | "app" | "all" | no | – |
app_dataread-only
App network, state, navigation, perf
The running app's network, state, nav, perf (frame rates, drops), anim (running animations) or security hints, secrets removed. List; id for detail. limit, filter, since (next: cursor), path, body; record: N s (2-30) makes a perf recording; refresh rereads the screen (security).
| Parameter | Type | Required | Description |
|---|---|---|---|
| source | "network" | "state" | "nav" | "perf" | "anim" | "security" | yes | – |
| device | string | no | – |
| id | string | no | – |
| filter | string | no | – |
| path | string | no | – |
| body | boolean | no | – |
| refresh | boolean | no | – |
| record | integer (2 to 30) | no | – |
| limit | integer (1 to 100) | no | – |
| since | string | no | – |
app_commandsread-only
List app commands
Lists dev commands the running app registered through the SDK. Run with app_command_run.
| Parameter | Type | Required | Description |
|---|---|---|---|
| device | string | no | – |
app_command_runactsdestructive
Run an app command
Runs a dev command the app registered through the SDK, optional JSON args. Can change app data.
| Parameter | Type | Required | Description |
|---|---|---|---|
| device | string | no | – |
| name | string | yes | – |
| args | any | no | – |
| timeout_ms | integer (1000 to 50000) | no | – |
Inbox
parallax_inboxacts
Parallax inbox
Read what the user sent you from the Parallax app.
No parameters.