# io.github.noncelogic/mcp (npm · @roveapi/mcp)

Hosted Playwright API for AI agents. Returns a11y trees instead of screenshots.

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

## Components

- npm · `@roveapi/mcp`: 69/100 (this document), [markdown](https://verifymcp.io/servers/noncelogic-mcp/roveapi-mcp.md), [page](https://verifymcp.io/servers/noncelogic-mcp/roveapi-mcp)

## Channel facts

- Registry: `npm`
- Package: `@roveapi/mcp`
- Version: `1.9.1`
- 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**: 87/100
  - No malware found by supply-chain analysis.
  - Only part of the dependency tree could be resolved (95 of 99), so this covers what we could see, not the whole tree.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (95 of 99), so this covers what we could see, not the whole tree.
- **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 103 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 76/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 1647 tokens (~109/item across 15 items; 15 tools + 0 resources), over budget; trim descriptions and params.
  - 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**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add noncelogic-mcp -- npx -y @roveapi/mcp
```

### Codex

```bash
codex mcp add noncelogic-mcp -- npx -y @roveapi/mcp
```

### opencode

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

### OpenClaw

```bash
openclaw mcp add noncelogic-mcp --command npx --arg -y --arg @roveapi/mcp
```

### Hermes

```yaml
mcp_servers:
  noncelogic-mcp:
    command: "npx"
    args: ["-y", "@roveapi/mcp"]
```

### Other

```json
{
  "mcpServers": {
    "noncelogic-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@roveapi/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-08-03 (score 69, +4)

- [functional improvement] Stability: unverified → 0.23

### 2026-08-02 (score 65, +60)

- [security regression] Provenance: unverified → fail
- [security improvement] Install scripts: unverified → pass
- [security improvement] Known CVEs: unverified → partial
- [security improvement] Malware scan: unverified → pass
- [security] Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window).
- [functional regression] Security disclosure: fail → unverified
- [functional improvement] Tool coverage: unverified → 100
- [functional improvement] License: unverified → pass
- [functional improvement] Dependency health: unverified → partial
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] MCP protocol: unverified → pass
- [functional improvement] Schema quality: unverified → excellent
- [functional] Licence: MIT

### 2026-08-01 (score 5, −16)

- [functional regression] Tool coverage: 100 → unverified

### 2026-07-31 (score 21, −3)

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

### `navigate` (~209 tokens)

Navigate a browser to a URL and return the page title, final URL, and accessibility tree snapshot. Automatically creates a new browser session if none exists. Returns structured data ideal for LLM consumption — 77% fewer tokens than screenshots.

Input parameters:

- `action_delay_ms` (object): Add random delay between browser actions for polite scraping. Specify min and max milliseconds, e.g. {"min": 500, "max": 1500}.
- `session_id` (string): Reuse an existing browser session. If omitted, a new session is created automatically.
- `stealth` (boolean): Enable stealth mode: sets a realistic user agent and hides the webdriver flag to reduce bot detection on public sites. Default: false.
- `timeout_ms` (number): Navigation timeout in milliseconds. Default: 30000.
- `url` (string, required): Full URL to navigate to (e.g. "https://example.com")
- `wait_until` (string): Page lifecycle event to wait for. Default: "networkidle".

### `interact` (~130 tokens)

Perform a click or fill action on an element in the current browser session. Use "click" to click a button or link by CSS selector, or "fill" to type text into an input field.

Input parameters:

- `action` (string, required): The interaction type: "click" to click an element, "fill" to type into an input.
- `params` (object): Action parameters. For click: {"selector": "button.submit"}. For fill: {"selector": "input[name=email]", "value": "user@example.com"}.
- `session_id` (string, required): The browser session ID returned by navigate.

### `extract_schema` (~148 tokens)

Extract structured data from a webpage using a JSON schema. Navigates to the URL, waits for the page to load, and extracts values matching the schema keys from the page content. Returns a JSON object with the extracted data.

Input parameters:

- `schema` (object, required): A JSON object where keys are the field names to extract and values describe the expected data type. Example: {"price": "string", "title": "string", "rating": "number"}.
- `url` (string, required): URL of the page to extract data from (e.g. "https://example.com/product")
- `wait_for_selector` (string): Optional CSS selector to wait for before extracting data, useful for dynamically loaded content.

### `screenshot` (~157 tokens)

Capture a screenshot of the current browser page. Can take an in-session screenshot (using session_id) or a standalone screenshot of any URL. Returns the screenshot URL and metadata.

Input parameters:

- `format` (string): Image format. In-session mode only. Default: "png".
- `full_page` (boolean): Capture the full scrollable page, not just the viewport. In-session mode only. Default: false.
- `selector` (string): CSS selector to screenshot a specific element instead of the page. In-session mode only.
- `session_id` (string): Browser session ID for in-session screenshot. If provided, captures the current page state.
- `url` (string): URL to screenshot. Used for standalone screenshots when no session_id is provided.

### `get_a11y_tree` (~226 tokens)

Get the accessibility tree snapshot of the current page. Returns structured data 77% smaller than a screenshot. Auto-scopes to the main content area on large pages (50K+ chars). Use selector to manually scope to a specific element.

Input parameters:

- `exclude_selectors` (array): CSS selectors to exclude from the tree (e.g. ["nav", "footer", ".ad-slot"]). Elements are hidden before snapshotting.
- `max_chars` (number): Maximum characters to return. Truncates at nearest line boundary.
- `max_depth` (number): Maximum tree depth. Limits nesting to get a structural overview without deep details.
- `selector` (string): CSS selector to scope the tree to a specific element (e.g. "#search-results", "main"). If omitted on large pages, auto-scopes to the main landmark.
- `session_id` (string, required): The browser session ID. The session must have navigated to a page first.
- `visible_only` (boolean): Only include visible elements. Skips hidden menus, modals, and offscreen content.

### `click` (~191 tokens)

Click an element on the page by CSS selector or accessible label. Use this to interact with buttons, links, checkboxes, and other clickable elements.

Input parameters:

- `button` (string): Mouse button to click with. Default: "left".
- `click_count` (number): Number of clicks (e.g. 2 for double-click). Default: 1.
- `label` (string): Accessible name or visible text to click by (e.g. "Sign in", "Submit"). Alternative to selector; matches buttons, links, labels, and text.
- `selector` (string): CSS selector of the element to click (e.g. "button.submit", "#login", "a[href='/pricing']"). Either selector or label is required.
- `session_id` (string, required): The browser session ID.
- `wait_after_ms` (number): Milliseconds to wait after clicking before returning. Useful for pages that update asynchronously.

### `fill` (~127 tokens)

Type text into a form field. By default clears any existing value first, then types the new value.

Input parameters:

- `clear_first` (boolean): Clear the existing value before typing. Default: true.
- `label` (string): Accessible label of the input (e.g. "Email address"). Alternative to selector.
- `selector` (string): CSS selector of the input element (e.g. "input[name=email]", "#search-box"). Either selector or label is required.
- `session_id` (string, required): The browser session ID.
- `value` (string, required): The text to type into the field.

### `get_text` (~81 tokens)

Extract the text content of an element on the page. Useful for reading specific values like prices, headings, or status messages.

Input parameters:

- `selector` (string, required): CSS selector of the element to read text from.
- `session_id` (string, required): The browser session ID.
- `trim` (boolean): Trim leading/trailing whitespace from the extracted text. Default: true.

### `scroll` (~94 tokens)

Scroll the page in a given direction, or scroll a specific scrollable element. Useful for loading lazy content or reaching elements below the fold.

Input parameters:

- `amount` (number): Pixels to scroll. Default: 500.
- `direction` (string, required): Scroll direction.
- `selector` (string): CSS selector of a scrollable element. If omitted, the window is scrolled.
- `session_id` (string, required): The browser session ID.

### `evaluate` (~74 tokens)

Execute arbitrary JavaScript in the browser page context. Returns the result of the expression. Use for advanced DOM queries, custom extraction logic, or page manipulation.

Input parameters:

- `expression` (string, required): JavaScript expression to evaluate in the page context. The return value is serialized as JSON.
- `session_id` (string, required): The browser session ID.

### `list_sessions` (~29 tokens)

Show the current active browser session for this MCP connection, including its URL, page title, and expiry.

### `close_session` (~56 tokens)

Close a browser session and release all associated resources (browser context, page, video recording). Returns a list of artifacts (screenshots, videos) captured during the session.

Input parameters:

- `session_id` (string, required): The browser session ID to close.

### `authenticate` (~63 tokens)

Authenticate this MCP session by email. Sends a magic link to your inbox — click it to activate your session and get an API key. Required before using browser tools if no ROVE_API_KEY is set.

Input parameters:

- `email` (string, required): Your email address to receive the magic link.

### `account_info` (~26 tokens)

Check your Rove account status including credit balance, plan tier, and API key info.

### `buy_credits` (~36 tokens)

Get pricing information and purchase links for Rove credits. Returns Founder Pack tiers and top-up bundles with direct links to the pricing page.

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/noncelogic-mcp/roveapi-mcp#diagnostics

## Score history

- 2026-08-03: 69
- 2026-08-02: 65
- 2026-08-01: 5
- 2026-07-31: 21
- 2026-07-30: 24
- 2026-07-28: 24
- 2026-07-27: 24

## Links

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