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

copynpaste-mcp

v0.3.3

Published

MCP server for copynpaste: convert text formatting between apps via the copynpaste API (Slack, Discord, WhatsApp, Telegram, Reddit, Teams, Markdown, Google Docs, Notion).

Readme

copynpaste-mcp

An MCP server that converts text formatting between apps (Slack, Discord, WhatsApp, Telegram, Reddit, Microsoft Teams, Markdown, and more), backed by the copynpaste.xyz HTTP API. It runs over stdio and forwards conversions to the API, so usage is tracked and rich-text sources work too. Point it elsewhere with COPYNPASTE_API_URL.

Tools

  • convert_text { text, from, to } -> the converted text
  • list_formats -> the supported source and target formats
  • check_quota -> this account's tier and how many free words are left today

Your key

Set COPYNPASTE_API_KEY to a key created at https://copynpaste.xyz/keys. A key made there is tied to your account, so whatever plan the account has applies wherever you use the key.

Without one, the server mints an anonymous key on first run and caches it in ~/.config/copynpaste/<api-host>.key (mode 600), so restarts reuse it. For the default API that file is ~/.config/copynpaste/copynpaste.xyz.key. That file is managed by the client and may be replaced or deleted automatically, so a key of your own belongs in COPYNPASTE_API_KEY, never there. Anonymous keys get the smallest allowance and cannot be revoked or listed, so they are for trying it out, not for running on.

If the cached key ever stops being accepted, the server discards it and mints a replacement automatically, so a conversion recovers on the next call without you doing anything. Deleting that file by hand has the same effect, and the path is spelled out here so it stays findable. Versions before 0.3.1 did not recover on their own, so an install from before then may need the file deleted once.

A key set in COPYNPASTE_API_KEY is never replaced. If that key is rejected you get the error rather than a silent switch to an anonymous key, because swapping it would quietly drop you to the smallest allowance.

Limits

| | Free, account-bound | Free, anonymous | Monthly | Lifetime | | --- | --- | --- | --- | --- | | Per conversion | 250 words / 2500 chars | 250 words / 2500 chars | 100,000 chars | 100,000 chars | | Words per day | 5,000 | 1,000 per address | 100,000 | 250,000 | | Requests per day | — | — | 5,000 | 5,000 |

The daily budget counts words, not requests, so splitting a long document into smaller conversions does not raise it. An unlock — one-time or monthly, the same purchase as the web app — removes the per-conversion length limit and raises the daily budget: https://copynpaste.xyz/keys.

The paid daily budgets exist so one automated client cannot degrade the service for everyone. They are set far above any human workflow, and check_quota reports what is left on every tier, so a long job can be planned rather than interrupted. Accounts that bought before these budgets were introduced are not subject to them.

These limits apply to the API and MCP, where conversion happens on the server. The web app at https://copynpaste.xyz converts in your browser and is not metered this way.

Call check_quota before a long job to see what is left, rather than discovering it mid-task.

Sources: markdown, slack, whatsapp, discord, telegram, reddit, teams, plus rich HTML sources gdocs, notion, word, gmail (pass the copied HTML). Targets: the symbol set plus plain (strip formatting) and social (Unicode bold/italic for X and LinkedIn).

Install

npx -y copynpaste-mcp

Published on the public npm registry as copynpaste-mcp. No registry configuration and no auth token, for installing or for running.

Use with Claude Desktop

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "copynpaste": {
      "command": "npx",
      "args": ["-y", "copynpaste-mcp"],
      "env": { "COPYNPASTE_API_KEY": "cnp_your_key_here" }
    }
  }
}

Omit the env block to run anonymously at the smaller allowance.

Or run from a local build instead: "command": "node", "args": ["/absolute/path/to/mcp/dist/index.js"] (after npm install && npm run build).

Remote transport

The same tools also run on a Cloudflare Worker over Streamable HTTP. It is a compatibility spike, not a public connector: auth is a forwarded x-api-key header rather than the OAuth 2.1 + dynamic client registration flow the MCP spec wants for a public remote endpoint. The URL is deliberately not published — a URL in a published README is a public connector in practice whatever the heading above it says, and this one's auth is weaker than the spec requires. Use the stdio server above.

src/tools.ts holds the tool definitions; src/index.ts is the stdio entry and src/worker.ts the Worker entry, so both transports serve exactly the same tools.

Build (local)

npm install
npm run build