nostr-wot

Installation
SKILL.md

Nostr Web of Trust Skill

Pre-transaction counterparty risk assessment using Nostr Web of Trust scores. Accepts hex pubkeys or npub1... bech32 addresses.

  • 52K+ pubkeys indexed with 2.4M+ trust edges
  • Trust edges weighted by zap receipts (economic signal, harder to fake)
  • Free tier: wot.klabo.world (50 req/day per IP), no key required
  • Paid fallback: maximumsats.com/api/wot-report (100 sats via L402) when free tier exhausted
  • 1-hour local cache to avoid redundant API calls

Usage

bun run nostr-wot/nostr-wot.ts <subcommand> [options]

Subcommands

trust-score

Look up WoT trust score, rank, and percentile. Checks against configurable thresholds.

bun run nostr-wot/nostr-wot.ts trust-score --pubkey 2b4603d2...
bun run nostr-wot/nostr-wot.ts trust-score --npub npub1abc...

Output:

{
  "success": true,
  "cached": false,
  "api": "free",
  "pubkey": "2b4603d2...",
  "trusted": true,
  "normalized_score": 87,
  "rank": 142,
  "percentile": 99.7
}

sybil-check

Classify a pubkey as normal, suspicious, or likely_sybil using follower quality, mutual trust ratio, and community integration signals.

bun run nostr-wot/nostr-wot.ts sybil-check --pubkey 2b4603d2...
bun run nostr-wot/nostr-wot.ts sybil-check --npub npub1abc...

Output:

{
  "success": true,
  "pubkey": "2b4603d2...",
  "classification": "normal",
  "is_sybil": false,
  "is_suspicious": false
}

neighbors

Discover trust graph neighbors — connected pubkeys with combined trust scores.

bun run nostr-wot/nostr-wot.ts neighbors --pubkey 2b4603d2...

network-health

Graph-wide stats: total nodes, edges, Gini coefficient, power law alpha. No pubkey required.

bun run nostr-wot/nostr-wot.ts network-health

config

View or update trust thresholds. Stored at ~/.aibtc/nostr-wot/config.json.

bun run nostr-wot/nostr-wot.ts config                    # view current thresholds
bun run nostr-wot/nostr-wot.ts config --min-rank 5000
bun run nostr-wot/nostr-wot.ts config --require-top100
bun run nostr-wot/nostr-wot.ts config --no-require-top100

Threshold fields:

  • minRank — Maximum acceptable rank. Default: 10000
  • requireTop100 — Reject if not in top 100. Default: false

cache-status

Show cache statistics. Cache stored at ~/.aibtc/nostr-wot/cache.json with 1-hour TTL.

bun run nostr-wot/nostr-wot.ts cache-status

Trust Thresholds

Rank Meaning
1–100 Elite (top 100 Nostr users by WoT)
101–1000 Well-connected, high economic activity
1001–10000 Active community member
>10000 Low trust, new account, or no Nostr activity

API Details

Two endpoints, tried in order:

Base Auth Cost Rate
https://wot.klabo.world None Free 50 req/day/IP
https://maximumsats.com/api/wot-report L402 100 sats Unlimited

Free tier returns HTTP 402 when exhausted; skill auto-falls back to paid endpoint. L402 payment requires a Lightning client — without one, paid calls return an error with the BOLT11 invoice.

Related skills
Installs
94
Repository
aibtcdev/skills
GitHub Stars
6
First Seen
Mar 20, 2026