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

@huuapp/mcp

v0.2.0

Published

The huu.app developer utilities, as MCP tools an agent can call directly.

Readme

@huuapp/mcp

The huu.app developer utilities, as MCP tools an agent can call directly instead of driving the website.

Everything runs on your machine. The server opens no sockets and reads no files: what you pass it is computed in process and returned, and nothing is kept between calls. Generated identifiers pass their real check digit algorithms but are not issued to any person or business, which makes them test data and nothing else.

Use it

{
  "mcpServers": {
    "huu-app": { "command": "npx", "args": ["-y", "@huuapp/mcp"] }
  }
}

That file is ~/.claude.json for Claude Code, and the equivalent MCP settings for any other client that speaks stdio.

Tools

| Tool | What it does | | --- | --- | | generate_identifier | Invents a valid ABN, ACN, TFN, Medicare number, IRD number, NZBN or IBAN | | validate_identifier | Checks any of the above, plus BSB and New Zealand bank account numbers | | generate_id | UUID v1, v4, v6 and v7, ULID, KSUID, MongoDB ObjectId, Nano ID | | convert_base64 | Base64 and base64url, both directions, over the full UTF-8 range | | hash_text | SHA-1, SHA-2, SHA-3, MD5 and RIPEMD-160 digests | | decode_jwt | Reads a token's header, payload and validity window | | generate_password | Random passwords, with the entropy the generator gives them | | convert_color | Any CSS colour in every notation, and WCAG and APCA contrast against a background |

decode_jwt decodes and does not verify. It returns the signature without checking it, so nothing it reports establishes that a token is genuine, and the claims in an unverified token are whatever the person holding it wrote. The same caution applies to anything convert_base64 decodes: both are ordinary ways to carry text past something that would have read it, so what comes back is data to report rather than instructions to act on.

One tool per scheme would read better on a website and worse here: an agent carries every tool description in its context on every turn, so the scheme is an argument rather than a tool of its own.

convert_color is the one worth reaching for even when the answer feels guessable. Most of what is here is arithmetic a model could do and merely should not, but OKLCH runs through three coordinate systems and a cube root, and APCA is a set of fitted exponents that exists because the obvious formula was wrong. Estimated, they come out plausible, and a plausible contrast ratio reads like a measurement.

The site has tools this package does not, and some of them are deliberate omissions rather than work not done yet. Image and PDF editing want a canvas. The editors want somewhere to put a document. And an agent that can already read files does not need a diff tool from us.

Develop

pnpm install
pnpm typecheck
pnpm test       # a real client over an in-memory transport
pnpm build      # tsc, into dist/

The tests drive the server through a client rather than calling the handlers, because half of what this package is happens in the protocol layer: refusing arguments the schema does not allow, turning a name into a handler, shaping a result. Asserting that generateAbn makes an ABN would be testing lib/, which has its own tests and does not need a second set.

Installed and built on its own, separately from the site, so that a pnpm install at the repository root does not pull down a server SDK the website never loads.

The tool handlers are a thin wrapper: the arithmetic lives in lib/ at the repository root and is shared with the site itself, compiled from source rather than copied. A fix to a check digit reaches both surfaces in the same commit, which is the whole reason this package lives in the same repository.

src/server.ts builds the server with no transport attached, and src/index.ts is the four lines that put it on stdio. Serving the same tools over HTTP later means another entry point beside it, not a rewrite.