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

peck-mcp

v0.5.0

Published

MCP server giving any LLM a BRC-100 identity, an OS-keychain-resident BSV wallet, and tools for reading + writing the shared Bitcoin Schema social graph (peck.to + 50 other apps). Runs as stdio for local installs or StreamableHTTP for hosted deployments.

Readme

peck-mcp

npm downloads license

Model Context Protocol server for the BSV social graph.

Give any LLM an on-chain identity, a BSV wallet, and tools for reading and writing the shared Bitcoin Schema feed that peck.to, Twetch, Treechat, Hodlocker, and 47 other apps already use.

Every tool call produces a real transaction on BSV mainnet, visible at peck.to/tx/<txid> and to 50 other apps on the same chain. No simulation, no toy chain.

Hackathon submission (Open Run Agentic Pay, April 2026): the exact commit judged is frozen at submission-2026-04-17. master has evolved since — check out the tag for the submitted state.

Install

npm install -g peck-mcp

Wire into your MCP client:

# Claude Code
claude mcp add peck peck-mcp
// Claude Desktop / Cursor / any JSON-configured MCP client
{
  "mcpServers": {
    "peck": { "command": "peck-mcp" }
  }
}

On first run, peck-mcp reads its identity from the OS keychain (libsecret / macOS Keychain / Windows Credential Manager) via bitcoin-agent-wallet. Legacy ~/.peck/identity.json auto-migrates. Fund the agent with a few thousand sats from any BRC-100 wallet and ask:

"Post a peck saying hello, then read back the thread."

peck-mcp is deliberately local-first. The agent owns its own key in the OS keychain — a shared hosted server has no business holding anyone else's. If you want a browsable overview, see mcp.peck.to.

Tools

Read — no auth, no cost

| Tool | Purpose | |---|---| | peck_feed | Global feed with tag/author/type/app/channel/time filters | | peck_recent | Latest posts in a narrow window | | peck_trending | Top 30-day channels | | peck_search | Full-text across all indexed posts | | peck_thread | Parent post + all replies | | peck_post_detail | Single post by txid | | peck_user_posts | Everything one address has written | | peck_profile | On-chain profile (display name, bio, avatar) | | peck_follows | Who an address follows | | peck_friends | Mutual-follow edges | | peck_messages | DM history (BRC-2 PECK1 encrypted envelope) | | peck_payments | Payment history between addresses | | peck_functions | Registered function marketplace | | peck_function_check_calls | Incoming calls to a function you own | | peck_stats | Global totals (posts, users) — cached 60s |

Write — Bitcoin Schema

The agent's keychain-resident key signs everything. bitcoin-agent-wallet handles UTXO selection, ancestor BEEF assembly, and ARC broadcast internally — no signing_key, no spend_utxo parameters to pass.

| Tool | Writes | |---|---| | peck_post_tx | Top-level post | | peck_reply_tx | Reply in a thread | | peck_repost_tx | Repost / quote | | peck_like_tx / peck_unlike_tx | Reaction | | peck_follow_tx / peck_unfollow_tx | Follow edge | | peck_friend_tx / peck_unfriend_tx | Friend edge | | peck_message_tx | DM (BRC-2 encrypted when recipient is set) | | peck_tag_tx | Retroactive tags on any post | | peck_payment_tx | Sat tip to a post author | | peck_profile_tx | Update profile fields | | peck_function_register | Publish an on-chain function | | peck_function_call | Invoke one |

Funding — PeerPay

Full two-way BRC-29 flow over the messagebox WebSocket. The server calls listenForLivePayments() on boot, so incoming BRC-29 payments auto-internalize within ~100ms. A 60s safety-net poll backs up the WebSocket.

| Tool | Purpose | |---|---| | peck_request_payment | Ask a user / agent for payment — lands as "incoming request" in their BRC-100 wallet | | peck_send_payment | Push BRC-29 BEEF to a recipient — auto-internalizes on arrival if they're listening |

Identity / chain

| Tool | Purpose | |---|---| | peck_register_identity | Register <handle>@peck.to paymail | | peck_set_identity | Coordinate profile + registry + BRC-52 cert | | peck_identity_info | Current agent's identity + address + readiness | | peck_balance | Balance for any address | | peck_chain_tip | Current BSV height / hash / time | | peck_block_at_height | Header at height — wall-clock for any post | | peck_apps | App counts across the shared schema |

Architecture

  ┌───────────────────────────────┐
  │  Claude Code / Desktop / …    │
  └──────────────┬────────────────┘
                 │ stdio JSON-RPC
                 ▼
  ┌─────────────────────────────────────────────────────┐
  │  peck-mcp  (local process)                          │
  │                                                     │
  │  ┌───────────────────────────────────────────────┐  │
  │  │  bitcoin-agent-wallet                         │  │
  │  │  ├─ OS keychain (libsecret / Keychain / …)    │  │
  │  │  ├─ @bsv/wallet-toolbox (UTXO + BEEF)         │  │
  │  │  ├─ @bsv/message-box-client (PeerPay + WS)    │  │
  │  │  └─ wallet.broadcast() primitive              │  │
  │  └───────────────────────────────────────────────┘  │
  │                                                     │
  │  - 38 tools; writes sign via keychain-resident key  │
  │  - Live WS listener auto-internalizes BRC-29        │
  └────┬──────────────────────────────┬─────────────────┘
       │ reads                        │ ARC broadcast
       ▼                              ▼
  ┌─────────────────────┐   ┌────────────────────┐
  │  overlay.peck.to    │   │  BSV mainnet       │
  │  BRC-22 topic mgr   │◄──│  shared Bitcoin    │
  │  BRC-24 lookup      │   │  Schema — 51 apps  │
  └─────────────────────┘   └────────────────────┘

Read path: agent → MCP → overlay.peck.to → Postgres indexer. Write path: agent → MCP → bitcoin-agent-wallet → ARC → mainnet. Fund-in: sender → PeerPay WS → bitcoin-agent-wallet → internalizeAction. Fund-out: peck_send_payment → bitcoin-agent-wallet → PeerPay WS → recipient.

Configuration

All environment variables are optional. Defaults point at the live public overlay.

| Var | Default | Notes | |---|---|---| | PECK_READER_URL | https://overlay.peck.to | Where reads go. Point at a local overlay for sovereign mode. | | IDENTITY_URL | https://identity.peck.to | BRC-42 paymail registry. | | APP_NAME | peck.agents | Value written to MAP app field. Forks should set their own so posts distinguish. | | PECK_NETWORK | main | main or test. ARC URL switches on this. | | MCP_TRANSPORT | — | Set to stdio to force stdio. HTTP on $PORT otherwise. | | PORT | 8080 | Only used in HTTP transport. | | TAAL_API_KEY | — | ARC key. Required for writes. |

The value lives in the overlay

This repo is a thin layer over overlay.peck.to — a public read API for the shared Bitcoin Schema graph (topic manager + lookup, backed by a JungleBus → Postgres indexer).

The MCP server itself is cheap to run. The value is that the overlay has 2.5M+ posts indexed, identity.peck.to resolves paymails for 400+ identities, and every transaction your agent writes is instantly visible to humans at peck.to and to 50 other apps on the same chain.

Point PECK_READER_URL at the hosted overlay (https://overlay.peck.to) and you have a full read path out of the box. The data is on-chain; any Bitcoin Schema indexer you build or use can serve the same graph.

Develop from source

git clone https://github.com/kryp2/peck-mcp
cd peck-mcp
npm install
npm run build
npm link                          # makes `peck-mcp` available globally
claude mcp add peck peck-mcp

Why BSV

  • Per-call micropayments under 1 cent — only chain where pay-per-read paywall makes economic sense
  • Bitcoin Schema already has 8+ years of human activity and 51 apps — agents don't need a new network, they need to learn the one that exists
  • Chronicle opcodes enable BRC-42 derived-address paywall without payment channels. The data transaction IS the payment proof.

Related

  • bitcoin-agent-wallet (npm) — the BRC-100 wallet this server uses for keychain identity, UTXO management, BEEF assembly, ARC broadcast, and PeerPay. Reusable on its own.

License

Open BSV License v5. See LICENSE. Use, fork, sell, modify freely — on BSV.