Agents
For AI agents
Pick the route that fits your agent:
| Your agent | Use | Set up |
|---|---|---|
| Claude Code | The plugin: the CLI plus a skill that teaches the loop | /plugin install looktap --marketplace lakpriya1s/looktap, then /looktap:setup (details) |
| Other agents with a shell (Codex, Cursor's agent, opencode, …) | The CLI plus the skill file | looktap skill --install (or looktap skill prints it) |
| Chat apps without a shell (Claude Desktop, …) | The MCP server | npx -y @looktap/mcp (details) |
An agent spends seconds per turn, so turns matter more than milliseconds. looktap is built to save them:
--lson any action prints the screen once it has settled, so acting and looking take one turn instead of two:looktap tap @3 --ls looktap fill "Email" a@b.co --lswaitinstead of guessingsleeps. After an action that loads data,--lscan return a loading skeleton, so wait for the text you expect.runbatches steps you already know into one call and one process. It prints each step as$ <step>, stops at the first failure, and names it:looktap run 'tap General; wait About; tap About --ls' looktap run - < steps.txt # one step per line, # for commentslogs/crashesafter a step that misbehaved. Eachlogsshows only what's new since the last one.ls --jsonfor structured output:{screen, elements: [{ref, label, type, x, y, w, h, value}]}.shot --scale 0.5costs a quarter of the image tokens when the agent needs to see the screen (layout, colours, images). Usuallylsis enough and the PNG is never opened.- Hints when the screen isn't what it seems. When a passcode or permission prompt covers the app,
lsprints a hint rather than an empty list.
Claude Code plugin
In Claude Code, run:
/plugin install looktap --marketplace lakpriya1s/looktap
- What it adds:
- the looktap skill, which teaches Claude the look-act loop, how to pick targets, when to wait, when a screenshot is worth it, how to debug a crash, and the safety rules;
/looktap:setup, which gets the machine ready: it installs the CLI (asking first), runslooktap doctorand explains each fix, offers to boot a simulator or emulator, walks you through a real iPhone's one-time steps, and finishes with a workingls. Addios,androidoriphoneto set up just that.
- What it doesn't install: Xcode, the Android SDK and the Apple ID sign-in are yours to do;
/looktap:setuptells you exactly what's missing. - What it costs: about 150 tokens per session for the skill's description, and about 4.5k tokens each time Claude loads the skill.
- Staying current: every push to this repo is a new plugin version. Claude Code doesn't auto-update
third-party plugins unless you turn it on (
/plugin→ Marketplaces → looktap → Enable auto-update); otherwise run/plugin marketplace update looktapnow and then. - The CLI: the skill runs
looktapcommands. Install them withnpm install -g @looktap/cli, or the skill falls back tonpx @looktap/cli. - No MCP server inside, on purpose: with a shell, the CLI and the skill do the same job with fewer tokens, and
an MCP server would add its 16 tool definitions to every session. Add
@looktap/mcpseparately if you want it anyway.
MCP server, for clients without a shell
Agents with a shell (Claude Code, Codex, Cursor's agent, …) are best served by the CLI and the skill above.
For chat apps and other clients without a shell, such as Claude Desktop, looktap is also an MCP server,
published as @looktap/mcp and listed in the
MCP Registry as io.github.lakpriya1s/looktap. Nothing to install first:
{ "mcpServers": { "looktap": { "command": "npx", "args": ["-y", "@looktap/mcp"] } } }
If your client can't find npx (desktop apps start servers with a minimal PATH), install the CLI and let it
write the config with absolute paths:
looktap mcp --config # prints a ready-to-paste client config with absolute paths
{
"mcpServers": {
"looktap": {
"command": "/path/to/node",
"args": ["/path/to/looktap/bin/looktap.js", "mcp"],
"env": { "PATH": "/path/to/node/bin:/path/to/Android/sdk/platform-tools:/usr/bin:/bin" }
}
}
}
- Where to paste it:
- Claude Desktop:
~/Library/Application Support/Claude/claude_desktop_config.json - Cursor:
~/.cursor/mcp.json - Claude Code:
claude mcp add looktap -- npx -y @looktap/mcp(no install needed: it runs the latest version from npm). Or the absolute paths:claude mcp add looktap -- <node> <looktap.js> mcp
- Claude Desktop:
- Why absolute paths: desktop apps start servers with a minimal
PATH.looktapalso findsadbin the Android SDK by itself. - The tools:
ls,tap,tap_xy,long_press,fill,type,key,hide_keyboard,swipe,scroll_to,backandwait;screenshot, which returns the image itself;logsandcrashes;looktap, for any other command line, or several separated by;.
- Actions return the settled screen unless
ls: false. - The device is remembered: name a
platform(ordevice) once when both an iPhone and an Android are booted. - Speed: the server keeps each device's helper connection open, so a warm
lstakes a few milliseconds.
Why a CLI first? Any agent with a shell can use it with no configuration, and its output is already as small as it gets.
Generated from README.md. Edit it there.