D20DAO Verifiable Randomness

org.d20daoPublished by d20dao.orgv0.1.2Updated Oct 24, 2026

Verifiable VRF draws on Arc, 0.05 USDC each. On Robinhood Chain, integrate on chain with the SDK.

Overview

AI-generated overview

Local MCP server that lets an assistant make paid, verifiable VRF draws (dice, coin flips, ranges, winners, shuffles) on Arc, settled in USDC.

What you can do
Run verifiable random draws: raw values, coin flips, dice up to 128, ranges, choosing one or many, and shuffling up to 256 items, each with request, fulfillment and proof links and an optional seed bound on chain. Look up a draw by payment ID or a request by request ID, and finish pending draws for free. Check setup status: CLI, login, wallet, Gateway balance and today's spending.
When to use it
Use it when an assistant needs auditable randomness for raffles, giveaways, game outcomes or fair selection, and you are willing to pay a small USDC fee per draw from a Circle agent wallet. It suits cases where a replayable proof of the result matters. For on-chain integration on Robinhood Chain, use the separate SDK instead.
Requirements
Local Node.js process run via npx from the npm package. A Circle agent wallet set up with the Circle CLI, logged in with an emailed code, funded with USDC and deposited into Circle Gateway. Optional settings include D20_NETWORK, D20_PAY_CHAIN, D20_WALLET_ADDRESS, D20_CIRCLE_CLI, D20_DAILY_LIMIT_USDC and D20_MCP_HOME. Network access to the D20DAO API. A longer client tool timeout is recommended.
Before you install
Draws cost 0.05 USDC each from a funded Circle agent wallet, so real money is spent; D20_DAILY_LIMIT_USDC caps daily spending and 0 turns paid draws off. The server runs with your Circle session and the CLI signs payments, though it holds no keys. draw has side effects and clients may prompt before running it. If a result reports charged as unknown, do not draw again; check with get_result or the wallet. A halt.json file stops paid draws if the CLI reports an unexpected seller.

Installation

In SourceWeft

  1. Open D20DAO Verifiable Randomness in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

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.

Draws run on Arc through the D20DAO x402 API. D20DAO also runs on Robinhood Chain, where there is no x402 API: a contract there requests randomness directly on chain, using @d20dao/vrf-sdk 0.6.2 and its integration guide.

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:

    bash
    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:

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

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

    json
    { "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

ToolCostDoes
draw0.05 USDCraw, coinFlip, dice (up to 128), range, chooseOne, chooseMany, shuffle (up to 256 items). Returns the result with request, fulfillment and proof links.
get_resultfreeReads a draw by paymentId or a request by requestId.
setup_statusfreeChecks 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

VariableDefault
D20_DAILY_LIMIT_USDC1Spending cap per UTC day, shared by every server process of the user. 0 turns paid draws off.
D20_NETWORKmainnettestnet uses the Arc Testnet API and a testnet CLI login (circle wallet login <email> --testnet).
D20_PAY_CHAINfirst fundedCircle CLI chain code to pay from, such as ARC or BASE.
D20_WALLET_ADDRESSfirst agent walletAgent wallet to pay from.
D20_CIRCLE_CLIcircle on PATHPath to the CLI's dist/index.js.
D20_MCP_HOME~/.d20dao-mcpWhere 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 0.6.2 or later; see verification and the agent API guide.

License

MIT

Source: README.md at commit 0541b0a

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

3
  1. v0.1.2LatestOct 9, 2026
  2. v0.1.1Oct 9, 2026
  3. v0.1.0Sep 20, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts