# io.github.stelis-dev/agent-q (npm · @stelis/agent-q)

Local MCP server for requesting signatures from Agent-Q Firmware.

- Trust score: 57/100 (low)
- Change this week: +33
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- npm · `@stelis/agent-q`: 57/100 (this document), [markdown](https://verifymcp.io/servers/stelis-dev-agent-q/stelis-agent-q.md), [page](https://verifymcp.io/servers/stelis-dev-agent-q/stelis-agent-q)

## Channel facts

- Registry: `npm`
- Package: `@stelis/agent-q`
- Version: `0.2.2`
- 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-08-03.

- **Supply Chain Security**: 34/100
  - Malware scan not yet available for this package.
  - CVE check failed: a known medium-severity CVE affects @hono/node-server 1.19.17, reached via @modelcontextprotocol/sdk > @hono/node-server. A fixed version is available.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (115 of 119), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 84/100
  - Source repository is publicly reachable at the declared URL.
  - Cryptographically verified build provenance (signed, bound to stelis-dev/agent-q).
  - License check failed: the license (UNLICENSED) isn't a recognized OSI-approved license.
  - Actively maintained (last published 37 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 71/100
  - AI-judged instruction clarity (good).
  - Tool/resource definitions use about 1297 tokens (~86/item across 15 items; 15 tools + 0 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 23/100
  - Stability observed for 7 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 73/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 6% of tool parameters carry a description.
  - Structured output schemas are declared (47% of tools); any adoption earns full credit.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add stelis-dev-agent-q -- npx -y @stelis/agent-q
```

### Codex

```bash
codex mcp add stelis-dev-agent-q -- npx -y @stelis/agent-q
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "stelis-dev-agent-q": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@stelis/agent-q"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add stelis-dev-agent-q --command npx --arg -y --arg @stelis/agent-q
```

### Hermes

```yaml
mcp_servers:
  stelis-dev-agent-q:
    command: "npx"
    args: ["-y", "@stelis/agent-q"]
```

### Other

```json
{
  "mcpServers": {
    "stelis-dev-agent-q": {
      "command": "npx",
      "args": [
        "-y",
        "@stelis/agent-q"
      ]
    }
  }
}
```

## 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-08-03 (score 57, +3)

- [functional improvement] Stability: unverified → 0.23

### 2026-08-02 (score 54, +36)

- [security regression] GHSA-frvp-7c67-39w9 affects this package: medium
- [security regression] Known CVEs: unverified → fail
- [security improvement] Install scripts: unverified → pass
- [security improvement] Provenance: unverified → pass
- [security] Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window).
- [security] The attested source repository moved: stelis-dev/agent-q
- [functional regression] License: unverified → fail
- [functional regression] Security disclosure: fail → unverified
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] MCP protocol: unverified → pass
- [functional improvement] Schema quality: unverified → good
- [functional improvement] Dependency health: unverified → partial
- [functional] Licence: UNLICENSED

### 2026-08-01 (score 18, +13)

- [functional improvement] Tool coverage: unverified → 100

### 2026-07-31 (score 5, −19)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-27 (score 24)

First indexed and scored.

## MCP tools (15)

### `scan_devices` (~33 tokens)

Scan devices

Find USB-connected Agent-Q Firmware devices by writing a status handshake to candidate USB serial ports, and report sanitized candidate failure reasons.

Output parameters:

- `activeDeviceId`
- `devices` (array)
- `failures` (array)
- `source` (string)

### `identify_devices` (~35 tokens)

Identify devices

Ask discovered Agent-Q Firmware devices to display short identification codes. Writes a status handshake to candidate USB serial ports before sending the identify request.

Output parameters:

- `activeDeviceId`
- `devices` (array)
- `source` (string)

### `select_device` (~76 tokens)

Select device

Set a previously discovered Agent-Q Firmware device as the default active device, or as the active device for a named routing purpose. 'purpose' is local Agent-Q process routing metadata, not security policy. Updates local Agent-Q process state only; does not contact Firmware.

Input parameters:

- `deviceId` (string, required)
- `purpose` (string)

Output parameters:

- `activeDeviceId` (string)
- `device` (object)
- `purpose`
- `source` (string)

### `get_device_status` (~65 tokens)

Get device status

Read live or cached status for a known Agent-Q Firmware device by writing a status handshake to candidate USB serial ports. Resolves the device by deviceId, by purpose, or by the default active device.

Input parameters:

- `deviceId` (string)
- `purpose` (string)

### `list_devices` (~48 tokens)

List devices

List Agent-Q Firmware devices known to Agent-Q, including local label, purpose routing assignments, and any in-memory connection session metadata. Reads from local Agent-Q process state only; does not contact Firmware.

Output parameters:

- `activeDeviceId`
- `activeDeviceIdsByPurpose` (object)
- `devices` (array)
- `source` (string)

### `set_device_metadata` (~71 tokens)

Set device metadata

Set local metadata for a known Agent-Q Firmware device. 'label' is human-readable local metadata, not a security boundary and not device authority. Pass null to clear the label. Updates local Agent-Q process state only; does not contact Firmware.

Input parameters:

- `deviceId` (string, required)
- `label` (required)

Output parameters:

- `deviceId` (string)
- `label`
- `source` (string)

### `connect_device` (~109 tokens)

Connect device

Open a communication session with a known Agent-Q Firmware device. Resolves the target device by deviceId, by purpose, or by the default active device. Sends a connect request that requires Firmware-owned device-local approval. Writes a status handshake to candidate USB serial ports while locating the device. Connect is not signing approval and does not authorize signing. Session is held in Agent-Q process memory only.

Input parameters:

- `clientName` (string)
- `deviceId` (string)
- `purpose` (string)

Output parameters:

- `connectedAt` (string)
- `device` (object)
- `deviceId` (string)
- `sessionTtlMs` (integer)
- `source` (string)

### `disconnect_device` (~89 tokens)

Disconnect device

End a previously approved Agent-Q Firmware session. Resolves the target device by deviceId, by purpose, or by the default active device. Returns 'not_connected' without contacting Firmware when there is no Agent-Q runtime session. Writes a status handshake to candidate USB serial ports when locating the device. Disconnect does not require physical approval.

Input parameters:

- `deviceId` (string)
- `purpose` (string)

Output parameters:

- `deviceId` (string)
- `reason` (string)
- `source` (string)

### `get_capabilities` (~103 tokens)

Get capabilities

Read Firmware-authored supported chains, public account schemes, and supported signing methods over an approved session. Resolves the target device by deviceId, by purpose, or by the default active device. Requires a prior connect_device approval; returns 'not_connected' without contacting Firmware when there is no Agent-Q runtime session. signing.authorization is Firmware-authored read-only state and is not a request option.

Input parameters:

- `deviceId` (string)
- `purpose` (string)

### `get_accounts` (~110 tokens)

Get accounts

List the public accounts (chain, address, public key) held by a provisioned Agent-Q Firmware device over an approved session. Resolves the target device by deviceId, by purpose, or by the default active device. Requires a prior connect_device approval; returns 'not_connected' without contacting Firmware when there is no Agent-Q runtime session. Read-only: no signing, no private material, and no session id is ever returned.

Input parameters:

- `deviceId` (string)
- `purpose` (string)

### `policy_get` (~100 tokens)

Get policy

Read the Firmware-owned active policy document over an approved session. Resolves the target device by deviceId, by purpose, or by the default active device. Requires a prior connect_device approval; returns 'not_connected' without contacting Firmware when there is no Agent-Q runtime session. Read-only: no policy update, no signing, no private material, and no session id is ever returned.

Input parameters:

- `deviceId` (string)
- `purpose` (string)

### `get_approval_history` (~88 tokens)

Get approval history

Read a bounded page of Firmware-owned approval history over an approved session. This is not on-chain history and is read-only: no raw requests, session ids, private material, PINs, client names, or full policy documents are returned.

Input parameters:

- `beforeSeq` (string)
- `deviceId` (string)
- `limit` (integer)
- `purpose` (string)

### `sign_transaction` (~134 tokens)

Sign transaction

Request a Firmware-owned transaction signature over an approved session. Agent-Q and MCP do not store keys, choose authorization, or make signing decisions; Firmware uses its local signing authorization mode to select policy authorization or user confirmation and returns signing outcome.

Input parameters:

- `chain` (string, required)
- `deviceId` (string)
- `method` (string, required)
- `network` (string, required): Network identifier for the selected chain and method. Current executable Sui signing accepts mainnet, testnet, devnet, or localnet; Client Core and Firmware validate the value.
- `purpose` (string)
- `txBytes` (string, required)

### `sign_personal_message` (~140 tokens)

Sign personal message

Request a Firmware-owned Sui personal-message signature over an approved session. Agent-Q and MCP do not store keys, choose authorization, or make signing decisions. The current Firmware implementation signs this method only in user-confirmed authorization mode; policy authorization mode fails closed.

Input parameters:

- `chain` (string, required)
- `deviceId` (string)
- `message` (string, required)
- `method` (string, required)
- `network` (string, required): Network identifier for the selected chain and method. Current executable Sui signing accepts mainnet, testnet, devnet, or localnet; Client Core and Firmware validate the value.
- `purpose` (string)

### `policy_propose` (~96 tokens)

Propose policy update

Submit a bounded current-schema active-policy proposal to Agent-Q Firmware. Firmware validates the proposal, shows a device-local policy summary review, starts local PIN approval only after device-local Continue, and returns the terminal policy proposal outcome. This is a request path only: Agent-Q and MCP do not store, apply, or decide policy.

Input parameters:

- `deviceId` (string)
- `policy` (object, required)
- `purpose` (string)

## Diagnostics

Captured diagnostic sections: Provenance, Vulnerabilities, Dependencies. The full working is on the page: https://verifymcp.io/servers/stelis-dev-agent-q/stelis-agent-q#diagnostics

## Score history

- 2026-08-03: 57
- 2026-08-02: 54
- 2026-08-01: 18
- 2026-07-31: 5
- 2026-07-30: 24
- 2026-07-28: 24
- 2026-07-27: 24

## Links

- npm package: https://www.npmjs.com/package/@stelis/agent-q
- Socket report: https://socket.dev/npm/package/@stelis/agent-q
- Repository: https://github.com/stelis-dev/agent-q
- Changelog RSS feed: https://verifymcp.io/servers/stelis-dev-agent-q/stelis-agent-q/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/stelis-dev-agent-q/stelis-agent-q/changelog.json
- HTML version of this page: https://verifymcp.io/servers/stelis-dev-agent-q/stelis-agent-q
