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

@jonathanbulkeley/plugin-mycelia-signal

v1.1.1

Published

Mycelia Signal sovereign oracle plugin for ElizaOS — 56 endpoints covering crypto pairs, FX rates, economic indicators, and commodities. Cryptographically signed attestations via Lightning (L402) or USDC on Base (x402)

Downloads

251

Readme

@jonathanbulkeley/plugin-mycelia-signal

Mycelia Signal sovereign price oracle plugin for ElizaOS.

56 endpoints covering crypto pairs, FX rates, economic indicators, and commodities. Every response is cryptographically signed and independently verifiable. No API keys. No accounts. Pay per query via Lightning (L402) or USDC on Base (x402).

npm version License: MIT


What is Mycelia Signal?

Mycelia Signal is a sovereign oracle — a price and data attestation service that signs every response with a cryptographic key. Agents and applications can verify that data came from Mycelia Signal and has not been tampered with, without trusting any intermediary.

  • L402 (Lightning): Pay in sats. secp256k1 ECDSA signatures. Bitcoin-native.
  • x402 (USDC on Base): Pay in USDC. Ed25519 signatures. EVM-native.
  • 56 endpoints: Crypto, FX, economic indicators, commodities.
  • Preview mode: Append /preview to any endpoint for free unsigned sample data.

Docs: myceliasignal.com/docs


Endpoints

Crypto Pairs (18 pairs including VWAP)

BTC/USD, BTC/EUR, BTC/JPY (spot + VWAP), ETH/USD, ETH/EUR, ETH/JPY, SOL/USD, SOL/EUR, SOL/JPY, XRP/USD, ADA/USD, DOGE/USD

Precious Metals (3 pairs)

XAU/USD, XAU/EUR, XAU/JPY

FX Rates (16 pairs)

EUR/USD, EUR/JPY, EUR/GBP, EUR/CHF, EUR/CNY, EUR/CAD, GBP/USD, GBP/JPY, GBP/CHF, GBP/CNY, GBP/CAD, USD/JPY, USD/CHF, USD/CNY, USD/CAD, CHF/JPY, CHF/CAD, CNY/JPY, CNY/CAD, CAD/JPY

US Economic Indicators (8 indicators)

CPI, CPI Core, Unemployment Rate, Nonfarm Payrolls, Fed Funds Rate, GDP, PCE, Yield Curve

EU Economic Indicators (6 indicators)

HICP, HICP Core, HICP Services, Unemployment Rate, GDP, Employment

Commodities (5 indicators)

WTI Crude, Brent Crude, Natural Gas, Copper, US Dollar Index (DXY)

Pricing

| Category | x402 (USDC) | L402 (sats) | |----------|-------------|-------------| | Price pairs & FX | $0.01 | 10 sats | | VWAP pairs | $0.02 | 20 sats | | Economic indicators | $0.10 | 1000 sats | | Commodities | $0.10 | 1000 sats |


Installation

npm install @jonathanbulkeley/plugin-mycelia-signal

Usage

Free mode (preview data — no payment required)

The plugin works out of the box with no configuration. Agents can query any supported pair using natural language. Without a payment handler configured, the plugin fetches free unsigned preview data (up to 5 minutes stale).

import { myceliaSignalPlugin } from '@jonathanbulkeley/plugin-mycelia-signal';

const agent = new AgentRuntime({
  plugins: [myceliaSignalPlugin],
  // ... other config
});

Paid mode — L402 (Lightning)

Configure a Lightning payment handler to receive signed attestations:

import { createMyceliaSignalPlugin } from '@jonathanbulkeley/plugin-mycelia-signal';

const plugin = createMyceliaSignalPlugin({
  lightningPreimageFetcher: async (invoice: string) => {
    // Pay the invoice with your Lightning node/wallet and return the preimage
    const preimage = await yourLightningNode.payInvoice(invoice);
    return preimage;
  },
});

Paid mode — x402 (USDC on Base)

import { createMyceliaSignalPlugin } from '@jonathanbulkeley/plugin-mycelia-signal';

const plugin = createMyceliaSignalPlugin({
  x402PaymentHandler: async (paymentDetails: unknown) => {
    // Sign and submit the USDC transfer on Base, return the X-Payment header value
    const header = await yourWallet.signX402Payment(paymentDetails);
    return header;
  },
});

Example Queries

Agents respond to natural language. Examples:

  • "What's the Bitcoin price?"
  • "Get me the BTC/USD VWAP"
  • "What's the current EUR/USD rate?"
  • "What's the gold price in USD?"
  • "What's US CPI?"
  • "Get the Fed Funds Rate"
  • "What's the WTI crude oil price?"
  • "What's the DXY?"

Response Format

Every paid response includes a signed canonical attestation:

{
  "domain": "BTCUSD",
  "canonical": "v1|PRICE|BTCUSD|84231.50|USD|2|binance,bitstamp,coinbase,kraken,...|median|1741514400|482910",
  "signature": "<base64-encoded-signature>",
  "pubkey": "<public-key-hex>",
  "signing_scheme": "secp256k1_ecdsa"
}

The canonical string is the signed payload. Verify it independently using the public key at myceliasignal.com/docs/keys.

Canonical Format

v1|PRICE|PAIR|PRICE|CURRENCY|DECIMALS|SOURCES|METHOD|TIMESTAMP|NONCE

See Canonical Format docs for full specification.


Signature Verification

L402 (secp256k1 ECDSA) — Python

import hashlib, base64
from coincurve import PublicKey

def verify_l402(response: dict) -> bool:
    msg_hash = hashlib.sha256(response["canonical"].encode()).digest()
    pubkey = PublicKey(bytes.fromhex(response["pubkey"]))
    return pubkey.verify(base64.b64decode(response["signature"]), msg_hash, hasher=None)

x402 (Ed25519) — Python

import hashlib, base64
from nacl.signing import VerifyKey
from nacl.encoding import RawEncoder

def verify_x402(response: dict) -> bool:
    msg_hash = hashlib.sha256(response["canonical"].encode()).digest()
    vk = VerifyKey(bytes.fromhex(response["pubkey"]), encoder=RawEncoder)
    try:
        vk.verify(msg_hash, base64.b64decode(response["signature"]))
        return True
    except Exception:
        return False

Full verification guide: myceliasignal.com/docs/verification


Public Keys

Each GC node uses its own per-instance keypair:

| Node | Protocol | Public Key | |------|----------|------------| | US GC | L402 (secp256k1) | 03c1955b8c543494c4ecd86d167105bcc7ca9a91b8e06cb9d6601f2f55a89abfbf | | Asia GC | L402 (secp256k1) | 02b1377c30c7dcfcba428cf299c18782856a12eb4fab32b87081460f4ba2deab73 | | US GC | x402 (Ed25519) | f4f0e52b5f7b54831f965632bf1ebf72769beda4c4e3d36a593f7729ec812615 | | Asia GC | x402 (Ed25519) | 7ab07fbe7d08cd16823e5eb0db0e21f3f38e9366d5fd00d14e95df0fb9b51a1a |

Full public keys page: myceliasignal.com/docs/keys


Links


License

MIT