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

tokengratis

v0.1.1

Published

CLI + MCP server for tokengratis.id, the aggregator directory of free-tier & free-credit LLM APIs for Indonesian developers. Zero runtime dependencies.

Readme

tokengratis

CLI + MCP server for tokengratis.id — the aggregator directory of free-tier & free-credit LLM APIs for Indonesian developers.

Zero runtime dependencies. Plain Node ESM (node >= 20). Fetches the live directory at request time — no bundled/stale copy shipped in this package.

tokengratis.id is an aggregator, not a verifier. Every provider and every answer from this tool carries provenance (sources[] + syncedAt) — where the data came from and when it was last synced. You will never see the word "Verified" here.

Data source

  1. Primary: https://tokengratis.id/api/providers
  2. Fallback (if the API is unreachable): https://raw.githubusercontent.com/raymondchins/tokengratis-id/main/data/providers.json

Responses are cached in memory for the process and to a short-TTL (1 hour) file in the OS temp dir, so repeated CLI invocations don't re-fetch every time.

Install

Not yet published to npm. Until it is, run it straight from the repo (see Running from source below), or once published:

npm install -g tokengratis
# or run one-off without installing:
npx -y tokengratis list

CLI usage

tokengratis list [--modality <m>] [--min-context <ctx>] [--json]
tokengratis show <slug> [--json]
tokengratis search <query> [--json]
tokengratis models [--provider <slug>] [--json]
tokengratis --help
tokengratis --version

Examples:

tokengratis list
tokengratis list --modality vision
tokengratis list --min-context 128K --json
tokengratis show openrouter
tokengratis search llama
tokengratis models --provider groq
  • --refresh (alias --no-cache) pada perintah apa pun akan mengabaikan cache lokal dan mengambil ulang dari server. Output teks selalu menampilkan umur datanya, jadi cache basi tidak pernah tersaji diam-diam.
  • Plain text output by default; add --json to any command for machine-readable output.
  • Color is auto-disabled when stdout isn't a TTY, or when NO_COLOR is set.
  • Exits non-zero on error (bad slug, network failure, etc.) with a human-readable message — never a raw stack trace.

MCP server usage

tokengratis-mcp speaks the Model Context Protocol over stdio (newline-delimited JSON-RPC 2.0), implemented by hand with no SDK. It exposes four tools:

  • list_providers — optional modality / min_context filters
  • get_provider — full detail for one provider by slug, incl. provenance
  • search_models — substring search across provider/model names and ids
  • list_models — flat model list, optional provider slug scope

Claude Code / Cursor config

Once published to npm:

{
  "mcpServers": {
    "tokengratis": {
      "command": "npx",
      "args": ["-y", "-p", "tokengratis", "tokengratis-mcp"]
    }
  }
}

tokengratis-mcp is a bin inside the tokengratis package, not a package of its own — hence -p tokengratis. Plain npx -y tokengratis-mcp would try to fetch a package by that name and fail.

Running from source (works today, package isn't published yet)

Clone the repo, then point your MCP client straight at the local file with plain node — no install step needed since there are zero dependencies:

{
  "mcpServers": {
    "tokengratis": {
      "command": "node",
      "args": ["/absolute/path/to/tokengratis-id/packages/tokengratis/src/mcp-server.mjs"]
    }
  }
}

(Swap /absolute/path/to/tokengratis-id for wherever you cloned https://github.com/raymondchins/tokengratis-id.)

Same trick works for the CLI without installing:

node /absolute/path/to/tokengratis-id/packages/tokengratis/src/cli.mjs list

License

MIT