{"name":"io.github.Protremix/erius-phone-mcp","slug":"protremix-erius-phone-mcp","title":"ERIUS PHONE","description":"Drive a hosted ERIUS PHONE Android device: read the screen, tap, type, install APKs, get crash logs.","url":"https://mcp.market/server/protremix-erius-phone-mcp","rating":null,"grade":"B","score":82,"certified":false,"status":"active","category":"productivity","tags":["productivity"],"presence":{"score":32,"stars":1,"forks":1,"downloads_week":146,"last_push_at":"2026-10-11T13:04:42.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"pypi","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/Protremix/erius-phone-mcp","website":"https://eriusphone.com","version":"0.2.0","remotes":[],"packages":[{"registryType":"pypi","identifier":"erius-phone-mcp","version":"0.2.0","runtimeHint":"uvx","transport":{"type":"stdio"},"environmentVariables":[{"description":"Your ERIUS PHONE API key (early access, request at https://eriusphone.com).","isRequired":true,"isSecret":true,"name":"ERIUS_PHONE_API_KEY"},{"description":"Device id to use when a tool call does not name one.","name":"ERIUS_PHONE_DEFAULT_DEVICE"}]}],"tools":[{"name":"foreground","description":"Get just the foreground app: package, activity, and whether a crash dialog is showing. Cheaper than a full snapshot when you only need this.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_crash_log","description":"Read the device's crash log buffer (logcat -b crash) — use this after an app crashes during QA testing to see the real stack trace.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_device","description":"Get full status of one device: boot state, Android version, screen size, and the app currently in the foreground. Omit `device` to use the default.","write_action":false,"price_micros":0,"input_schema":null},{"name":"install_apk","description":"Install an APK from a local file path on the machine running this MCP server (not on the phone) onto the device. Use this for APK QA testing — the real use case ERIUS PHONE is built for. Returns the parsed package info (name, version) and whether the install actually succeeded.","write_action":false,"price_micros":0,"input_schema":null},{"name":"launch_app","description":"Launch an installed app by package name (e.g. com.android.chrome). Pass `activity` only if the app has no launcher activity resolvable automatically.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_apps","description":"List installed apps on the device. Set third_party_only=True to skip pre-installed system apps and see only user-installed ones.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_devices","description":"List every Android device your API key can access, with live status (booted, Android version, screen size). Call this first to get device ids.","write_action":false,"price_micros":0,"input_schema":null},{"name":"long_press","description":"Long-press an element (e.g. to open a context menu or start a drag). Targets work like tap(): `ref`, `text`/`content_desc`, or raw `x`,`y` (with `image_width`/`image_height` when they come from a scaled screenshot). `ms` (hold time, default 800) only applies to the x,y form.","write_action":false,"price_micros":0,"input_schema":null},{"name":"open_url","description":"Open a URL (http/https/market) on the device, optionally forcing it into a specific app package (e.g. open a link in Chrome specifically).","write_action":false,"price_micros":0,"input_schema":null},{"name":"press_key","description":"Press a hardware/navigation key: back, home, enter, delete, tab, escape, up, down, left, right, space, power, volup, voldown, recent, menu, wakeup.","write_action":false,"price_micros":0,"input_schema":null},{"name":"screenshot","description":"Take a screenshot of the device screen right now and return it as an image you can look at, plus one line of text with the image size and the device's real screen size.","write_action":false,"price_micros":0,"input_schema":null},{"name":"scroll","description":"Scroll a list/container up, down, left, or right. `ref` must be the ref of the scrollable container itself (a ScrollView or List line in the snapshot), not of a row inside it: scrolling a single row does nothing. If the container has no ref, use swipe() instead.","write_action":false,"price_micros":0,"input_schema":null},{"name":"send_intent","description":"Start an activity with an arbitrary Android intent (`am start -a ACTION`), e.g. action=\"android.settings.WIFI_SETTINGS\" to jump straight to a settings page. `component` is \"package/.Activity\"; `extras` values become string, int or boolean extras by their type. Returns ok plus the new foreground app.","write_action":true,"price_micros":0,"input_schema":null},{"name":"snapshot","description":"Get an accessibility-tree snapshot of the current screen: every visible element with its text, role, and a `ref` id you can pass to tap/type/scroll. This is how the agent 'sees' the phone — read it before acting, and take a fresh one after any action since refs reset on every snapshot.","write_action":false,"price_micros":0,"input_schema":null},{"name":"stop_app","description":"Force-stop a running app by package name.","write_action":false,"price_micros":0,"input_schema":null},{"name":"swipe","description":"Swipe from one point to another: in device pixel coordinates, or, with `image_width` and `image_height`, in the pixels of a screenshot of that size.","write_action":false,"price_micros":0,"input_schema":null},{"name":"tap","description":"Tap an element. Prefer `ref` from a snapshot(), or `text`/`content_desc` to tap by visible label. Falls back to raw `x`,`y` pixel coordinates: in device pixels, or, with `image_width` and `image_height`, in the pixels of a screenshot of that size (the API maps the point to the screen).","write_action":false,"price_micros":0,"input_schema":null},{"name":"type_text","description":"Type text into a field. Optionally tap a `ref` or `text_target` label first to focus the field, `clear` the existing value, or press Enter after. Keystrokes sent while the field is still opening are lost, so if tapping the field opens a new screen (e.g. a search page), tap it first, wait for it with snapshot() or wait_for_text(), then type with no target. Check the result with snapshot(). Only pri","write_action":false,"price_micros":0,"input_schema":null},{"name":"uninstall_app","description":"Uninstall an app by package name.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wait_for_text","description":"Wait until `text` appears somewhere on screen (e.g. after a slow screen transition), up to timeout_ms (max 120000). Returns the settled snapshot.","write_action":false,"price_micros":0,"input_schema":null},{"name":"whoami","description":"Show which ERIUS PHONE account (tenant) and key id this server is using, and the device ids it can access. Handy to check the API key works.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":82,"grade":"B","scanned_at":"2026-10-13T01:11:52.294Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-10-13T01:11:52.290Z","components":{"code":{"score":25,"max":25,"notes":["4 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":6,"max":15,"notes":["static API keys via environment variables"]},"maintenance":{"score":15,"max":15,"notes":["last push 2 days ago"]},"identity":{"score":7,"max":10,"notes":["registry namespace matches repository owner"]}},"findings":[],"inputs":{"packages":[{"registryType":"pypi","identifier":"erius-phone-mcp","version":"0.2.0","found":true,"weeklyDownloads":146,"license":"MIT","dependencyCount":3,"publishedAt":"2026-10-10T19:29:18.202185Z","repositoryUrl":"https://github.com/Protremix/erius-phone-mcp"}],"repo":{"found":true,"owner":"Protremix","repo":"erius-phone-mcp","archived":false,"pushedAt":"2026-10-11T13:04:42Z","stars":1,"forks":1,"openIssues":0,"ownerType":"Organization","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/314170907?v=4","ownerCreatedAt":"2026-08-07T07:33:25Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/314170907?v=4&s=128","source":"github"},"presence":{"stars":1,"forks":1,"downloadsWeek":146,"license":"MIT","lastPushAt":"2026-10-11T13:04:42.000Z","score":32}}}},"grade_history":[],"reviews":[]}