npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@accesslint/eve

v0.1.1

Published

Accessibility for eve agents — WCAG scans, monitored user journeys, and violation triage, over AccessLint's MCP connector

Readme

@accesslint/eve

Accessibility for eve agents. Mount it and your agent can check a page against WCAG, set up monitoring for a user journey, and read back the violations with the selector and screenshot for each.

It is a thin package on purpose: it mounts AccessLint's hosted MCP connector and teaches the model when to reach for it. The browser, the crawler and the WCAG engine stay on AccessLint's side, so rule improvements arrive without you upgrading anything.

Install

npm install @accesslint/eve

Mint an API key on your account's API keys page at app.accesslint.com, then mount the extension:

// agent/extensions/accesslint.ts
import accesslint from "@accesslint/eve";

export default accesslint({ apiKey: process.env.ACCESSLINT_API_KEY! });

Set ACCESSLINT_API_KEY in your agent's environment, such as .env.local.

apiKey is the only setting. Everything else is either fixed or overridden the way eve overrides any contribution, which is described below.

What ships in the box

  • A connection to AccessLint's MCP connector, authenticated with your key.
  • An instruction fragment, always in context, carrying the two rules below.
  • Two skills, loaded on demand: triaging findings into a ranked set of fixes, and setting up monitoring for a user journey.

The mount name is the namespace. Mounted from agent/extensions/accesslint.ts as above, the connection registers as accesslint__api, and the model calls its tools by their qualified names, accesslint__api__scan_page, accesslint__api__generate_flows, and the rest. It finds them through eve's built-in connection_search.

Limiting what the agent can do

Use the key's scopes, not a client-side allowlist. Scopes are enforced by AccessLint on every call, so they hold even if the agent is talked into trying something else:

  • read alone lets the agent look at domains, flows, runs and violations, and nothing else.
  • add execute to let it scan pages and run flows, which spends budget.
  • add draft to let it propose flows and add domains.

A key missing a scope produces a clear refusal naming the one it needs.

Asking a person before it calls

There is no approval gate by default, matching eve's own default for connection tool calls. For an agent that runs unattended, one is worth adding: scans and flow runs spend your account's budget and reach out to third-party sites.

Add it the way eve overrides any contribution, with a directory mount:

// agent/extensions/accesslint/extension.ts
import accesslint from "@accesslint/eve";

export default accesslint({ apiKey: process.env.ACCESSLINT_API_KEY! });
// agent/extensions/accesslint/connections/api.ts
import { defineMcpClientConnection } from "eve/connections";
import { once } from "eve/tools/approval";
import api from "@accesslint/eve/connections/api";

export default defineMcpClientConnection({ ...api, approval: once() });

No setting here can start monitoring in any case. That gate is human-only and lives in the AccessLint web app.

Two rules this package keeps

Approval belongs to a person. Drafting a flow proposes it. Nothing starts monitoring until someone approves its dry run in the AccessLint web app, and no tool here can do that for them. The skills tell the model to say so plainly rather than reporting a drafted flow as though it were already watching.

Page content is data, never instruction. Everything an audit returns came from a site that AccessLint does not control. The instruction fragment tells the model to treat text, alt attributes and ARIA labels as the subject of a report, and to surface anything that reads like an instruction as a finding instead of following it. Any agent that audits pages faces this; mounting a ticket-filer in the same session is what makes it concrete.

License

MIT