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

hanzi-browse

v2.3.2

Published

Give your AI agent a real browser — click, type, fill forms, test workflows, post content, and read authenticated pages

Readme

Hanzi Browse

Give your AI agent a real browser — with your existing logins, cookies, and sessions.

Two ways to use it:

  • Use locally — MCP server for Claude Code, Cursor, Codex, and other AI coding agents
  • Build with it — REST API + TypeScript SDK for embedding browser automation in your product

Quick Start (MCP)

npx hanzi-browse setup

This installs the Chrome extension and configures your AI agent. One command, done.

Prerequisites: Chrome must be open with the Hanzi extension installed.

Quick Start (API)

npm install @hanzi/browser-agent
import { HanziClient } from '@hanzi/browser-agent';

const client = new HanziClient({ apiKey: 'hic_live_...' });

// 1. Pair a browser — give the URL to your user
const { pairingToken } = await client.createPairingToken();
// User visits: https://api.hanzilla.co/pair/{pairingToken}

// 2. Find their connected session
const sessions = await client.listSessions();
const browser = sessions.find(s => s.status === 'connected');

// 3. Run a task (polls until complete)
const result = await client.runTask({
  browserSessionId: browser.id,
  task: 'Go to example.com and read the page title',
});
console.log(result.answer);

Full API docs: browse.hanzilla.co/docs.html

MCP Tools

browser_start

Start a browser task. Blocks until complete or timeout.

browser_start(
  task: "Search for flights to Tokyo on Google Flights",
  url: "https://flights.google.com",        // optional starting URL
  context: "Departing March 15, economy"     // optional extra info
)

→ {
  "session_id": "abc123",
  "status": "complete",
  "answer": "Found 3 flights: JAL $850, ANA $920, United $780",
  "total_steps": 8,
  "recent_steps": ["Opened Google Flights", "Set destination to Tokyo", ...]
}

browser_message

Send follow-up instructions to an existing session.

browser_message(session_id: "abc123", message: "Book the cheapest one")

browser_status

Check known sessions and their latest status.

browser_status()                     // all active sessions
browser_status(session_id: "abc123") // specific session

browser_stop

Stop a task.

browser_stop(session_id: "abc123")
browser_stop(session_id: "abc123", remove: true)  // also close window

browser_screenshot

Capture the current browser state as an image.

browser_screenshot(session_id: "abc123")

Examples

Logged-in workflows:

browser_start("Go to Jira, find my open tickets, and summarize what needs attention")

Multi-turn:

s = browser_start("Go to LinkedIn and find AI Engineer jobs in Montreal")
browser_message(s.session_id, "Click into the Cohere job and tell me the requirements")
browser_message(s.session_id, "Apply to this job using my profile")

Parallel execution:

browser_start("Check flight prices to Tokyo")
browser_start("Check hotel prices in Shibuya")
// Both run simultaneously in separate windows

Configuration

| Environment Variable | Default | Description | |---|---|---| | HANZI_BROWSE_MAX_SESSIONS | 5 | Max concurrent browser tasks | | HANZI_BROWSE_TIMEOUT_MS | 300000 | Task timeout (ms) | | WS_RELAY_PORT | 7862 | WebSocket relay port |

Skills

The server exposes MCP prompts that clients auto-discover:

| Prompt | Description | |--------|-------------| | linkedin-prospector | Goal-driven LinkedIn outreach | | e2e-tester | Test your app in a real browser with screenshots | | social-poster | Post across LinkedIn, Twitter, Reddit from your browser | | x-marketer | Find X/Twitter conversations and draft voice-matched replies |

hanzi-browser skills                              # list available skills
hanzi-browser skills install linkedin-prospector   # install SKILL.md to your project

Architecture

AI Agent (Claude Code, Cursor, etc.)
    ↓ MCP Protocol (stdio)
MCP Server (this package)
    ↓ WebSocket
Chrome Extension
    ↓ Chrome DevTools Protocol
User's Real Browser

Principle: Hanzi is for real browser work in your signed-in Chrome. Agents should prefer code, logs, APIs, and existing tools first. Use Hanzi when the job needs a real browser session.

License

Polyform Noncommercial 1.0.0