get_status
Get Frida Status
Get an overview of connected devices, active sessions (with platform, script count and last activity), hooks, traces, and the most recent session detaches / process crashes (recent_detaches). Use this first to understand what is available before starting any instrumentation work, and after a session is lost to see why.
Parametersresponse_format
Get help on how to use frida-mobile-mcp tools. Use this to learn about available capabilities, method hooking patterns, address notation, script kinds (classic/esm/bundle), TLS capture and example workflows. Topics: overview, hooking, tracing, memory, scripts, native, tls, mobile, examples, advanced, evasion, script_catalog, script_api, recipes.
Parameterstopicresponse_format
explore_app
Explore Mobile App
Launch a mobile app and gather comprehensive initial context including loaded classes, modules, and libraries. This is the recommended starting point for any app analysis. The app will be spawned in suspended mode, instrumented, then resumed. Returns: pid, platform, loaded modules, and filtered class list.
Parametersdevicetargetrequiredclass_filterresponse_format
Hook a method to intercept calls with auto device/session management. Provide the app target (or a session_id of an existing session) and method pattern. Supports Java methods (Android: "com.example.Class.method"), Objective-C methods (iOS: "-[NSURLSession dataTaskWithRequest:]"), and native functions in any notation: "libssl.so!SSL_read" (module export), "libfoo.so+0x1234" or "libfoo.so+4660" (module-relative offset, as shown by Ghidra/IDA), "0x7f1234567890" (absolute address), or "!open" (global export searched across all modules). Native backtraces are reported as "module+0xoff (symbol)". Java overloads: append a signature to hook ONE overload, e.g. "com.pkg.Class.encrypt(byte[], java.lang.String)" (without one, every overload is hooked). Static-analysis findings can be passed as "evidence" instead of "method": {module, offset} (image-base-relative offset from Ghidra/IDA) or {module, address, image_base}, or {class, signature} for Java (jadx/describe_class/JVM descriptor). After hooking, use get_messages to retrieve intercepted calls.
Parametersspawndevicemethodtargetevidencelog_argslog_retvalsession_idlog_backtraceresponse_formatinterceptor_options
trace_method
Trace Method Calls
Trace function calls matching a pattern for a specified duration. Simplified frida-trace equivalent. Supports glob patterns like "com.example.network.*" for Java, "-[NSURL*]" for ObjC, and "libssl.so!SSL_*" for native. Returns all captured invocations after the duration expires.
Parametersdevicemethodrequiredtargetlog_argslog_retvalsession_idresponse_formatduration_secondsinterceptor_options
execute_script
Execute Custom Frida Script
Execute a custom Frida JavaScript/TypeScript script in a target process (Frida 17 agent). Provide either inline source code or a file path. Three source kinds are supported and detected automatically (override with `source_kind`): classic (non-module) JavaScript, where the `Java` and `ObjC` globals are auto-injected by platform (Java on Android, ObjC on iOS/macOS; override with `bridges`) so legacy Java.perform()/ObjC scripts keep working with their own line numbers; ES modules (import/export, JS or TS) such as `import Java from "frida-java-bridge"`, which are compiled on the host with the Frida Compiler (bridges are bundled by the imports, so `bridges` is ignored); and frida-compile bundles (source starting with the 📦 marker), which are loaded as-is. The full Frida API (Interceptor, Memory, Module, Process, NativePointer, ...) is available everywhere. Results are sent via send() and retrieved with get_messages. `timeout_ms` bounds the script's initial run (default 30000 for one-shot scripts, 0 for persistent ones); a script that overruns is interrupted, then terminated, and the call fails with SCRIPT_TIMEOUT including the partial messages. Use validate_script to check syntax/types without a device. Note: custom scripts must be explicitly enabled in config (allowCustomScripts: true).
Parametersdevicesourcetargetrequiredbridgesfile_pathpersistentsession_idtimeout_mssource_kindresponse_formatskip_validation
run_prebuilt_script
Run Pre-built Script
Run a pre-built Frida script from the built-in library. Call without script_name to list all available scripts. Available scripts include: ssl_pinning_bypass, root_jailbreak_bypass, class_enumeration, method_hook, crypto_monitor, network_inspector, keychain_prefs, filesystem_monitor, anti_frida_evasion.
Parametersdevicetargetoptionsscript_nameresponse_format
search_classes_and_methods
Search Classes and Methods
Search for classes and their methods by pattern in a running app. Combines class enumeration and method listing. Use regex patterns like "Login", "com\.example\.auth.*", or "NSURLSession". Returns matching classes with their methods when include_methods is true.
Parameterslimitdevicetargetpatternrequiredsession_idinclude_methodsresponse_format
describe_class
Describe Class
Return the full shape of ONE loaded app class so you can pick an exact method overload before hooking. Android: every declared method with parameter types, return type, modifiers and a ready-to-use `signature` (e.g. "encrypt(byte[], java.lang.String)"), constructors (as "$init(...)"), fields, superclass and interfaces; searches all class loaders. iOS: selectors with Objective-C type encodings, superclass and protocols. Pass a returned signature verbatim to hook_method as evidence: {class, signature} to hook exactly that overload. The class must already be loaded; if it is not, use watch_loads or search_classes_and_methods.
Parametersdevicetargetclass_namerequiredsession_idresponse_formatinclude_inherited
discover_crypto
Discover Crypto / Candidate Hook Targets
Find where an app actually performs cryptography (or any API family), without assuming javax.crypto. In one pass it enumerates: Java/ObjC classes whose name matches a pattern (across all class loaders), and native export symbols matching the pattern or a known crypto/TLS symbol (EVP_*, SSL_read/write, CCCrypt, RC4, AES_, mbedtls_, ...). Returns ranked candidates — app-owned classes first, then framework classes, then native symbols. Native candidates hook as-is ("module!symbol"); Java/ObjC candidates are CLASSES — pass "Class.method" to hook_method (method names are in the `java` list), or trace "Class.*". Use this before guessing a hook when the goal is "capture the key", "trace the cipher", etc.
Parameterslimitdevicetargetpatternsession_idinclude_methodsresponse_format
find_secrets_in_memory
Find Secrets in Memory (Content-Aware)
Scan live process memory for the STRUCTURE of secrets, not just names or byte patterns. Finds keys even when you never reached the code that uses them: an RC4 key schedule (256-byte permutation of 0..255, byte[] or Java int[256] — the rc4demo case), an AES key schedule (aeskeyfind-style verification, AES-128/192/256, both encryption AND decryption schedules — and it is MODE-INDEPENDENT: the same expanded key backs CBC/CTR/GCM/XTS), a ChaCha20/XChaCha20 key (located by the exact "expand 32-byte k" sigma constant, key at +16) and Salsa20 state, high-entropy 16/24/32-byte buffers (candidate symmetric keys), PEM/DER private-key headers, and JWT tokens. Raw-key-only ciphers (AES-NI with no in-memory schedule) fall back to high_entropy_key + monitor_crypto at the API boundary. Defaults to writable (heap) ranges where live keys sit. Returns candidates with a module+offset address and a hex/text preview; read the full bytes with read_memory, or hand one to generate_memory_pattern. Complements discover_crypto (name-only) and scan_memory (fixed byte-pattern only).
Parameterslimitscopedevicetargetmax_bytessession_idmin_entropyrecognizersresponse_formatmax_entropy_hits
trace_coverage
Trace Coverage (Reachability Map)
Arm a broad set of cheap entry-hooks over a target set and track which have been REACHED (covered) vs which are still COLD — the reachability signal for a drive loop. Unlike trace_method (time-boxed, logs every call), this is persistent and entry-only: it answers "what code have I NOT exercised yet, so where should I keep driving?". Scope can be a single class (all its methods), a class/package glob ("com.example.*"), a native module glob ("libfoo.so!*"), or an ObjC pattern ("-[MyClass *]"). Workflow: arm it, then alternate trigger_and_wait (drive the UI) with trace_coverage {report_only:true} to watch the cold set shrink. Each target fires at most once (first-seen), so hot methods do not flood output.
Parametersscopedevicetargetsession_idcoverage_idmax_targetsreport_onlyresponse_format
monitor_crypto
Monitor Crypto (Wide-Net Oracle)
Cast a wide net over cryptography instead of hooking one method at a time. In a single persistent script it discovers and hooks ALL likely crypto sinks at once — app-owned Java classes whose name matches a crypto pattern (every overload of every declared method), plus the framework sinks that almost every app funnels through: javax.crypto Cipher (doFinal/init/getInstance), Mac, MessageDigest and SecretKeySpec on Android; CommonCrypto (CCCrypt, CCCryptorCreate, CC_SHA256, CC_MD5) on iOS; and native OpenSSL/BoringSSL (EVP_*Update, RC4, AES_set_encrypt_key). Every call dumps its byte[]/String key, input and output as hex, so you capture the key and plaintext WITHOUT knowing the exact method. This is persistent instrumentation (like hook_method): it returns immediately, then you drive the app and read the captured events with get_messages. Use when the goal is "grab the key / see the plaintext" and discover_crypto gave too many candidates to hook by hand.
Parametersdevicetargetpatternlog_datasession_idmax_targetsresponse_format
generate_memory_pattern
Generate Memory Pattern (Anchor + Offset)
Turn a secret you already located (e.g. from find_secrets_in_memory) into a reusable anchor pattern: a stable byte signature near the key plus the offset from it to the key. Reads a small window around the address, then derives a recognizer-aware anchor (ChaCha sigma constant, PEM/DER/JWT header, or the longest stable run adjacent to the key). Returns a scan_memory pattern to re-locate the secret by shape across restarts, plus a friTap offsets entry and an ms_agent anchor to hand to capture_tls. This finds no new secret — give it one you have.
Parameterssizerequiredtypelabeldevicetargetaddressrequiredsession_idcontext_bytesresponse_format
drive_coverage
Drive Coverage (Autonomous UI Loop)
Autonomously drive the UI of an already-instrumented session toward uncovered code and stop the moment a signal fires. This arms NOTHING — first arm monitor_crypto and/or trace_coverage, then call drive_coverage to tap through on-screen elements breadth-first, correlating each tap with new hook output (snapshot → tap → wait → delta, like trigger_and_wait in a loop). It stops on the first delta message that matches `stop_on` (default "crypto_event") or looks like a captured key/secret, when coverage stalls for several steps, when no untried elements remain, or at max_steps / the wall-clock cap. Supply `coverage_id` to measure the covered delta the drive produced. Use it to reach a crypto path hands-free instead of tapping manually; read the full output afterwards with get_messages.
Parametersstop_onmax_stepssession_idrequiredcoverage_idresponse_formatstep_timeout_ms
watch_loads
Watch Late Loads and Anti-Instrumentation Signals
Install a persistent watcher that reports what the app does AFTER attach, straight into the session message buffer. Three signal families, each toggleable: (1) native libraries (.so) loaded late (dlopen/android_dlopen_ext), observed via Frida's loader module-load notifications — no dlopen hook, so it will not destabilize the target — meaning a library that only appears after a UI action is still seen; (2) Java classes loaded late via ClassLoader.loadClass (Android only; the Java.available guard makes it a no-op elsewhere); (3) anti-instrumentation / anti-debug reads of canonical /proc locations (maps, status, task) via open/fopen. The watcher stays loaded and keeps emitting: drive the app (e.g. mobile_action), then call get_messages to read the watch_event entries. Pair with discover_crypto / hook_method once a late-loaded target shows up. Set spoof=true (needs memoryWriteEnabled) to go beyond reporting and actively scrub Frida signatures / zero TracerPid from those /proc reads; for a fuller stealth set use the anti_frida_evasion prebuilt script.
Parametersspoofdevicetargetsession_idwatch_nativewatch_tamperwatch_classesresponse_format
read_memory
Read Process Memory
Read raw memory from a target process. Requires an active session. Address in any notation: "0x7fff12345678" (absolute), "libfoo.so+0x1234" or "libfoo.so+4660" (module-relative offset), "libssl.so!SSL_read" (module export), or "!open" / "open" (global export). Max 4MB per read. Returns hex-encoded bytes plus the resolved absolute address and module+offset (rva).
Parameterssizerequiredaddressrequiredsession_idrequiredresponse_format
write_memory
Write Process Memory
Write raw bytes to process memory. DISABLED by default for safety - enable via config (memoryWriteEnabled: true). Provide hex-encoded data. Address in any notation: "0x7fff12345678" (absolute), "libfoo.so+0x1234" or "libfoo.so+4660" (module-relative offset), "libssl.so!SSL_read" (module export), or "!open" / "open" (global export).
Parametersdatarequiredaddressrequiredsession_idrequiredresponse_format
scan_memory
Scan Process Memory
Scan process memory for a byte pattern. Pattern format: "48 89 5c 24 ?? 57" where ?? is a wildcard. Optionally limit scan to a specific module.
Parametersmodulepatternrequiredsession_idrequiredresponse_format
bypass_ssl_pinning
Bypass SSL Pinning
One-click SSL certificate pinning bypass for the target app. Auto-detects platform (Android/iOS) and applies the appropriate bypass techniques. On Android: hooks TrustManager, OkHttp CertificatePinner, and Conscrypt. On iOS: hooks SecTrust, ATS, and BoringSSL verification. Returns which bypass methods were successfully installed.
Parametersdevicetargetsession_idresponse_format
capture_tls
Capture TLS (friTap)
Capture TLS session keys (NSS key log format) and decrypted plaintext from the target using the friTap agent (OpenSSL/BoringSSL, Conscrypt, NSS, GnuTLS, wolfSSL, mbedTLS, Secure Transport, ...). By default the app is spawned suspended, friTap is loaded, then the app is resumed so early handshakes are caught. Key log lines are written to keylog_path (usable with Wireshark tls.keylog_file) and plaintext records are buffered as fritap_datalog messages for get_messages (requires full_capture). Needs the friTap agent bundle: pip install friTap, FRITAP_AGENT_PATH, or allow_download.
Parametersspawndevicetargetrequiredoffsetspatternsanti_rootpcap_pathkeylog_pathfull_captureallow_downloadresponse_formatduration_seconds
get_messages
Get Script Messages
Retrieve buffered messages from active scripts and hooks. Messages include hook invocations, trace hits, script output (send() calls), and errors. Use "since" for pagination to get only new messages.
Parameterslimitsincescript_idsession_idrequiredresponse_format
stop_instrumentation
Stop Instrumentation
Clean up all hooks, scripts, and traces on a target. The "undo everything" tool. Detaches the Frida session and frees all resources. Use when you are done analyzing an app or want to start fresh.
Parametersalltargetsession_idresponse_format
unload_script
Unload Script
Unload a single script (hook, trace or custom script) from a session while keeping the session attached. Use the script_id returned by hook_method, trace_method, execute_script or run_prebuilt_script. Hooks and traces that belong to the script are removed from the server state. Use stop_instrumentation to tear down a whole session instead.
Parametersscript_idrequiredsession_idrequiredresponse_format
mobile_action
Mobile UI Action
Gateway to mobile-mcp UI automation tools. Perform screenshots, taps, swipes, text input, app management and more. Common actions: mobile_take_screenshot, mobile_list_elements_on_screen, mobile_click_on_screen_at_coordinates (params: {x, y}), mobile_swipe_on_screen (params: {direction}), mobile_type_keys (params: {text}), mobile_launch_app (params: {appId}), mobile_list_apps. Call without action to see all available actions.
Parametersactionparamssession_idresponse_format
trigger_and_wait
Trigger and Wait for Instrumentation
Correlate a UI action with instrumentation output in one round-trip: optionally perform a mobile_action (tap/launch/type) on the session's device, then block until at least `expect_messages` new messages/hook hits arrive (or timeout). Returns exactly the messages the trigger produced and which hooks fired. This is how you confirm "this tap ran the hooked code" — or learn "nothing fired, the hypothesis is wrong" — instead of tapping blindly and polling get_messages. Install hooks first (hook_method / discover_crypto → hook_method), then trigger_and_wait.
Parametersactionparamssession_idrequiredtimeout_msexpect_messagesresponse_format
detect_app_technologies
Detect App Technologies
Detect what libraries, frameworks, and security mechanisms an app uses. Returns structured results with recommended script targets. Run this before choosing which pre-built scripts to use.
Parametersdevicetargetsession_idresponse_format
validate_script
Validate Frida Script
Check a Frida script for syntax, type and Frida 17 API problems without a device. Use it before execute_script. Classic (non-module) scripts get a JavaScript syntax check plus a lint for APIs removed in Frida 17 (static Module/Memory helpers, *Sync enumerators); referencing them throws at runtime, so they make the result not ok. ES module scripts (import/export) are compiled with the Frida Compiler: strict (default) runs a full TypeScript type check; plain JavaScript is only syntax-checked unless language is "ts". frida-compile bundles (source starting with the 📦 marker) are accepted as-is. Provide either inline source or a file path.
Parameterssourcestrictlanguageplatformfile_pathresponse_format
search_recipes
Search Recipe Library
Search the purpose-indexed library of ready-to-run classic-JS Frida recipes (custom Java crypto-key capture, standard javax.crypto key/IV, native export hook, JNI RegisterNatives discovery, custom-classloader enumeration, intent/deeplink trace, WebView bridge, iOS Keychain). Returns ranked recipes with their classic-JS source and usage notes; adapt the source and run it with execute_script. An empty query lists the whole library.
Parameterslimitqueryplatforminclude_sourceresponse_format
save_script
Save Frida Script
Save a Frida script to the local library (~/.config/frida-mobile-mcp/scripts/) so it can be re-run later with run_saved_script or shared with export_script. Stores the raw source as <name>.js plus a <name>.json metadata file (sha256, size, created timestamp, description). Names are restricted to letters, digits, underscores and hyphens. Refuses to overwrite an existing script unless overwrite is true. Requires allowCustomScripts to be enabled in config.
Parametersnamerequiredsourcerequiredoverwritedescriptionresponse_format
list_saved_scripts
List Saved Frida Scripts
List the Frida scripts saved in the local library (~/.config/frida-mobile-mcp/scripts/) with their description, creation time and size. Returns an empty list when nothing has been saved yet. No device is required.
Parametersresponse_format
run_saved_script
Run Saved Frida Script
Load a script previously saved with save_script into a target process. Resolves (or reuses) a session the same way execute_script does and runs the stored source as a custom agent: classic JavaScript gets the Java/ObjC bridges injected by platform, ES modules are compiled with the Frida Compiler, and frida-compile bundles are loaded as-is. Provide a target (app id, process name or PID) or an existing session_id. Requires allowCustomScripts to be enabled in config.
Parametersnamerequireddevicetargetpersistentsession_idresponse_format
export_script
Export Standalone Frida Script
Turn a Frida script into a STANDALONE classic .js file that the plain frida / frida-tools 17 CLI can run with `frida -U -f <package> -l file.js`, without this MCP server. The output is a header comment + the frida-mobile-mcp preamble helpers + the script body. Provide exactly one of source (inline) or name (a saved script). It does NOT bundle the Java/ObjC bridges (the Frida 17 CLI injects those) and does NOT emit TypeScript. With out_path the file is written and its path returned; otherwise the text is returned inline. This tool only transforms text, so it does not require allowCustomScripts.
Parametersnamesourcepackageout_pathplatformresponse_format
Enumerate all Frida-visible devices including local, USB, and remote devices. Equivalent to frida-ls-devices CLI command.
Parametersresponse_format
select_device
Select Device
Explicitly select the active Frida device for subsequent operations.
Parametershosttypedevice_idresponse_format
get_device_info
Get Device Info
Get detailed information about a device including OS version, architecture, and system parameters.
Parametersdevice_idresponse_format
list_processes
List Processes
List running processes on the target device. Equivalent to frida-ps CLI command.
Parametersdevice_idresponse_format
list_applications
List Applications
List installed and running applications on the target device.
Parametersdevice_idresponse_format
get_frontmost_application
Get Frontmost Application
Get the currently foreground application on the device.
Parametersdevice_idresponse_format
spawn_process
Spawn Process
Spawn a new process in suspended state for early instrumentation. The process will be paused until resume_process is called.
Parametersdeviceprogramrequiredresponse_format
attach_process
Attach to Process
Attach to an already running process by PID or name.
Parametersdevicetargetrequiredresponse_format
resume_process
Resume Process
Resume a suspended process (after spawn_process).
Parameterspidrequireddeviceresponse_format
Kill a process on the target device.
Parameterspidrequireddeviceresponse_format
detach_session
Detach Session
Detach from a specific Frida session, unloading all scripts.
Parameterssession_idrequiredresponse_format
Enable, disable, or list device-wide spawn gating. When enabled, every newly spawned process (including app-launched child/isolated processes that often run RASP/anti-Frida checks) is held suspended until released. Use "list" to see pending spawns and children, then attach_process + hook_method, and resume_process to release each by PID.
Parametersactionrequireddeviceresponse_format
Enable or disable child gating on an existing session. When enabled, processes forked/exec'd by the instrumented process are held so they can be instrumented too (e.g. an app that moves detection into a child process). Requires device-wide spawn gating to catch the held children; list them with spawn_gating action="list".
Parametersenabledsession_idrequiredresponse_format
eternalize_script
Eternalize Script
Make a loaded script survive session detach: frida pins it in the target so it keeps running after we detach (or the host exits). Trade-off — once eternalized the script can no longer send messages back, be unloaded, or be inspected; it is fire-and-forget persistence. Use it to leave a bypass/monitor running while you free the session. Give the session_id and the script_id returned by hook_method / execute_script / watch_loads.
Parametersscript_idrequiredsession_idrequiredresponse_format
list_sessions
List Sessions
List all active Frida sessions managed by this server.
Parametersresponse_format
enumerate_modules
Enumerate Modules
List loaded modules (shared libraries) in the target process with name, base, end (base+size), size and path. Optional case-insensitive regex `filter` matches against name or path. Use base/end to rebase a Ghidra/IDA project; Addresses are absolute runtime pointers; subtract the module base to get the Ghidra/IDA offset (or use resolve_address with a "module+0xoff" target).
Parametersfiltersession_idrequiredresponse_format
enumerate_exports
Enumerate Module Exports
List exports (functions and variables) of a specific module, paginated with offset/limit. Hook results with hook_method using "module!name". Addresses are absolute runtime pointers; subtract the module base to get the Ghidra/IDA offset (or use resolve_address with a "module+0xoff" target).
Parameterslimitoffsetsession_idrequiredmodule_namerequiredresponse_format
enumerate_imports
Enumerate Module Imports
List imports of a specific module (functions it calls in other libraries), paginated with offset/limit. Each entry carries the providing `module` when known, so "module!name" can be hooked directly. Addresses are absolute runtime pointers; subtract the module base to get the Ghidra/IDA offset (or use resolve_address with a "module+0xoff" target).
Parameterslimitoffsetsession_idrequiredmodule_namerequiredresponse_format
enumerate_symbols
Enumerate Module Symbols
List symbols (including non-exported/debug symbols) of a specific module. Only available on Linux, Android, iOS and macOS. Filtering (case-insensitive regex on the symbol name) and offset/limit paging happen inside the agent, so large symbol tables stay cheap. Addresses are absolute runtime pointers; subtract the module base to get the Ghidra/IDA offset (or use resolve_address with a "module+0xoff" target).
Parameterslimitfilteroffsetsession_idrequiredmodule_namerequiredresponse_format
hook_function
Hook Function (Low-Level)
Low-level hook with custom onEnter/onLeave JavaScript handlers. For advanced use when hook_method does not provide enough control. Custom handler bodies require allowCustomScripts: true in config; without them the hook sends default enter/leave events. Handler bodies are compiled as functions (new Function) inside the agent: `this` is the Interceptor invocation context (this.context, this.returnAddress, this.threadId, and any fields you set in on_enter are visible in on_leave). Java/ObjC globals are available (auto-injected by platform). A static-analysis finding can be passed as evidence {module, offset} or {module, address, image_base} instead of target.
Parameterstargetevidenceon_enteron_leavesession_idrequiredresponse_formatinterceptor_options
unhook_function
Unhook Function
Remove a specific hook by its hook ID.
Parametershook_idrequiredresponse_format
resolve_address
Resolve Native Address
Translate between absolute process addresses and static-analysis coordinates. Give "0x7f..." to get module+0xoffset (+ nearest symbol); give "libfoo.so+0x1234" or "libfoo.so!func" to get the absolute runtime address. Use it to hand addresses between Frida and Ghidra/IDA.
Parameterstargetrequiredsession_idrequiredresponse_format
analyze_native_function
Analyze Native Function
Static-style analysis of a native function at runtime: function range (Process.findFunctionRange), basic blocks and edges (Frida 17.12+ ControlFlowGraph; falls back to linear disassembly until the first return and says so in `limitations`), and the first instructions. All addresses are reported as absolute and as module+0xoffset for cross-referencing with Ghidra/IDA.
Parameterstargetrequiredmax_blockssession_idrequiredresponse_formatmax_instructions
dump_module_memory
Dump Module Memory
Dump a loaded module from process memory to a file on the host (e.g. an unpacked/decrypted library). The file is laid out base-relative: file offset 0 is the module base, readable ranges are copied in 1 MiB chunks, unreadable gaps are zero-filled, so it can be imported into Ghidra/IDA as a raw binary at the returned `base`. out_path must be absolute and inside the current directory, the OS temp directory or ~/.config/frida-mobile-mcp/dumps.
Parametersout_pathrequiredmax_bytessession_idrequiredmodule_namerequiredresponse_format
List the threads of the target process (id, name, state, current pc as module+0xoffset). With backtraces: true each thread also gets a symbolised backtrace (up to 8 frames) captured from its register context.
Parametersbacktracessession_idrequiredresponse_format
frida_server_status
frida-server Status
Report whether frida-server is running on an Android device (via adb): its PIDs, the device CPU ABI, the matching frida release arch, and the exact GitHub .xz asset URL to download for the installed frida-node version.
Parametersportdeviceprocess_nameresponse_format
frida_server_install
Install frida-server
Push a local frida-server binary to an Android device and make it executable (adb push + chmod 755). Download and decompress the correct .xz for the device ABI first (frida_server_status gives the asset URL).
Parametersdeviceoverwritebinary_pathrequiredremote_pathresponse_format
frida_server_start
Start frida-server
Start frida-server detached on an Android device (adb shell, daemonized with -D), optionally via su. Supports a custom listen address/port and a renamed binary path for stealth setups, then confirms the server came up.
Parametersportdeviceuse_suextra_argsremote_pathprocess_namelisten_addressresponse_format
frida_server_stop
Stop frida-server
Stop frida-server on an Android device by sending a signal to the matching process (adb shell pkill, optionally via su), then report any remaining PIDs.
Parametersdevicesignaluse_suprocess_nameresponse_format
Run an arbitrary shell command on an Android device via `adb shell`. DISABLED by default: arbitrary command execution must be enabled with allowAdbShell (config) or FRIDA_MCP_ALLOW_ADB_SHELL=1. Enforces allowedDevices.
Parametersdevicecommandrequiredtimeout_msresponse_format
Dump the last N lines of the Android logcat (one-shot, `adb logcat -t N`), optionally filtered by tag:priority specs, or clear the buffer. Useful for correlating app log output with instrumentation events.
Parametersclearlinesdevicefiltersresponse_format
Pull a file from an Android device to the host (`adb pull`). Enforces allowedDevices.
Parametersdevicelocal_pathrequiredremote_pathrequiredresponse_format
Push a file from the host to an Android device (`adb push`). Enforces allowedDevices.
Parametersdevicelocal_pathrequiredremote_pathrequiredresponse_format
Manage adb port forwards (`adb forward`): add a local->remote forward, remove one, or list them. Use it to reach a frida-server on a non-default device port (e.g. local "tcp:27042" -> remote "tcp:12345").
Parameterslistlocaldeviceremoteremoveresponse_format
inject_library
Inject Native Library
Inject a native agent library (.so/.dylib) from the host into a target process via Frida's injector, independent of the JS engine — the parity path for a prebuilt Frida gadget/agent or a custom .so. Runs arbitrary native code in the target, so it needs allowNativeInjection (a capability separate from allowCustomScripts). The library must match the device architecture (arm64-v8a etc.); its optional exported entrypoint is called with the data string. Returns the frida injectee id.
Parametersdatadevicetargetrequiredentrypointlibrary_pathrequiredresponse_format