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

@unstringify/mcp

v0.1.1

Published

unstringify as an MCP server: fix broken JSON with named fixes, convert between JSON, YAML, XML, CSV, NDJSON, Markdown and TypeScript, read CSV, NDJSON and logs as records, unpack stringified JSON, compare by structure. A local process — nothing leaves th

Readme

unstringify — MCP server

The engine behind unstringify.com, as tools an agent can call: fix broken JSON with named fixes, validate, convert between JSON, YAML, XML, CSV, NDJSON, a Markdown table and TypeScript, read CSV, NDJSON and logs as records, unpack stringified JSON, compare by structure or by key.

It is a local process on stdio. It reads the text you hand it (or a file path you name) and answers; it makes no network request — there is no network code in the package.

Install

Claude Code:

claude mcp add unstringify -- npx -y @unstringify/mcp

Cursor — .cursor/mcp.json (or the global one):

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

VS Code: nothing to write — the unstringify extension (0.6.0 or later, VS Code 1.101 or later) registers this server for Copilot's agent mode.

Any other MCP client: the command is npx -y @unstringify/mcp, the transport is stdio.

Tools

Every tool takes text, or path to a file it reads itself, and answers with JSON that ends in one measured sentence — the same sentence the app's status line prints.

| Tool | What it answers | |---|---| | fix_json | The fixed text, every fix by line and kind (line 3 · Single → double quotes), and whether the result is valid now. JSON, YAML and XML. Deterministic — it never guesses at content. → 7 fixes on 6 lines · valid JSON now. | | validate | Valid or not, and where not: line, column, the parser's message, a hint. → Not valid JSON · 3 errors. | | convert | Any format into any target the engine writes: yaml, csv, ts, markdown, ndjson, xml, json, json-min. A document into rows takes its main list of records with the rest of the document on every row. → TypeScript · 1,204 bytes. | | read_records | CSV, TSV, NDJSON, a Markdown table or a raw log as one JSON value per record, with the counts, the columns and the levels. delimiter, header and pattern are the reading answers the app would ask for; absent, the engine's measured defaults decide. → CSV · 1,284 rows. | | unpack | Every string that holds JSON, XML or YAML opened in place — the literal replaced by what it held, every other byte where it was. valuePath opens one. → 3 packed values opened in place. | | compare | Two documents by structure (keys sorted, whitespace ignored, one row per differing path) or two sets of rows by key (added, removed, changed — and in which fields). → 12 changed · 3 added · 1 removed · by id. |

Lists are capped so an answer fits an agent's context: 200 diff rows, 1,000 records, 20 errors; the counts are always the whole.

Privacy

The server runs on your machine and talks to your agent over stdio. It reads what it is given and nothing else; nothing is uploaded, logged or kept. The same engine runs in the browser at unstringify.com — where nothing leaves the tab — and in the VS Code extension.

Licence

Proprietary — see LICENSE. Free to use. Questions: [email protected]