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

@easylabs/mcp-server

v0.5.0

Published

Easy Labs MCP Server - Payment processing tools for AI agents

Readme

Easy Labs MCP Server

Give AI agents access to your Easy payment data through the Model Context Protocol. Ask your agent "how's revenue this month?" or "find [email protected] and show her recent payments" and get real answers from your account — read-only, sandbox-first.

Easy (itseasy.co, by Easy Labs, Inc.) is a self-custodial payment platform: businesses accept cards, ACH, wallets, and stablecoins with flat-rate pricing, next-day payouts, and cashback on idle balances. Docs: docs.itseasy.co · Machine-readable site index: itseasy.co/llms.txt

Try it in 60 seconds — no account needed

Demo mode serves a deterministic, obviously-fake dataset ("Demo Coffee Co.", demo_* ids, @example.com emails) with zero network calls, so you can explore every tool before you have an API key.

Claude Desktop / any MCP client — add to your MCP config:

{
  "mcpServers": {
    "easy-labs-demo": {
      "command": "npx",
      "args": ["-y", "@easylabs/mcp-server"],
      "env": { "EASY_ENVIRONMENT": "demo" }
    }
  }
}

Claude Code:

claude mcp add easy-labs-demo -e EASY_ENVIRONMENT=demo -- npx -y @easylabs/mcp-server

Then ask: "Give me a revenue summary for the last 30 days" · "Find the customer [email protected]" · "Any open disputes?"

Connect your real account

Get an API key from the Easy dashboard (signup). The server targets the sandbox by default — production is an explicit opt-in:

{
  "mcpServers": {
    "easy-labs": {
      "command": "npx",
      "args": ["-y", "@easylabs/mcp-server"],
      "env": { "EASY_API_KEY": "sk_test_..." }
    }
  }
}

To target production instead of the sandbox, add "EASY_ENVIRONMENT": "production" to env — deliberately explicit, never the default.

Tools

Workflow tools answer whole questions in one call — prefer them when they fit:

| Tool | What it answers | | --- | --- | | revenue_summary | "How's revenue?" — gross volume, counts by status, average ticket, success rate, and change vs the previous period (7d/30d/90d/6m/12m/mtd) | | find_customer | "Who is jane@…?" — email/name search plus the best match's profile and recent payments |

Read-only building blocks:

| Tool | Purpose | | --- | --- | | list_transfers / get_transfer | Payments, filterable by status | | list_disputes / get_dispute | Chargebacks and their lifecycle state | | list_settlements / get_settlement | Payout batches | | list_customers / get_customer | Customer records | | list_balance_transfers / get_balance_transfer | Balance movements |

Resources: merchant://profile, merchant://summary (account context for the agent), docs://api-reference, docs://changelog.

All tools are read-only (readOnlyHint: true) — nothing here moves money.

Notes for AI agents

  • No credentials? Use demo mode (EASY_ENVIRONMENT=demo, or the literal credential demo against a hosted endpoint). Demo data self-identifies: demo_* ids, @example.com emails.
  • Start with revenue_summary / find_customer; fall back to list_*/get_* for specifics. Read merchant://summary for account context.
  • Amounts are integer cents, USD unless stated. Errors are human-readable strings including the HTTP status; 404 means the id doesn't exist.
  • To learn about the Easy product itself, fetch itseasy.co/llms.txt — every page there is available as markdown.

HTTP mode (Streamable HTTP, multi-tenant)

npx -y @easylabs/mcp-server --http          # port 3100, or EASY_MCP_PORT / PORT / --port=
  • POST/GET/DELETE /mcp — MCP endpoint · GET /health — liveness, no auth
  • Auth is per-request: x-easy-api-key: sk_... or Authorization: Bearer sk_... — live keys route to the production API, test keys to the sandbox. EASY_API_KEY is only a fallback for keyless requests. Sessions are bound to the credential that opened them.
  • Keyless requests get a demo session — zero-config tool discovery with self-identifying sample data. The literal credential demo does the same explicitly. Set EASY_MCP_KEYLESS=reject for strict 401s on private deployments. Real data always requires a valid key; an invalid key fails at the API, never downgrading to demo.
  • Per-key rate limiting: EASY_MCP_RATE_LIMIT_PER_MINUTE (default 120); 429s carry Retry-After + RateLimit-*.
  • Idle sessions evicted after 30 minutes.

Configuration reference

| Variable | Default | Purpose | | --- | --- | --- | | EASY_API_KEY | — | API key (required for stdio real mode; per-request fallback in HTTP mode) | | EASY_ENVIRONMENT | sandbox | production targets the live API; demo serves sample data with no key | | EASY_API_URL | per environment | Advanced override — only *.itseasy.co / localhost hosts are accepted, so your key can never be sent elsewhere | | EASY_MCP_PORT / PORT | 3100 | HTTP mode port | | EASY_MCP_RATE_LIMIT_PER_MINUTE | 120 | HTTP per-key rate limit | | EASY_MCP_KEYLESS | serve demo | Set to reject to 401 keyless HTTP requests instead of serving demo data |

Safety model

  • Read-only tool surface — no writes, no money movement.
  • Sandbox by default; production requires EASY_ENVIRONMENT=production.
  • Host allowlist: the client refuses to send your API key anywhere but *.itseasy.co/localhost.
  • Keys are never logged; multi-tenant session state stores only a hash.

Development

pnpm install
pnpm dev                 # stdio (set EASY_ENVIRONMENT=demo or EASY_API_KEY)
pnpm dev -- --http       # Streamable HTTP on :3100
pnpm test                # vitest — includes end-to-end transport tests
pnpm type:check && pnpm build

Links