Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

dev.corlabs/mcp

NPM · @CORLABSDEV/MCP

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

Available components

0 this week 65 Trust /100

Last scanned (12 hours ago)

Scores higher than 33% of npm servers

Category Testing and QA

Trust breakdown (7 categories)

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. How we score → Why this is hard to score →

Supply Chain Security98
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • 30 of 93 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency32
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
  • 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.Unverified
  • Actively maintained (last published 9 days ago).Pass
  • Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability63
  • AI-judged instruction clarity (excellent).Pass
  • 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. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management0
  • Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 11 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 12 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass

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.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 28 Oct 26 +15
    • Malware scan: unverified → pass ▲ security
  • 27 Oct 26 50

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 5 Nov 2026 · Analysed npm/@corlabsdev/mcp@0.1.7

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem npm

Background: How many MCP packages publish verified provenance →

Dependencies 93 packages
Packages resolved 93
Stale 30
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 11 exposed · ~1,967 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
cor_check ~149

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.

NameTypeReqDescription
allboolean–Check every file in the project instead of the changed ones.
filesarray–Files to check, relative to the project root. Default: changed files.

No output schema declared.

No examples provided.

cor_click ~78

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

NameTypeReqDescription
refstring–Element ref from the latest cor_snapshot, e.g. "e4". Alternative to target.
targetstring–CSS selector for the element — must match exactly one. Alternative to ref.

No output schema declared.

No examples provided.

cor_close ~25

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

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

cor_explore ~196

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.

NameTypeReqDescription
resumeFrominteger–Skip to this step number (1-based) — from a previous stopped run.
stepsarrayyesSteps, in order.

No output schema declared.

No examples provided.

cor_fill ~84

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

NameTypeReqDescription
refstring–Element ref from the latest cor_snapshot, e.g. "e4". Alternative to target.
targetstring–CSS selector for the element — must match exactly one. Alternative to ref.
valuestringyesValue to set.

No output schema declared.

No examples provided.

cor_grade ~479

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

NameTypeReqDescription
frameworkstring–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.
locatorstring–Same as selector.
paramstring–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.
selectorstring–The selector exactly as written in the test, e.g. page.getByRole('button', { name: 'Save' }) or cy.get('.btn').
valuesarray–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')).

No output schema declared.

No examples provided.

cor_heal ~151

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.

NameTypeReqDescription
idstring–The entry's id (the 6 characters after cor:).
locatorstring–The broken locator line, its cor: comment included.

No output schema declared.

No examples provided.

cor_inspect ~291

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.

NameTypeReqDescription
allboolean–List every alternative. By default: the runner-up and the best of each other locator kind, up to 3.
detailboolean–P4: the full reply — alternatives, facts, why this order, the durable annotation. By default: the answer and its code, about 6 lines.
frameworkstring–Test framework to render and rank for. Default: the project's framework as cor_open reported it, else playwright.
refstring–Element ref from the latest cor_snapshot, e.g. "e4".
selectorstring–CSS or Playwright selector (:text-is, >>, text=) matching exactly one element — alternative to ref.
targetsarray–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.

No output schema declared.

No examples provided.

cor_open ~148

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.

NameTypeReqDescription
storageStatestring–Path to a Playwright storage-state JSON file ({cookies, origins}) — e.g. from `npx playwright codegen --save-storage`.
urlstringyesPage to open.

No output schema declared.

No examples provided.

cor_press ~111

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

NameTypeReqDescription
keystringyesKey name as Playwright spells it: Enter, Escape, Tab, ArrowDown, a, Shift+Tab.
refstring–Element ref from the latest cor_snapshot, e.g. "e4". Alternative to target.
targetstring–CSS selector for the element — must match exactly one. Alternative to ref.

No output schema declared.

No examples provided.

cor_snapshot ~255

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.

NameTypeReqDescription
fullboolean–The whole outline even on a large page, instead of the region index.
withinstring–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…

No output schema declared.

No examples provided.

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.

npm · @corlabsdev/mcp

# add to Claude Code
claude mcp add dev-corlabs-mcp -- npx -y @corlabsdev/mcp
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.