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

@easyparcel/cli

v0.1.8

Published

EasyParcel CLI — a comprehensive command-line interface for the EasyParcel Open API, built for humans and AI agents.

Readme

EasyParcel CLI

Ship parcels, compare courier rates, track deliveries, and check your wallet — straight from your terminal or through your favourite AI assistant.

easyparcel-cli is the command‑line tool for the EasyParcel Open API (Malaysia & Singapore). It's friendly for people and built for AI agents (ChatGPT/Claude‑style tools), with clean output and a one‑step login.

ep +rates --from 11950 --to 55100 --weight 1.5    # compare courier prices
ep +track EP123456789                              # where's my parcel?
ep wallet                                          # how much credit do I have?

The command is available under three names — ep, easyparcel, and easyparcel-cli — they all do the same thing. We'll use ep below.


Install

With npm (needs Node.js 18+):

npm install -g @easyparcel/cli

No Node? Download a ready‑to‑run app from the Releases page — pick your system, then run it directly:

  • Windows: easyparcel-windows-x64.exe
  • macOS (Apple Silicon): easyparcel-darwin-arm64
  • macOS (Intel): easyparcel-darwin-x64
  • Linux: easyparcel-linux-x64

On macOS/Linux, make it runnable first: chmod +x easyparcel-*.


1. Log in (one step)

ep auth login

Your browser opens, you approve, done — tokens are saved securely on your machine. No app registration, no API keys to copy.

Check anytime:

ep auth status

Have more than one EasyParcel account (e.g. a Malaysia account in MYR and a Singapore account in SGD)? Log them all in at once:

ep auth login --all

Then pick which to use per command (currency follows the account):

ep --profile sg +rates --from 049483 --to 018956 --weight 1   # quotes in SGD
ep --profile my wallet                                        # MYR balance

2. Everyday commands

| What you want | Command | |---|---| | Compare courier rates | ep +rates --from <postcode> --to <postcode> --weight <kg> | | Track a parcel | ep +track <AWB> [<AWB> …] | | Wallet balance | ep wallet | | Your account info | ep account info | | Find a saved address | ep +address "john" | | Book a simple parcel | ep +ship --service-id … --collection-date … --weight … --sender-… --receiver-… | | List your shipments | ep shipments |

Anything that spends credit (booking, cancelling) supports --dry-run — it shows exactly what would be sent, without doing it:

ep shipment submit --dry-run --data @order.json

Prefer a table or spreadsheet? Add --format table or --format csv (default is JSON).

Not sure what a command needs? Ask the CLI:

ep --help                 # everything
ep shipment --help        # shipping commands
ep describe               # full machine‑readable list (handy for AI)

3. Use it with AI (ChatGPT / Claude / Cursor)

This is what the CLI is really built for. Two ways:

a) Plug it into an AI assistant as tools (recommended)

Add this to your AI client's MCP config (Claude Desktop, Claude Code, Cursor, …):

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

Restart the app, log in once with ep auth login, and then just chat: "Compare rates from 11950 to 55100 for a 1 kg parcel" — the assistant runs it for you.

b) Teach a coding assistant how to use it (Claude Code / Cursor "Skills")

ep skills install          # adds EasyParcel skills to this project
ep skills install --user   # …or for all your projects

c) Host it as a remote connector (ChatGPT apps / web MCP)

Run the server over HTTP instead of stdio and point a remote MCP client at it.

With OAuth (for ChatGPT connectors / public listing):

ep mcp --http --host 0.0.0.0 --port 8790 --oauth --public-url https://mcp.example.com

This turns the server into an OAuth 2.1 authorization‑server proxy: ChatGPT does discovery, dynamic client registration and the login flow against it, and it relays the actual sign‑in to EasyParcel's OAuth — each user logs in with their own EasyParcel account. Put it behind HTTPS and register https://mcp.example.com/mcp as the connector URL. (The EasyParcel app must allow https://mcp.example.com/oauth/callback as a redirect URI.)

With a pre‑issued token (simplest, for your own use):

ep mcp --http --require-auth

Clients authenticate per request with their own EasyParcel token (Authorization: Bearer <token>). Drop --require-auth for local testing (it then uses your logged‑in credentials).


4. For automation / servers (no browser)

Set a token in the environment and the CLI runs fully unattended:

export EASYPARCEL_ACCESS_TOKEN=...     # (and EASYPARCEL_REFRESH_TOKEN to auto‑renew)
ep wallet

Updating

ep upgrade            # update to the latest version  (`ep update` works too)
ep upgrade --check    # just check if there's a newer version

If you installed with npm, this runs npm i -g @easyparcel/cli@latest. For a downloaded binary, it points you to the latest release. The npx … mcp setup auto‑uses the latest.


Good to know

  • Where things are saved: ~/.easyparcel/ (config + login tokens, readable only by you).
  • Demo vs live: you're using whichever EasyParcel account you logged in with.
  • Exit codes (for scripts): 0 ok · 3 not logged in · 4 not found · 5 bad input · 6 rate‑limited · 7 some batch items failed.
  • Coverage: couriers for Malaysia (MY) and Singapore (SG).

Building / contributing

See AGENTS.md (architecture) and PUBLISHING.md (release steps).

npm install
npm run dev -- <args>     # run from source
npm run build             # bundle
npm run build:exe         # standalone binaries for all platforms

License

MIT © EasyParcel