# dev.corlabs/mcp (npm · @corlabsdev/mcp)

Scored, maintainable locators from a live page for AI coding agents, with checks and repairs.

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

## Components

- npm · `@corlabsdev/mcp`: 65/100 (this document), [markdown](https://verifymcp.io/servers/dev-corlabs-mcp/corlabsdev-mcp.md), [page](https://verifymcp.io/servers/dev-corlabs-mcp/corlabsdev-mcp)

## Channel facts

- Registry: `npm`
- Package: `@corlabsdev/mcp`
- Version: `0.1.7`
- 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**: 98/100
  - No malware found by supply-chain analysis.
  - No known CVEs affecting this package version or its production dependencies.
  - No install/post-install scripts declared.
  - 30 of 93 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 32/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Licence could not be checked: the licence is shipped as a file inside the package, not declared as a standard (SPDX) licence identifier, so we cannot tell whether it is OSI-approved.
  - Actively maintained (last published 9 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 63/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 2423 tokens (~220/item across 11 items; 11 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **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.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 11 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 12 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

**Unverified: 1 category.** A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

## Install

### How do I install the dev.corlabs/mcp server?

dev.corlabs/mcp runs locally as an npm package, launched with npx -y @corlabsdev/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 dev-corlabs-mcp -- npx -y @corlabsdev/mcp
```

### Cursor

```json
{
  "mcpServers": {
    "dev-corlabs-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@corlabsdev/mcp"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "dev-corlabs-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@corlabsdev/mcp"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add dev-corlabs-mcp -- npx -y @corlabsdev/mcp
```

### opencode

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

### OpenClaw

```bash
openclaw mcp add dev-corlabs-mcp --command npx --arg -y --arg @corlabsdev/mcp
```

### Hermes

```yaml
mcp_servers:
  dev-corlabs-mcp:
    command: "npx"
    args: ["-y", "@corlabsdev/mcp"]
```

### Netclaw

```json
{
  "McpServers": {
    "dev-corlabs-mcp": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "@corlabsdev/mcp"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add dev-corlabs-mcp -t stdio -c npx -a -y @corlabsdev/mcp
```

### Other

```json
{
  "mcpServers": {
    "dev-corlabs-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@corlabsdev/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-10-28 (score 65, +15)

- [security improvement] Malware scan: unverified → pass

### 2026-10-27 (score 50)

First indexed and scored.

## MCP tools (11)

### `cor_open` (~148 tokens)

Open a page

Open a URL in the COR-controlled browser. The browser starts on first use and is reused across calls. For a page behind a login, pass a Playwright storage-state file so the existing session is adopted. The reply lists the page's controls with refs (on a large page, a region index) — no cor_snapshot needed first — and, when the project's code already uses COR entries for this page, which members those are and whether each still finds its element.

Input parameters:

- `storageState` (string): Path to a Playwright storage-state JSON file ({cookies, origins}) — e.g. from `npx playwright codegen --save-storage`.
- `url` (string, required): Page to open.

### `cor_click` (~78 tokens)

Click an element

Click an element to reach a page state — open a menu, go to the next step. Does not assert anything.

Input parameters:

- `ref` (string): Element ref from the latest cor_snapshot, e.g. "e4". Alternative to target.
- `target` (string): CSS selector for the element — must match exactly one. Alternative to ref.

### `cor_fill` (~84 tokens)

Fill a field

Set the value of an input, textarea, select or editable element, firing input and change events.

Input parameters:

- `ref` (string): Element ref from the latest cor_snapshot, e.g. "e4". Alternative to target.
- `target` (string): CSS selector for the element — must match exactly one. Alternative to ref.
- `value` (string, required): Value to set.

### `cor_press` (~111 tokens)

Press a key

Press a key, e.g. Enter, Escape, Tab, ArrowDown. With a ref or target, that element is focused first.

Input parameters:

- `key` (string, required): Key name as Playwright spells it: Enter, Escape, Tab, ArrowDown, a, Shift+Tab.
- `ref` (string): Element ref from the latest cor_snapshot, e.g. "e4". Alternative to target.
- `target` (string): CSS selector for the element — must match exactly one. Alternative to ref.

### `cor_close` (~25 tokens)

Close the browser

Close the browser and forget the session. The next cor_open starts a fresh one.

### `cor_snapshot` (~255 tokens)

List interactive elements

Outline of the visible interactive elements on the current page, each with a ref (e1, e2…), nested only under what identifies it: landmarks, sections by heading, tables (column / row), list items. Pick the element you need, then pass its ref to cor_inspect. Markers: ✓id test attribute, +N hidden lookalikes, [disabled]/[checked]/[expanded]/[selected], [unstable id]; "clickable" is an element with no role that the page makes clickable (cursor: pointer). Take a new snapshot after any navigation or act call — earlier refs expire. On a large page it answers with a region index (each region's controls, the named ones first); full: true lists every control.

Input parameters:

- `full` (boolean): The whole outline even on a large page, instead of the region index.
- `within` (string): Show one region in full instead — every line of text, prices and labels included. A ref (its region: the card, row, column or section that identifies it) or a region's name (a heading, a landmark lab…

### `cor_inspect` (~291 tokens)

Get ranked locators for an element

Rank, score and match-count locators for one element, rendered for the chosen test framework. Pass a ref from cor_snapshot, or a CSS selector that matches exactly one element — or targets: many of them in one call, one entry each. The response leads with the recommendation; below the quality floor it recommends an application change (a test attribute) instead of a fragile locator. Use the locator as given; write the surrounding test code yourself.

Input parameters:

- `all` (boolean): List every alternative. By default: the runner-up and the best of each other locator kind, up to 3.
- `detail` (boolean): P4: the full reply — alternatives, facts, why this order, the durable annotation. By default: the answer and its code, about 6 lines.
- `framework` (string): Test framework to render and rank for. Default: the project's framework as cor_open reported it, else playwright.
- `ref` (string): Element ref from the latest cor_snapshot, e.g. "e4".
- `selector` (string): CSS or Playwright selector (:text-is, >>, text=) matching exactly one element — alternative to ref.
- `targets` (array): P2a: several refs or selectors at once — every element you need from this page in one call. Each gets its entry only (no alternatives); inspect one ref alone for the detail.

### `cor_grade` (~479 tokens)

Grade an existing selector

Diagnose a selector that already exists — from a test file, a failing test, or a pull request — against the open page. When a test fails on a locator, call this FIRST, before re-identifying the element. It says whether the locator is broken (matches nothing), ambiguous (matches several), fragile, or healthy. If it reports Healthy, STOP: the locator is not why the test failed — look at the product or the assertion instead of replacing it. Accepts a CSS selector, an XPath, page.getByRole/getByText/getByLabel/getByPlaceholder/getByTestId/getByAltText/getByTitle(…) or page.locator('…') — chained with .locator/.getBy*/.filter({ has, hasNot, hasText, hasNotText, visible })/.or()/.and()/.first()/.last()/.nth(n) — cy.get('…') or cy.contains(…), chained with .find/.filter/.not/.closest/.parent/.children/.contains/.eq/.first/.last — $('…') / $$('…') with a WebdriverIO selector (CSS, XPath, tag=text, tag.class=text, *=text), chained with .$/.$$/[n]/.parentElement() and .filter/.find((el) => el.isDisplayed() | (await el.getText()) === … | (await el.$(…).isExisting())).

Input parameters:

- `framework` (string): Framework to render alternatives for. Default: the framework of the project as cor_open reported it, else the form of the selector (getBy* → playwright, cy.* → cypress), else playwright.
- `locator` (string): Same as selector.
- `param` (string): For a parameterised helper: the variable in the selector (e.g. title in getByText(title, { exact: true })). COR runs the locator for every value and says which items no value reaches.
- `selector` (string): The selector exactly as written in the test, e.g. page.getByRole('button', { name: 'Save' }) or cy.get('.btn').
- `values` (array): Values to run the parameterised locator with. Omit to let COR find each item's values on the page (needs the chain to start with page.locator('css')).

### `cor_check` (~149 tokens)

Check every locator in the test files carries a COR id

Run before the tests. Scans the test and locator files changed on this branch (or all: true for the whole project) and fails any locator without a COR id (the // COR cor:… comment an entry carries), any id COR did not issue here, and any positional pick (.first(), .nth(), .eq(), [n]). With the locator's page open it returns the fix: COR's entry to paste, or the id to add for a locator COR already has a record of.

Input parameters:

- `all` (boolean): Check every file in the project instead of the changed ones.
- `files` (array): Files to check, relative to the project root. Default: changed files.

### `cor_heal` (~151 tokens)

Propose a replacement for a broken locator

When a test fails because a locator no longer finds its element. Pass the locator line as it is in the file (its // COR cor:… comment included) or its id, with the page open where the element should be. COR opens the committed record for that id, tries the locators it recorded while this one worked, then the element's fingerprint, and proposes a graded replacement — or declines. It never edits a file. With no id, it lists the elements on this page whose recorded locators all fail.

Input parameters:

- `id` (string): The entry's id (the 6 characters after cor:).
- `locator` (string): The broken locator line, its cor: comment included.

### `cor_explore` (~196 tokens)

Run several steps in one call

Discovery in one call: a list of steps, run in order — { open: url }, { click: ref|selector }, { fill: ref|selector, value }, { press: key, target? }, { inspect: ref|selector|[…] }, { within: region }, { expect: "exact text shown" }. Each step replies as its own tool would; refs from one step work in the next until a step opens a new page. No conditions or loops. It stops at the first step that fails (an element that is not exactly one, text not shown) and returns what ran, the page's region index with refs, and the step to resume from (resumeFrom). Put static elements first and the step that navigates away last.

Input parameters:

- `resumeFrom` (integer): Skip to this step number (1-based) — from a previous stopped run.
- `steps` (array, required): Steps, in order.

## Diagnostics

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

## Score history

- 2026-11-05: 65
- 2026-11-04: 65
- 2026-11-03: 65
- 2026-11-02: 65
- 2026-11-01: 65
- 2026-10-31: 65
- 2026-10-30: 65
- 2026-10-29: 65
- 2026-10-28: 65
- 2026-10-27: 50

## Common questions

### What is the dev.corlabs/mcp server?

dev.corlabs/mcp is listed in the public MCP registry as dev.corlabs/mcp. Scored, maintainable locators from a live page for AI coding agents, with checks and repairs. This page covers its npm package (@corlabsdev/mcp).

### Is the dev.corlabs/mcp server safe to use?

dev.corlabs/mcp scores 65 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. It declares no install or post-install scripts. 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 dev.corlabs/mcp server expose?

dev.corlabs/mcp exposes 11 tools: cor_open, cor_click, cor_fill, cor_press, cor_close, and 6 more. Their descriptions and schemas cost roughly 1,967 tokens of context every time the server is loaded.

### Is the dev.corlabs/mcp server still maintained?

dev.corlabs/mcp 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 did VerifyMCP test on the dev.corlabs/mcp server?

VerifyMCP ran 14 checks on dev.corlabs/mcp, covering Malware scan, Known CVEs, Install scripts, Dependency health and 10 more. 2 items could not be completed, a gap on our side rather than a finding about dev.corlabs/mcp: License and Stability. One category scores 0 for that reason, because we only credit what we can confirm. Endpoint Security and Transport & Reachability do not apply to an npm package, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.

## Links

- npm package: https://www.npmjs.com/package/@corlabsdev/mcp
- Socket report: https://socket.dev/npm/package/@corlabsdev/mcp
- Repository: https://github.com/kushshah12/cor-mcp
- Changelog RSS feed: https://verifymcp.io/servers/dev-corlabs-mcp/corlabsdev-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/dev-corlabs-mcp/corlabsdev-mcp/changelog.json
- Trust report (JSON): https://verifymcp.io/servers/dev-corlabs-mcp/corlabsdev-mcp.json
- HTML version of this page: https://verifymcp.io/servers/dev-corlabs-mcp/corlabsdev-mcp
