mobile-use is an open-source AI agent that controls Android and iOS applications from natural-language instructions. It is used to automate phone tasks, navigate app interfaces, and extract structured information from apps. The catalogue skill helps agents operate mobile-use.
Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/minitap-ai/mobile-use/mobile-use-setupnpx skills add minitap-ai/mobile-use --skill mobile-use-setupgit clone --depth 1 https://github.com/minitap-ai/mobile-useWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/minitap-ai/mobile-use/mobile-use-setup)<a href="https://agentmods.dev/skills/minitap-ai/mobile-use/mobile-use-setup"><img src="https://agentmods.dev/badge/skills/minitap-ai/mobile-use/mobile-use-setup.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00042 | $0.00560 |
| Opus 5 | $0.00021 | $0.00280 |
| Sonnet 5 | $0.00008 | $0.00112 |
| Haiku 4.5 | $0.00004 | $0.00056 |
Grade A, and why
mobile-use-setup scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 7d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 96 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Mobile-Use SDK Setup
Set up mobile-use so the agent runs locally against a selected device.
Gather Requirements
Ask only for information not already provided:
- Target: iOS, Android, or both.
- Device path: local physical device/emulator, BrowserStack, or a Minitap cloud device.
- LLM provider: Minitap API, OpenAI, Anthropic, Google, OpenRouter, a local model, or another supported provider.
Check Prerequisites
python3 --version # Requires 3.12+
which uv
# Android local
which adb
adb devices
# iOS simulator
which idb_companion
xcrun simctl list devices
# iOS physical
which idevice_id
which appium
appium driver list
For missing dependencies, use the device-specific reference files in this skill.
Create The Project
uv init <project-name>
cd <project-name>
uv add minitap-mobile-use python-dotenv
cp llm-config.override.template.jsonc llm-config.override.jsonc
Configure the selected provider in llm-config.override.jsonc and put only the required provider keys in .env. Add .env to .gitignore.
Create The Starter
Generate task code that runs the agent locally:
import asyncio
from dotenv import load_dotenv
from minitap.mobile_use.sdk import Agent
from minitap.mobile_use.sdk.builders import Builders
from minitap.mobile_use.sdk.types import AgentProfile
load_dotenv()
async def main() -> None:
profile = AgentProfile(name="default", from_file="llm-config.override.jsonc")
config = Builders.AgentConfig.with_default_profile(profile).build()
agent = Agent(config=config)
try:
await agent.init()
result = await agent.run_task(goal="Your automation goal", name="first-task")
print(result)
finally:
await agent.clean()
if __name__ == "__main__":
asyncio.run(main())
When selected, extend config with the BrowserStack or for_cloud_device(...) builder API.
Verify
Verify the selected device is visible, then run:
uv run python -c "from minitap.mobile_use.sdk import Agent; print('SDK OK')"
uv run python main.py
What ships with it
5 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 7d ago First seen · 96 lines · 42 tokens per session scan A c2c28313aee0
mobile-use-setup is a skill published in the GitHub repository minitap-ai/mobile-use (2,805 stars, last pushed 9d ago), licensed Apache-2.0. It adds 42 tokens to every session and 560 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
agent-device
Automates Apple-platform apps (iOS, tvOS, macOS), Android devices, and Amazon Vega OS TV apps in Vega Virtual Devices. Use when navigating apps, taking snapshots/screenshots where supported, driving TV remotes, tapping, typing, scrolling, extracting UI info, collecting evidence, or planning agent-device CLI commands.
ios-simulator
Verify and debug native, React Native, Expo, or Flutter apps on an iOS Simulator with agent-device. Use when an agent needs to launch an app, inspect its live UI, tap, type, scroll, validate a code change, collect failure evidence, or reproduce a workflow on an iPhone or iPad Simulator.
dogfood
Systematically explore and test a mobile app on iOS/Android with agent-device to find bugs, UX issues, and other problems. Use when asked to dogfood, QA, exploratory test, find issues, bug hunt, or test this app on mobile.
unbrowse
One-call web access for agents with cache-first API replay and browser capture on misses. Unbrowse passively learns first-party route DAGs while browsing, independently validates replay, and keeps remote sharing consented and fail-closed. Prefer it over WebFetch, curl, and browser loops.
browser-tools
Security wrapper over the upstream agent-browser skill, adding URL blocklisting, rate limiting, robots.txt enforcement, and scraping guardrails. Use when automating browser workflows that need safety limits.
auto
Intent-classified router, the front door to OrchestKit and the DEFAULT entry point for any goal-shaped request. Classifies a plain-English goal and routes it to the right specialist skill. Routing is never overhead, so use it even when the target skill seems obvious; skip only when already executing inside another…