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

dgb-digiid-mcp

v0.1.0

Published

Give an AI agent a verifiable identity via Digi-ID: sign auth challenges and prove who it is, no passwords. Pairs with DigiByte agent payments.

Readme

dgb-digiid-mcp

Give an AI agent a verifiable identity. An MCP server that lets an agent prove who it is using Digi-ID — DigiByte's passwordless authentication — by signing a challenge with a key it never reveals.

The natural companion to dgb-digidollar-mcp: an agent that can prove who it is and pay for what it uses — the two genuinely chain-shaped problems of the agent era, both on a decentralized rail.

Works on testnet or mainnet. Signing and verifying are pure cryptography, so the node does not need to be synced or funded — any DigiByte node with the identity wallet loaded will do. And because no money is involved, it's safe on mainnet from day one.

The flow

Service ──"prove who you are": digiid://mysite/cb?x=<nonce>──▶ Agent
Agent   ──signs the URI with its identity key──────────────▶ (no key revealed)
Agent   ──POST { address, uri, signature } ─────────────────▶ Service /callback
Service ──verifies signature + domain + nonce──────────────▶ authenticated as <address>

The agent's address is its identity. A service recognises the same agent across sessions without ever handling a password or a shared secret.

Proven end to end (see example/service.js): an agent authenticated to a service through the MCP server, and a forged response — the correct challenge signed with the wrong key but claiming the identity address — was rejected with "signature does not verify."

Why it can't be faked

  • The signature is bound to the address. Only the holder of the identity's private key can produce a signature that verifymessage(address, sig, uri) accepts. Claiming someone else's address doesn't help — the math won't verify.
  • Domain-bound. The signed message is the full digiid:// URI including your domain, so a signature the agent made for another site can't be replayed at yours.
  • Nonce / one-time use. Each challenge carries a random nonce the service issued and burns on use, so a captured response can't be replayed.
  • Legacy-address requirement, handled. DigiByte message signing only works with legacy (P2PKH) addresses, not bech32 — the server checks this at startup and fails loudly rather than mysteriously.

Tools (agent side)

| Tool | What it does | |------|--------------| | get_identity | Return the agent's Digi-ID address — its stable public identity. Reveals no secret. | | authenticate | Given a digiid:// challenge, sign it and POST the response to the service's callback. Returns the service's reply. The agent's "log in." |

Library (service side)

src/digiid.js is a dependency-free module a service uses to challenge and verify:

import { buildChallenge, verifyResponse } from "dgb-digiid-mcp";

const { uri, nonce } = buildChallenge({ domain: "mysite.com" });
// ...show uri to the agent (or as a QR to a human's Digi-ID wallet)...

const result = await verifyResponse(
  { address, uri, signature },
  { verifyMessage, expectedDomain: "mysite.com", isNonceValid }
);
if (result.ok) authenticateSession(result.identity);

Because Digi-ID is a published standard, the same server works for human Digi-ID wallets too — not just agents.

Setup

Point it at any DigiByte node and give it a legacy identity address:

digibyte-cli -rpcwallet=identity getnewaddress "agent" "legacy"   # note the "legacy"
npm install
cp .env.example .env    # RPC creds + DIGIID_ADDRESS

Run the demo (a passwordless login service + the agent authenticating to it):

node --env-file=.env example/service.js     # terminal 1
# then drive the MCP server's `authenticate` tool against the challenge from GET /login

Add to your MCP client (npx dgb-digiid-mcp), env: DGB_RPC_URL, DGB_RPC_USER, DGB_RPC_PASSWORD, DGB_WALLET, DIGIID_ADDRESS.

Related

Independent community project. Not affiliated with the DigiByte Foundation. MIT licensed.