mobile-easy-use
Mobile Easy Use
A tool for Android and iOS developers that gives AI agents runtime access to understand, explore, debug, and verify apps.
Documentation: English · 简体中文 · Français · Русский · Español · العربية
Compared with Web development, inspecting a mobile app's internal data, business state, and execution is harder. “The data request succeeded—why didn't the list update?” Questions like this depend on actual data, state, and timing that static source analysis alone often cannot explain.
Mobile Easy Use gives AI agents runtime access through MCP, connecting source code with actual app behavior so development decisions can rely on runtime evidence.
Watch the iOS runtime investigation demo (58 seconds)
Explore app state and behavior
Agents can connect what users see with what happens inside the app to understand its behavior and investigate problems:
Runtime information | What it tells you |
Business objects and state | Current data, caches, configuration, and business state, including changes after an action |
Method calls | Which methods run, their arguments, return values, call stacks, and execution threads |
Execution time and memory changes | Method duration and process memory changes around calls |
Business logs | How far execution progresses and what clues point to a failure |
UI and control state | Control presence, visibility, position, and properties |
Window and element screenshots | Actual appearance and visual changes after an action |
App resources | Resource identifiers and contents associated with Android controls and configuration |
Operation results and failure context | Where an action fails and the state, logs, and images captured at that point |
Available information depends on the platform and app implementation.
Not another UI automation testing solution
These capabilities can also perform traditional UI automation. Mobile Easy Use goes further by letting agents observe and change what happens inside the app, not just operate and verify the UI.
Capability | Traditional UI automation (UI-focused) | Mobile Easy Use |
UI interactions: click, type, scroll, and more | ✓ | ✓ |
UI state: locate controls, read properties, and wait for state | ✓ | ✓ |
Capture screens and elements | ✓ | ✓ |
Observe business objects and state | — | ✓ |
Hook methods: collect call chains, arguments, results, and stacks | — | ✓ |
Measure execution time and process memory changes | — | ✓ |
Temporarily change runtime conditions: override method returns or fields | — | ✓ |
Invoke internal app methods | — | ✓ |
These capabilities bring runtime information into every stage of development:
Before coding: Inspect real state and call paths alongside source code to decide where and how to make a change.
During coding: Hook relevant logic and temporarily adjust runtime conditions to check assumptions and branch behavior.
After coding: Verify that business state and UI agree, and save common actions and probes as Presets.
For example, ask your agent:
Inspect this page controlled by a configuration flag: check its current
configuration and actual call path, then temporarily toggle the flag
and verify data and UI in both states. Restore it when finished.Getting started
Prepare Node.js 20+.
Android requires ADB and an available device or emulator. iOS requires macOS, Xcode and its command-line tools; physical devices also require iproxy and development signing for the XCTest Runner used for input actions.
1. Install Skills
Run from the target app project root:
npx skills add agent-easy-use/mobile-easy-use --skill '*'This selects all Skills in the repository. Follow the prompts to choose your agent and installation scope. See the Skills CLI documentation for the command and options.
Install Skills and MCP separately: Skills include Observable, Integrate, Probe, Presets, and their supporting script generation and execution workflows. MCP provides tools to connect to the app and execute operations.
2. Integrate into the app
In the target app project, ask the agent to use the platform's Integrate Skill:
Use to-android-integrate to integrate Mobile Easy Use into this app's debug variant.Use to-ios-integrate to integrate Mobile Easy Use into this app's internal debug configuration.Integrate acquires and verifies Release artifacts, updates the project configuration, and returns an exact compatible MCP launch command. Android integrates an AAR that starts the Runtime automatically. iOS embeds the bridge and Runtime, which MCP loads when connecting. Scope integration to internal debug builds, then build and install the app on the target device.
Complete integration workflows: Android Integrate Skill · iOS Integrate Skill.
3. Install and configure MCP
Add mobile-easy-use to your agent's MCP configuration. Use the compatible MCP version returned by the Integrate Skill in the previous step. The version 0.1.0 below is only an example; replace it with the version in the MCP launch command returned by the Skill:
{
"mcpServers": {
"mobile-easy-use": {
"command": "npx",
"args": ["-y", "@agent-easy-use/mobile-easy-use@0.1.0"]
}
}
}npx fetches and starts the selected version without a separate global install. Use your client's configuration mechanism to set the working directory to the target app project root so MCP can resolve project Presets. The agent and MCP need shared local filesystem access to read SDK declarations and probe files.
Reload the MCP configuration and check that tools such as get_sdk_declarations and connect are visible to the agent. New connections check compatibility between the app Runtime Release and MCP version and suggest an adjustment if they do not match.
4. Explore with Probe
After integration, build the app debug version containing the Mobile Easy Use Runtime and install it on the target device or simulator before using Probe. Connect the device, identify the target app, and describe your question:
Use to-android-probe to investigate list refresh in com.example.app on the device.
Open the list page and refresh it. Check whether the request callback runs,
the data state updates, and the list displays the new content.Use to-ios-probe to investigate why tapping sign-in in com.example.app
does not open the home screen. Explain using relevant method calls,
business state, and UI evidence.Probe uses source code and existing Presets to generate the investigation, connect to the app through MCP, execute actions, and collect relevant evidence. It answers the original question without requiring you to write probe scripts, distinguishing observed facts, source-based explanations, and unverified behavior.
Four Skill capabilities
These four capabilities cover coding, integration, everyday exploration, and reuse, with separate Android and iOS implementations.
Capability | When to use it | Android / iOS Skill |
Observable | Optional coding guidance with minimal intrusion: reuse or selectively add logs, UI identifiers, and runtime entry points so the app works better with Mobile Easy Use | |
Integrate | Set up or maintain debug integration, acquire Runtime artifacts, configure the project, and select a compatible MCP version; also prepare or repair iOS Runner signing | |
Probe | Start a runtime investigation in natural language, including probe generation, execution, and evidence analysis | |
Presets | Turn common navigation, business actions, and state queries into reusable capabilities with type declarations, bundled for future probes |
Probe composes the platform's to-*-script and to-*-run Skills for generation and execution. For everyday use, start with Probe and describe your question.
Observable: minimal changes for better integration (optional)
Observable is not a prerequisite for using Mobile Easy Use. It prioritizes existing logs, UI identifiers, and runtime entry points, making only small, local additions when the current development task calls for them. These changes preserve business behavior while making control lookup, call observation, and state verification easier.
Invoke Observable as needed. If you want it applied during everyday coding, you can add the following rules to the target project's AGENTS.md or agent coding rules after installing the Skills. Keep only your platform's line if appropriate:
When writing or modifying Android App code, apply the android-observable-code skill.
When writing or modifying iOS App code, apply the ios-observable-code skill.Turn discoveries into Presets
Use to-android-presets to create reusable capabilities for opening a list page,
refreshing its content, and reading its data state.The target project's .meu/config.json sets the base directory through presets.directory, defaulting to .meu/presets, with separate android/ and ios/ subdirectories. The Skill generates probe.js, probe.d.ts, and an export entry, then builds presets.dist.js. MCP loads the platform bundle when connecting.
Disconnect and reconnect after updates to load the new bundle. With a device available, the Skill executes the capabilities for verification. Without one, it can generate and build them but explicitly reports runtime behavior as unverified. See the Presets Skills above for directory and build details.
Inspiration
Mobile Easy Use draws inspiration from quickjs-android, xLua, and Frida: embedding a scripting runtime in a host application, bridging scripts with native objects, and accessing app capabilities across runtime boundaries.
Frida is the implementation foundation and an actual dependency. The app-side Runtime is based on Frida Gadget. MCP uses frida to establish runtime connections and Java / Objective-C bridges to access platform objects. Mobile Easy Use builds on these capabilities with a mobile development SDK, MCP tools, evidence collection, and Skill workflows.
Developer question → AI agent + Skills → MCP → Frida Runtime in the app
↕
Methods / Objects / State / Logs / UISee package.json for package dependency versions. App-side binary versions and notices are documented in the Android third-party notices and iOS third-party notices. The compatibility catalog maintains Runtime Release / MCP compatibility.
Local development
npm install
npm test
npm pack --dry-runnpm package: @agent-easy-use/mobile-easy-use.
Feedback
Tried your first probe? Share what you investigated and where you got stuck. If Mobile Easy Use is useful for your work, star the repository to bookmark it.