Argent exposes its capabilities to the coding agent as MCP tools. You rarely call these by hand, but knowing what exists tells you what you can ask for.
Run argent tools to list them from the terminal, argent tools describe <name> for the full schema of one, and argent run <name> to invoke one directly.
| Tool | Description |
|---|
list-devices | List iOS simulators, Android emulators and devices, Chromium apps, and Vega (Fire TV) devices |
boot-device | Boot a simulator, emulator, or Vega Virtual Device, or spawn an Electron app |
launch-app | Open an app by bundle id (iOS) or package name (Android) |
restart-app | Terminate then relaunch an app |
reinstall-app | Install or reinstall an app, clearing app data and runtime permissions |
open-url | Open a URL or URL scheme on the device |
settings-permissions | Grant, deny, or reset a runtime permission without navigating the Settings UI |
rotate | Set the device orientation to portrait or either landscape |
fold | Fold or unfold a foldable iOS simulator to a posture or a hinge angle |
shake | Shake the device |
button | Press a hardware button: home, back, power, volume, app switch, action button |
tv-remote | Press a TV remote or D-pad button on Apple TV, Android TV, or Vega |
stop-simulator-server | Stop the transport session for one device and free its resources |
stop-all-simulator-servers | Stop every service a device owns: simulator servers, native devtools, TV daemons |
stop-metro | Stop the Metro bundler listening on a given port |
launch-app and restart-app accept launchArgs, a list of arguments that Argent passes to the app process at launch. For example, ["-FeatureFlag", "YES"] overrides a UserDefaults value. launchArgs works on Apple simulators and physical iPhones. Other targets ignore it. If the app already runs, launch-app terminates it first, so that the app gets the arguments. On a physical iPhone, the app sees -- before the arguments. UserDefaults overrides still apply.
Argent drives a foldable iOS simulator, for example the iPhone Duo. list-devices marks it with foldable: true. fold moves the hinge to a posture (closed, half-open or open) or to an angle from 0 to 180 degrees.
- Closed, the cover panel shows the UI. Half-open and open, the inner panel shows the UI. The panel that shows the UI is the active panel.
- All tools use the active panel. This is also true after a fold made outside Argent.
- The coordinates and the screenshot size change with the panel.
- A video keeps the size of the panel where the recording started. Argent keeps the proportions of the other panel and adds black bars.
- A fold between two angles that are not 0 or 180 can keep the current panel. To change panels, fold to
closed or open.
- Unfolded, the UI is landscape.
rotate sets the orientation of the device, not of the UI. Portrait gives a landscape UI.
- If Argent cannot find the active panel, it uses the cover panel. The tool result then has a warning.
Argent supports physical iPhones; physical iPads are not supported yet. list-devices shows a physical device as an iOS entry with kind device. The state is connected only while the device is attached by USB cable; Argent controls physical devices over the cable and does not use Wi-Fi. The state is paired when the device is paired but not reachable now. Argent never selects a physical device automatically: name its udid. A paired device cannot be driven until it is connected by cable again. See Physical iOS devices for the requirements, the signing model, and the app-scoped interaction contract.
| Tool | Description |
|---|
screenshot | Capture the device screen |
describe | Get the accessibility / DOM element tree for the current screen |
screenshot-diff | Compare two PNG screenshots and return a visual-diff summary |
await-screen-idle | Block until the screen has rendered content and stopped changing |
await-ui-element | Block until a UI element reaches an expected state, instead of polling in a loop |
ui-tree (SDK only) | Get the raw accessibility tree as nested JSON, iOS simulator and Android |
ui-tree is hidden from MCP; call it with the Argent SDK, which exports its UiTree result type. Fields a platform cannot report yet are listed in unsupportedFields. A node is hidden when no part of it is on screen inside its ancestors. On iOS, while a system alert shows, roots holds the system app first and the app it covers second. On Android, roots holds one root per window, topmost first. A system dialog, such as a runtime permission prompt or a crash dialog, sets alertVisible, and every node of the app it covers is covered. When Android hides the app's window under the dialog, foregroundApp is unset.
| Tool | Description |
|---|
gesture-tap | Tap at normalized coordinates |
gesture-swipe | Smooth swipe or drag between two points |
gesture-scroll | Scroll a Chromium app by dispatching mouse-wheel events |
gesture-drag | Press, move, and release the mouse in a Chromium app |
gesture-pinch | Pinch to zoom around a center point |
gesture-rotate | Two-finger circular arc that rotates on-screen content |
gesture-custom | Send an arbitrary sequence of touch events for complex gestures |
keyboard | Type text or press special keys |
paste | Put text on the device clipboard and paste it (sim/emu only) |
run-sequence | Execute several interaction steps in a single call |
screen-recording-start | Start recording the screen to an h264 mp4 |
screen-recording-stop | Stop the recording and retrieve the video |
| Tool | Description |
|---|
debugger-connect | Connect to the JS runtime CDP debugger |
debugger-status | Report connection status and diagnostics |
debugger-evaluate | Execute JavaScript in the app's runtime: Hermes on device, V8 on Chromium |
debugger-component-tree | Fetch the current screen as a compact React component text tree |
debugger-inspect-element | Inspect the React component hierarchy at a screen coordinate |
debugger-log-registry | Summarize console logs captured from the app |
debugger-reload-metro | Restart the Metro bundle without restarting the native process |
view-network-logs | Retrieve captured HTTP requests from the running app |
view-network-request-details | Get full details of one request by its requestId |
| Tool | Description |
|---|
native-devtools-status | Check whether native devtools are connected and injection is prepared |
native-describe-screen | Read the app's native accessibility screen description |
native-full-hierarchy | Get the complete UIKit view tree |
native-find-views | Search views by class, accessibility id, label, tag, or nativeID |
native-view-at-point | Inspect the deepest visible view at a native window point |
native-user-interactable-view-at-point | Inspect the deepest view at a point that would receive touch input |
native-network-logs | Retrieve requests captured at the native NSURLProtocol level |
| Tool | Description |
|---|
chromium-tabs | List, switch, open, and close tabs or BrowserWindows |
chromium-cookies | Read and write cookies, including HttpOnly ones |
chromium-storage | Read and write localStorage and sessionStorage of the active page |
| Tool | Description |
|---|
react-profiler-start | Start CPU profiling and React commit capture on the connected Hermes runtime |
react-profiler-stop | Stop profiling and collect the CPU profile and commit tree |
react-profiler-status | Check the profiler session state without side effects |
react-profiler-analyze | Analyze stored profiling data into a markdown performance report |
react-profiler-renders | Collect component render counts and durations from the live fiber tree |
react-profiler-fiber-tree | Inspect the React fiber tree as JSON |
react-profiler-cpu-summary | Return the top Hermes CPU hotspots by self-time |
react-profiler-component-source | Find a component's source file, line, and memoization status |
native-profiler-start | Start native profiling: Instruments on iOS, Perfetto on Android |
native-profiler-stop | Stop native profiling and export the trace |
native-profiler-analyze | Analyze an exported native trace into a markdown report |
profiler-combined-report | Cross-correlate React Profiler and native profiler data |
profiler-load | Restore a previously captured session from disk so query tools can use it |
profiler-commit-query | Query React commit data for iterative render investigation |
profiler-cpu-query | Query Hermes CPU profile data with targeted modes |
profiler-stack-query | Query native trace data for iterative native investigation |
| Tool | Description |
|---|
flow-start-recording | Start recording a new flow, resetting .argent/flows/<name>.yaml |
flow-add-step | Execute a tool call and record it as a step in the open recording |
flow-add-echo | Record an echo step that prints a message during replay |
flow-add-script | Run a local .mjs file and add it to the open recording |
flow-finish-recording | Finish the recording and write the flow to disk |
flow-execute | Run a saved flow |
flow-read-prerequisite | Read a flow's execution prerequisite without running it |
Staged through Argent Lens so you can compare proposals against the running app. These tools require the argent-lens flag and macOS. The flag is off by default, so argent tools omits them until you enable it.
| Tool | Description |
|---|
propose_variant | Stage one design variant for one on-screen element |
await_user_selection | Block until you pick among the staged variants |
Workspace and maintenance
| Tool | Description |
|---|
gather-workspace-data | Fetch a structured snapshot of the app project's workspace |
update-argent | Apply a pending Argent update |
dismiss-update | Silence update reminders for a number of hours |