io.github.software-mansion/argent · version 0.19.0 · 221,997 weekly npm downloads · audited 2026-11-03
Notes
No hidden-instruction or invisible-character findings in any tool, prompt, or resource description.
Checks the directory's published tool requirements that are visible from tools/list. Passing them does not guarantee acceptance.
| Name | Title | Hint | Description |
|---|---|---|---|
list-devices | none | List iOS simulators, Android emulators, connected physical Android devices, running Chromium apps, and Vega (Fire TV) devices in one place. Use at the start of a session to pick a target id ('udid' for iOS entries, 'seri… | |
boot-device | none | Start an iOS simulator, launch an Android emulator, start a Vega (Fire TV) Virtual Device, or spawn an Electron app and wait until it is ready to accept interactions. Pick the platform by which argument you pass: 'udid' … | |
launch-app | none | Open an app by its bundle id (iOS) or package name (Android), or confirm the running renderer (Chromium). Use when starting any app — prefer this over tapping home-screen / launcher icons. Also prepares the native-devtoo… | |
restart-app | none | Terminate then relaunch an app by bundle id / package name. Use when you need a clean in-memory state without a full reinstall. Also refreshes the native-devtools injection before the relaunch (the iOS slice on iOS, the … | |
reinstall-app | none | Install or reinstall an app on the device. The previous installation (if any) is uninstalled first so app data and runtime permissions are cleared. Use for a full reinstall after rebuilding, or to start from a clean app … | |
settings-permissions | none | Grant, deny, or reset a runtime permission for an app without navigating the system Settings UI. Use during test setup to pre-authorize (or explicitly deny) a service before the app asks, or `reset` so the permission dia… | |
open-url | none | Open a URL or URL scheme on the device. Use to navigate to a web page or deep-link into an app. On Chromium, this navigates the primary renderer to the given URL. Cross-platform schemes: https://, tel:, mailto:. iOS also… | |
screenshot | none | Capture a screenshot of the device screen (iOS simulator, Android emulator, Apple TV simulator, Vega, or Chromium app). Returns { image }; the MCP adapter renders it as a visible image unless the caller passed includeIma… | |
screenshot-diff | none | Compare two PNG screenshots and return a compact visual-diff summary. Accepts saved baseline/current PNG paths, or one saved PNG plus one live full-resolution capture from a device. Always provide udid so the simulator-s… | |
screen-recording-start | none | Start recording the device screen to a video file (h264 mp4, 30fps at the device's native resolution). By default stretches where the screen does not change are trimmed out (see trimStatic), so a long session with only b… | |
screen-recording-stop | none | Stop the screen recording started by `screen-recording-start` and retrieve the video: frame capture ends and ffmpeg finalizes the mp4. Also retrieves the video when the recording already ended on its own (time limit reac… | |
gesture-tap | none | Press the device screen (iOS simulator, Android emulator, or Chromium app) at normalized coordinates: x and y are fractions of screen width and height in 0.0–1.0 (not pixels). Sends a Down event followed by an Up event a… | |
chromium-tabs | none | List and switch the tabs / windows of a Chromium (CDP) app (an Electron app's BrowserWindows or a Chromium browser's tabs), and open or close them. - action="list": enumerate page targets with stable ids (`t1`, `t2`, …),… | |
chromium-cookies | none | Read and write cookies of a Chromium (CDP) app (via the Network domain, so HttpOnly cookies are included). - action="get" (url?): list cookies, optionally restricted to given URLs (defaults to the active page). - action=… | |
chromium-storage | none | Read and write localStorage / sessionStorage of a Chromium (CDP) app's active page. - action="get": with `key`, returns that value; without `key`, returns all entries. - action="set" (key, value): write an entry. - actio… | |
gesture-swipe | none | Execute a smooth swipe / drag touch gesture between two points on the device (iOS simulator or Android emulator). All from/to positions are normalized 0.0–1.0 (fractions of screen width/height, not pixels), same as gestu… | |
gesture-scroll | none | Scroll content in a Chromium app by dispatching mouse-wheel events at a point. Anchor x/y are normalized 0.0–1.0 (fractions of the window, not pixels), same coordinate space as gesture-tap and describe. Deltas are fracti… | |
gesture-drag | none | Press the left mouse button at a start point, move to an end point, and release — a desktop mouse drag in a Chromium app. All positions are normalized 0.0–1.0 (fractions of the window, not pixels), same coordinate space … | |
gesture-custom | none | Send a sequence of touch events for complex gestures. Use for: long press, drag-and-drop, custom scroll, pinch (second touch point). For simple taps use the gesture-tap tool. For straight-line scrolling use the gesture-s… | |
gesture-pinch | none | Execute a pinch-to-zoom gesture by moving two fingers toward or away from a center point to change the scale of on-screen content. All positions and distances are normalized 0.0–1.0 (fractions of screen width/height, not… | |
gesture-rotate | none | Send a two-finger circular arc gesture to rotate on-screen content by a specified angle. Two fingers are placed opposite each other at a fixed radius from the center, then swept from startAngle to endAngle degrees. All p… | |
button | none | Press a device hardware button (iOS simulator, Android emulator or device). iOS sends a Down then Up event automatically; Android injects a single `adb` key event. Supported buttons depend on the platform: home, back, po… | |
keyboard | none | Type text or press special keys on the device (iOS simulator, Android emulator or device, Chromium app, Vega Virtual Device, or Apple TV / Android TV) using keyboard events. Use when you need to enter text or trigger a n… | |
rotate | none | Set the device orientation to Portrait, LandscapeLeft, LandscapeRight, or PortraitUpsideDown. Use to test layout in a different orientation. Re-run `describe` afterwards — frame coordinates change with the orientation. R… | |
tv-remote | none | Press a TV remote / D-pad button (or a whole path of them) on a TV device — Apple TV (tvOS), Android TV (leanback), or Vega (Fire TV). A TV is navigated with a directional remote, not touch — use this instead of gesture-… | |
run-sequence | none | Execute multiple device interaction steps in a single call (iOS simulator, Android emulator, Apple TV / Android TV, or Chromium app). Use when you need sequential actions and do NOT need to observe the screen between the… | |
debugger-connect | none | Connect to a JS runtime CDP debugger. iOS / Android / Vega: connects to Metro's CDP endpoint on the given port. Chromium: re-uses the page CDP session opened by boot-device — port is ignored. Returns connection info incl… | |
debugger-status | none | Get JS runtime debugger connection status and diagnostic info. Use when you need to verify connectivity before using other debugger tools. Returns port, projectRoot (empty on Chromium and on legacy Metro, e.g. Vega), dev… | |
debugger-evaluate | none | Execute arbitrary JavaScript in the app's JS runtime via CDP — Hermes on iOS / Android / Vega, V8 on Chromium. Returns the evaluation result as a JSON-serializable value, along with deviceName, appName, and logicalDevice… | |
debugger-reload-metro | none | Restart the Metro JS bundle in the connected React Native app without restarting the native process. Use when you want to apply code changes or reset JS state. Returns { reloaded, port, method, deviceName, appName, logic… | |
debugger-component-tree | none | Fetch the current screen of a running React Native app as a compact component text tree. Only shows on-screen components with unique positions — off-screen (scrolled) content, full-screen transparent wrappers, and implem… | |
debugger-inspect-element | none | Inspect the React component hierarchy at a screen coordinate (x, y). Returns components from the tapped element upward through its parent hierarchy, each with its source file:line and a code fragment. The first items (l… | |
debugger-log-registry | none | Get a summary of all console logs captured from the app's JS runtime. Returns the log file path, entry counts by level, and message clusters (grouped by similarity). Works against Hermes (iOS / Android / Vega) and V8 (Ch… | |
view-network-logs | none | Retrieve captured network (HTTP) requests from the running app. Returns a paginated list of requests with method, URL, status, resource type, size, and duration. Each entry includes a requestId that can be passed to view… | |
view-network-request-details | none | Get full details of a specific network request by its requestId (from view-network-logs). Returns request/response headers (sensitive headers redacted), status, timing, and optionally the response body. Large response bo… | |
describe | none | Get the accessibility / DOM element tree for the current screen. On iOS, uses the AXRuntime accessibility service to inspect whatever is currently visible — including system dialogs, permission prompts, and any foregroun… | |
await-ui-element | none | Block until a UI element reaches an expected state or a timeout elapses, so you don't have to poll screenshot/describe yourself. Conditions: exists — the selector matches an element anywhere in the tree. visible … | |
await-screen-idle | none | Block until the screen has rendered content and stopped changing, or a timeout elapses. Polls the same accessibility / DOM tree as `describe` every pollIntervalMs (default 200ms) until it has content and that content ho… | |
react-profiler-start | none | Start CPU profiling + React commit capture on the connected Hermes runtime. Delegates React commit capture to the in-app React DevTools backend (ri.startProfiling). If another tool-server already owns the session, return… | |
react-profiler-stop | none | Stop CPU profiling and collect the cpuProfile + React commit tree. Reads commit data from the in-app React DevTools backend. Stores results in the ReactProfilerSession for later use by react-profiler-analyze or react-pro… | |
react-profiler-status | none | Check the state of the React profiler session without side effects. Use after an interruption (debugger disconnect, unexpected error, agent pause) to decide whether to continue with react-profiler-stop, start a new sessi… | |
react-profiler-analyze | none | Analyze stored profiling data and return a markdown performance report. Returns { report, reportFile, hotCommitsTotal, hotCommitsShown, sessionFiles }. The report is structured around hot React commits (≥16ms absolute fl… | |
react-profiler-component-source | none | Find a React component's source via tree-sitter AST lookup: returns file path, line number, memoization status (isMemoized, hasUseCallback, hasUseMemo), and 50 lines of source for a named React component. Call this per-f… | |
react-profiler-cpu-summary | none | Return a raw Hermes CPU flamegraph summary (top hotspot functions by self-time). FOR DEDICATED CPU INVESTIGATION ONLY — do NOT call this as part of a normal profiling session. Use react-profiler-analyze instead; it cover… | |
react-profiler-renders | none | Scan the live React fiber tree to collect component render counts and durations. Returns a markdown table of the top re-rendering components. No profiling session required — works on a live connected app. Use when you wa… | |
react-profiler-fiber-tree | none | Inspect the React fiber tree and return a JSON representation of the component hierarchy. Use when tracing ancestry of a library component or checking for useMemoCache hook (confirms React Compiler is active on a compone… | |
native-profiler-start | none | Start native profiling on a booted device. iOS: Instruments via xctrace (CPU, hangs, memory). Android: Perfetto (CPU, jank, RSS-growth weak signal). Auto-detects the running app process unless app_process is explicitly p… | |
native-profiler-stop | none | Stop native profiling and export trace data. iOS: sends SIGINT to xctrace, waits for packaging, then exports CPU, hangs, and leaks XML. Android: sends SIGTERM to the perfetto daemon, polls /proc/<pid>, then `adb pull`s t… | |
native-profiler-analyze | none | Analyze exported native trace data and return an LLM-optimized markdown report. iOS: parses CPU time profile, UI hangs, and memory leaks from the exported XML files. Android: queries the Perfetto .pftrace via the in-proc… | |
profiler-cpu-query | none | Query Hermes CPU profile data with targeted modes for iterative investigation. Requires react-profiler-stop (and ideally react-profiler-analyze) to have been called first. Modes: - top_functions: Global CPU hotspots rank… | |
profiler-commit-query | none | Query React commit data for iterative investigation of render performance. Requires react-profiler-stop to have been called first. Modes: - by_component: All commits where a specific component rendered, with causes and d… | |
profiler-stack-query | none | Query native profiler trace data for iterative investigation of native performance. Requires native-profiler-stop → native-profiler-analyze to have been called first. Modes: - hang_stacks: Full CPU context during a speci… | |
profiler-combined-report | none | Generate a cross-correlated report combining React Profiler and native profiler data. Maps native hangs to React commits using wall-clock time alignment. Requires both react-profiler-analyze and native-profiler-analyze t… | |
profiler-load | none | Fetch and restore a previously captured profiling session from disk into memory so query tools can operate on it. This is the disk-restore counterpart to react-profiler-stop/native-profiler-stop, which write data, and to… | |
gather-workspace-data | none | Fetch a structured snapshot of a mobile app project's workspace. Returns package.json contents, metro/babel config text, app.json, eas.json, tsconfig, platform directory presence (ios/, android/), presence of android/gr… | |
native-devtools-status | none | Check whether native devtools are connected to a specific app and whether the next launch is prepared for injection. Use when you need to verify native devtools readiness before calling native-full-hierarchy, native-desc… | |
native-network-logs | none | Retrieve network requests captured at the native NSURLProtocol level. Unlike the JS-level network inspector (view-network-logs), this captures ALL network traffic from the app including native modules, Swift/Objective-C… | |
native-find-views | none | Search for specific UIViews in the running app by class name, accessibility identifier, label, tag, or React Native nativeID. Use when you need to locate a specific view by its properties without dumping the entire hiera… | |
native-full-hierarchy | none | Get the complete UIKit view tree for the running app. WARNING: Output can be extremely large (100KB–500KB+) for complex apps, especially those built with SwiftUI. Prefer native-find-views for targeted queries. Use skipCl… | |
native-describe-screen | none | Read the running app's native accessibility screen description via injected native devtools. Returns a flat list of accessibility leaf elements with: - raw native point-space frame and tapPoint - normalizedFrame and nor… | |
native-view-at-point | none | Inspect the deepest visible UIView at a raw native window point. Unlike native-user-interactable-view-at-point, this ignores userInteractionEnabled, so it answers "what is visually here?" rather than "what would receive… | |
native-user-interactable-view-at-point | none | Inspect the deepest UIView at a raw native window point that would actually receive touch input. Unlike native-view-at-point, this respects userInteractionEnabled and is closer to UIKit hit-testing semantics. IMPORTANT… | |
stop-simulator-server | none | Stop the transport session for a specific device (iOS / Android: simulator-server process; Chromium: CDP WebSocket) and free its resources. Use when you are done interacting with one device but want to keep others runnin… | |
stop-all-simulator-servers | none | Stop all running simulator-server processes (iOS + Android), native devtools services, and Chromium CDP sessions, freeing their resources. Call this when your session ends or the user says they are done. Returns { stoppe… | |
stop-metro | none | Stop the Metro bundler process listening on a given port (default 8081). Use when ending a React Native session or when Metro must be restarted. Returns { stopped, port, pids }; stopped=false if no process is found on th… | |
flow-start-recording | none | Start recording a new flow. Creates a .yaml file in the .argent/flows/ directory. Use when you want to capture a reusable sequence of device interactions for later replay. Returns { message, flowFile, savedTo } and optio… | |
flow-add-step | none | Execute a tool call and record it as a step in the active flow. Use when recording a flow with flow-start-recording and you want to run and capture each action. A coordinate `gesture-tap` is recorded as a portable `tap: … | |
flow-add-echo | none | Record an echo step in the active flow. Echo steps print a message when the flow is replayed — useful as labels between tool calls. Use when you want to annotate a recorded flow with a human-readable label or checkpoint … | |
flow-finish-recording | none | Finish recording the active flow. Returns a summary of all recorded steps and the final YAML content. Use when you have added all desired steps and want to finalize the flow file. Fails if no active flow recording is in … | |
flow-read-prerequisite | none | Read the execution prerequisite of a flow without running it — a saved flow from the .argent/flows/ directory, or an explicit boundary-managed flow_path. Returns the prerequisite description so you can verify the require… | |
flow-execute | none | Run a saved flow from the .argent/flows/ directory, or an explicit boundary-managed flow_path. Steps run in order: `launch` starts an app from scratch (terminate + relaunch) and waits until it is ready; `tool` calls disp… | |
update-argent | none | Apply a pending Argent update. Only call this tool when the user has explicitly consented to updating Argent in this conversation. Use when an update notification indicates a new version is available and the user agrees … | |
dismiss-update | none | Clear the Argent update notification for the given number of hours. Use when the user asks to postpone or silence update reminders. Returns { message } confirming the suppression duration. Fails if the hours value is neg… |
npx mcpvetter scan --liveAdd this to a README:
[](https://mcpvetter.com/servers/swmansion-argent)Get the MCPVetter verified badge, a re-audit within 24 hours of every npm release, and an email whenever tools, findings, or Claude directory readiness change. $29 per server per month. You prove ownership first, free.