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

@d20dao/mcp

v0.1.0

Published

MCP server for D20DAO verifiable randomness on Arc: dice, draws and shuffles with on-chain proofs, 0.05 USDC per call from a Circle Agent Wallet.

Downloads

197

Readme

D20DAO MCP server

Verifiable randomness for AI agents: dice, coin flips, ranges, winners and shuffles, each one a VRF request on Arc with a proof anyone can replay. 0.05 USDC per draw, paid from your Circle Agent Wallet.

Setup

  1. Wallet. Have your agent follow Circle's setup guide. It installs the Circle CLI, logs you in with an emailed code and creates an agent wallet. You accept Circle's terms yourself.

  2. Funds. Fund the wallet with USDC and deposit some into Circle Gateway, for example on Arc:

    circle gateway deposit --chain ARC --method direct --amount 1 --address <wallet>

    Arc, Polygon, Avalanche, Base, Arbitrum, Optimism, Unichain and Ethereum balances all work.

  3. Server. Add it to your client.

    Claude Code:

    claude mcp add d20dao -- npx -y @d20dao/[email protected]

    Claude Desktop, Cursor and others (mcpServers in the client's MCP config):

    { "mcpServers": { "d20dao": { "command": "npx", "args": ["-y", "@d20dao/[email protected]"] } } }

    On Windows, use "command": "cmd" with "args": ["/c", "npx", "-y", "@d20dao/[email protected]"] if the client cannot start npx directly. Pin the version, since the server runs with your Circle session.

Ask your agent to call setup_status; it names the next step until everything is ready.

Tools

| Tool | Cost | Does | | --- | --- | --- | | draw | 0.05 USDC | raw, coinFlip, dice (up to 128), range, chooseOne, chooseMany, shuffle (up to 256 items). Returns the result with request, fulfillment and proof links. | | get_result | free | Reads a draw by paymentId or a request by requestId. | | setup_status | free | Checks the CLI, login, wallet, Gateway balance and today's spending. |

An optional seed (up to 64 bytes) is bound on chain to the draw, so a raffle can name its round before the result exists. Give each separate draw its own seed: an identical draw within five minutes returns the earlier one without paying.

A draw usually answers in about ten seconds, but it can take longer. If your client's tool timeout is short (60 seconds is a common default), raise it; a retry after a timeout returns the same draw rather than paying twice.

Settings

| Variable | Default | | | --- | --- | --- | | D20_DAILY_LIMIT_USDC | 1 | Spending cap per UTC day, shared by every server process of the user. 0 turns paid draws off. | | D20_NETWORK | mainnet | testnet uses the Arc Testnet API and a testnet CLI login (circle wallet login <email> --testnet). | | D20_PAY_CHAIN | first funded | Circle CLI chain code to pay from, such as ARC or BASE. | | D20_WALLET_ADDRESS | first agent wallet | Agent wallet to pay from. | | D20_CIRCLE_CLI | circle on PATH | Path to the CLI's dist/index.js. | | D20_MCP_HOME | ~/.d20dao-mcp | Where the spending record is kept. |

Safety

  • The server holds no keys. The Circle CLI signs, and your Circle wallet limits apply. It never accepts Circle's terms for you: CIRCLE_ACCEPT_TERMS is kept out of the CLI it runs, and DO_NOT_TRACK is set so your item labels stay out of the CLI's telemetry.
  • It pays only api.d20dao.org (or api-testnet.d20dao.org) and never more than 0.05 USDC per draw. If the CLI ever reports another seller, that draw comes back with a warning and paid draws stop until you delete halt.json from the server's home folder.
  • Each draw reserves its price in the daily record before paying; if the record cannot be written, it does not pay.
  • A draw that is still pending is finished for free with get_result. If the answer is lost after payment, the server resends the payment the CLI signed, which the API honours at most once.
  • A result says charged: false only when that is known. When it says unknown, do not draw again; check with get_result or the wallet.
  • draw is marked as a tool with side effects, so clients ask before running it unless you allow it.

Verify

Every result links its request and fulfillment transactions and a proof page. Replay the proof yourself with @d20dao/vrf-sdk; see verification and the agent API guide.

License

MIT