All reports

@swmansion/argent

io.github.software-mansion/argent · version 0.19.0 · 221,997 weekly npm downloads · audited 2026-11-03

MCPVetter badge Notes

Version 0.32.0 (released after this audit) could not be started in our isolated environment on 2026-11-05, so this report still shows the last successful audit, of version 0.19.0.

Findings

No hidden-instruction or invisible-character findings in any tool, prompt, or resource description.

Claude Connectors Directory readiness

Checks the directory's published tool requirements that are visible from tools/list. Passing them does not guarantee acceptance.

Supply chain

Tools (73)

NameTitleHintDescription
list-devicesnoneList 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-devicenoneStart 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-appnoneOpen 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-appnoneTerminate 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-appnoneInstall 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-permissionsnoneGrant, 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-urlnoneOpen 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…
screenshotnoneCapture 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-diffnoneCompare 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-startnoneStart 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-stopnoneStop 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-tapnonePress 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-tabsnoneList 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-cookiesnoneRead 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-storagenoneRead 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-swipenoneExecute 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-scrollnoneScroll 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-dragnonePress 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-customnoneSend 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-pinchnoneExecute 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-rotatenoneSend 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…
buttonnonePress 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…
keyboardnoneType 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…
rotatenoneSet 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-remotenonePress 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-sequencenoneExecute 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-connectnoneConnect 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-statusnoneGet 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-evaluatenoneExecute 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-metrononeRestart 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-treenoneFetch 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-elementnoneInspect 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-registrynoneGet 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-logsnoneRetrieve 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-detailsnoneGet 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…
describenoneGet 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-elementnoneBlock 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-idlenoneBlock 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-startnoneStart 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-stopnoneStop 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-statusnoneCheck 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-analyzenoneAnalyze 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-sourcenoneFind 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-summarynoneReturn 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-rendersnoneScan 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-treenoneInspect 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-startnoneStart 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-stopnoneStop 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-analyzenoneAnalyze 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-querynoneQuery 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-querynoneQuery 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-querynoneQuery 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-reportnoneGenerate 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-loadnoneFetch 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-datanoneFetch 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-statusnoneCheck 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-logsnoneRetrieve 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-viewsnoneSearch 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-hierarchynoneGet 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-screennoneRead 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-pointnoneInspect 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-pointnoneInspect 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-servernoneStop 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-serversnoneStop 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-metrononeStop 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-recordingnoneStart 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-stepnoneExecute 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-echononeRecord 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-recordingnoneFinish 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-prerequisitenoneRead 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-executenoneRun 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-argentnoneApply 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-updatenoneClear 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…

Check your own setup

npx mcpvetter scan --live

Badge

Add this to a README:

[![MCPVetter](https://mcpvetter.com/badge/swmansion-argent.svg)](https://mcpvetter.com/servers/swmansion-argent)

Publish this server?

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.