# ERIUS PHONE (pypi · erius-phone-mcp)

Drive a hosted ERIUS PHONE Android device: read the screen, tap, type, install APKs, get crash logs.

- Trust score: 60/100 (medium)
- Change this week: −12
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- pypi · `erius-phone-mcp`: 60/100 (this document), [markdown](https://verifymcp.io/servers/protremix-erius-phone-mcp/erius-phone-mcp.md), [page](https://verifymcp.io/servers/protremix-erius-phone-mcp/erius-phone-mcp)

## Channel facts

- Registry: `pypi`
- Package: `erius-phone-mcp`
- Version: `0.2.0`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Supply Chain Security**: 50/100
  - Malware scan not yet available for this package.
  - No known CVEs affecting this package version or its production dependencies.
  - Runs hatchling.build at install time, a recognised build step with no custom scripting around it.
  - 1 of 22 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 45/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 25 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 65/100
  - AI-judged instruction clarity (good).
  - Tool/resource definitions use about 1745 tokens (~83/item across 21 items; 21 tools + 0 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 73/100
  - Stability observed for 22 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 71/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 0% of tool parameters carry a description.
  - Structured output schemas are declared (95% of tools); any adoption earns full credit.
- **Tool Safety**: 75/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - 0 of 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "send_intent" implies "send" and declares no destructiveHint at all, which the MCP spec reads as destructive by default.
  - An AI judge read all 21 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

## Install

### How do I install the ERIUS PHONE MCP server?

ERIUS PHONE runs locally as a PyPI package, launched with uvx erius-phone-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add protremix-erius-phone-mcp -- uvx erius-phone-mcp
```

### Cursor

```json
{
  "mcpServers": {
    "protremix-erius-phone-mcp": {
      "command": "uvx",
      "args": [
        "erius-phone-mcp"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "protremix-erius-phone-mcp": {
      "command": "uvx",
      "args": [
        "erius-phone-mcp"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add protremix-erius-phone-mcp -- uvx erius-phone-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "protremix-erius-phone-mcp": {
      "type": "local",
      "command": [
        "uvx",
        "erius-phone-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add protremix-erius-phone-mcp --command uvx --arg erius-phone-mcp
```

### Hermes

```yaml
mcp_servers:
  protremix-erius-phone-mcp:
    command: "uvx"
    args: ["erius-phone-mcp"]
```

### Netclaw

```json
{
  "McpServers": {
    "protremix-erius-phone-mcp": {
      "Transport": "stdio",
      "Command": "uvx",
      "Arguments": [
        "erius-phone-mcp"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add protremix-erius-phone-mcp -t stdio -c uvx -a erius-phone-mcp
```

### Other

```json
{
  "mcpServers": {
    "protremix-erius-phone-mcp": {
      "command": "uvx",
      "args": [
        "erius-phone-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-05 (score 60, −15)

- [security regression] Malware scan: pass → unverified

### 2026-11-04 (score 75, +1)

No change was recorded against any check on this day. Stability & Change Management went from 67 to 70. That category is still filling its 30-day observation window: 20 days of observed history at the previous scan, 21 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-11-02 (score 74, +1)

No change was recorded against any check on this day. Stability & Change Management went from 60 to 63. That category is still filling its 30-day observation window: 18 days of observed history at the previous scan, 19 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-31 (score 73, +1)

No change was recorded against any check on this day. Stability & Change Management went from 53 to 57. That category is still filling its 30-day observation window: 16 days of observed history at the previous scan, 17 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-29 (score 72, +16)

- [security improvement] Malware scan: unverified → pass
- [functional regression] Security disclosure: unverified → fail

### 2026-10-28 (score 56, 0)

- [functional regression] Security disclosure: fail → unverified

### 2026-10-27 (score 56, +1)

No change was recorded against any check on this day. Stability & Change Management went from 40 to 43. That category is still filling its 30-day observation window: 12 days of observed history at the previous scan, 13 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-24 (score 55, +1)

No change was recorded against any check on this day. Stability & Change Management went from 30 to 33. That category is still filling its 30-day observation window: 9 days of observed history at the previous scan, 10 at this one. The score rises as the window fills, whether or not the server changes.

## MCP tools (21)

### `list_devices` (~40 tokens)

List Devices

List every Android device your API key can access, with live status
(booted, Android version, screen size). Call this first to get device ids.

### `whoami` (~42 tokens)

Whoami

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.

### `get_device` (~47 tokens)

Get Device

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.

Input parameters:

- `device`

### `snapshot` (~92 tokens)

Snapshot

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.

Input parameters:

- `device`
- `max_depth`
- `max_nodes`

### `screenshot` (~264 tokens)

Screenshot

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.

The default is a JPEG whose longest side is 1024 px (tens of KB). A
full-size PNG of a 1440x3120 phone is about 3 MB, which is more than many
MCP clients accept in a tool result, so ask for it only when you need it:
format="png", max_side=None.

\`format` is "jpeg", "webp" or "png"; `quality` is 1-100 (jpeg/webp);
\`max_side` caps the longest side in pixels (64-8192); `scale` (0.1-1)
shrinks by a factor instead. When the image is smaller than the screen,
pass its size as image_width/image_height to tap(), long_press() or
swipe() so x,y are read in the image's pixels. Prefer snapshot() when you
only need text and refs: it's far smaller.

Input parameters:

- `device`
- `format` (string)
- `max_side`
- `quality` (integer)
- `scale`

### `foreground` (~43 tokens)

Foreground

Get just the foreground app: package, activity, and whether a crash
dialog is showing. Cheaper than a full snapshot when you only need this.

Input parameters:

- `device`

### `tap` (~126 tokens)

Tap

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).

Input parameters:

- `content_desc`
- `device`
- `image_height`
- `image_width`
- `ref`
- `text`
- `x`
- `y`

### `long_press` (~135 tokens)

Long Press

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.

Input parameters:

- `content_desc`
- `device`
- `image_height`
- `image_width`
- `ms`
- `ref`
- `text`
- `x`
- `y`

### `type_text` (~152 tokens)

Type Text

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 printable ASCII is supported (adb limitation).

Input parameters:

- `clear` (boolean)
- `device`
- `enter` (boolean)
- `ref`
- `text` (string, required)
- `text_target`

### `press_key` (~63 tokens)

Press Key

Press a hardware/navigation key: back, home, enter, delete, tab, escape,
up, down, left, right, space, power, volup, voldown, recent, menu, wakeup.

Input parameters:

- `device`
- `key` (string, required)

### `swipe` (~98 tokens)

Swipe

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.

Input parameters:

- `device`
- `image_height`
- `image_width`
- `ms` (integer)
- `x1` (integer, required)
- `x2` (integer, required)
- `y1` (integer, required)
- `y2` (integer, required)

### `scroll` (~91 tokens)

Scroll

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.

Input parameters:

- `device`
- `direction` (string, required)
- `ref` (string, required)

### `wait_for_text` (~64 tokens)

Wait For Text

Wait until `text` appears somewhere on screen (e.g. after a slow screen
transition), up to timeout_ms (max 120000). Returns the settled snapshot.

Input parameters:

- `device`
- `text` (string, required)
- `timeout_ms` (integer)

### `launch_app` (~57 tokens)

Launch App

Launch an installed app by package name (e.g. com.android.chrome).
Pass `activity` only if the app has no launcher activity resolvable automatically.

Input parameters:

- `activity`
- `device`
- `package` (string, required)

### `open_url` (~59 tokens)

Open Url

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).

Input parameters:

- `device`
- `package`
- `url` (string, required)

### `send_intent` (~109 tokens)

Send Intent

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.

Input parameters:

- `action` (string, required)
- `component`
- `data`
- `device`
- `extras`
- `package`

### `stop_app` (~29 tokens)

Stop App

Force-stop a running app by package name.

Input parameters:

- `device`
- `package` (string, required)

### `list_apps` (~48 tokens)

List Apps

List installed apps on the device. Set third_party_only=True to skip
pre-installed system apps and see only user-installed ones.

Input parameters:

- `device`
- `third_party_only` (boolean)

### `uninstall_app` (~28 tokens)

Uninstall App

Uninstall an app by package name.

Input parameters:

- `device`
- `package` (string, required)

### `get_crash_log` (~54 tokens)

Get Crash Log

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.

Input parameters:

- `device`
- `lines` (integer)

### `install_apk` (~104 tokens)

Install Apk

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.

Input parameters:

- `allow_downgrade` (boolean)
- `apk_path` (string, required)
- `device`
- `grant_permissions` (boolean)

## Diagnostics

Captured diagnostic sections: Provenance, Install scripts, Dependencies. The full working is on the page: https://verifymcp.io/servers/protremix-erius-phone-mcp/erius-phone-mcp#diagnostics

## Score history

- 2026-11-05: 60
- 2026-11-04: 75
- 2026-11-03: 74
- 2026-11-02: 74
- 2026-11-01: 73
- 2026-10-31: 73
- 2026-10-30: 72
- 2026-10-29: 72
- 2026-10-28: 56
- 2026-10-27: 56
- 2026-10-26: 55
- 2026-10-25: 55
- 2026-10-24: 55
- 2026-10-23: 54
- 2026-10-22: 54
- 2026-10-21: 53
- 2026-10-20: 50
- 2026-10-19: 50
- 2026-10-18: 50
- 2026-10-17: 65
- 2026-10-16: 45
- 2026-10-15: 50
- 2026-10-14: 50
- 2026-10-13: 39
- 2026-10-12: 24

## Common questions

### What is the ERIUS PHONE MCP server?

ERIUS PHONE is an MCP server listed in the public MCP registry as io.github.Protremix/erius-phone-mcp. Drive a hosted ERIUS PHONE Android device: read the screen, tap, type, install APKs, get crash logs. This page covers its PyPI package (erius-phone-mcp).

### Is the ERIUS PHONE MCP server safe to use?

ERIUS PHONE scores 60 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the ERIUS PHONE MCP server expose?

ERIUS PHONE exposes 21 tools: list_devices, whoami, get_device, snapshot, screenshot, and 16 more. Their descriptions and schemas cost roughly 1,745 tokens of context every time the server is loaded.

### Is the ERIUS PHONE MCP server still maintained?

ERIUS PHONE is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What licence is the ERIUS PHONE MCP server under?

ERIUS PHONE declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

## Links

- PyPI project: https://pypi.org/project/erius-phone-mcp/
- Socket report: https://socket.dev/pypi/package/erius-phone-mcp
- Repository: https://github.com/Protremix/erius-phone-mcp
- Website: https://eriusphone.com/
- Changelog RSS feed: https://verifymcp.io/servers/protremix-erius-phone-mcp/erius-phone-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/protremix-erius-phone-mcp/erius-phone-mcp.json
- HTML version of this page: https://verifymcp.io/servers/protremix-erius-phone-mcp/erius-phone-mcp
