Skip to content
Skillv1.0.0

nostr-wot

Nostr Web of Trust — trust scoring and sybil detection for Nostr pubkeys. Free tier (wot.klabo.world, 50 req/day) with paid fallback (maximumsats.com, 100 sats via L402). Covers 52K+ pubkeys and 2.4M+

by Jay0xx(0) 0 installs
Free
Sign in to install

Free account. Installing gives you the manifest plus copy-paste snippets.

See reviews

About

Imported from Jay0xx/forge0btc-news-agent (aibtcdev-skills/nostr-wot/SKILL.md). Install upstream with npx skills add Jay0xx/forge0btc-news-agent --skill nostr-wot. Copyright stays with the author.

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.

Use it

Copy one of these into your project. Installing also returns the manifest and these snippets.

yaml
targets:
  - https://api.opensmartroute.ai/api/v1/registry/jay0xx-forge0btc-news-agent-nostr-wot/manifest   # or paste the manifest below

Manifest

An Open Capability Manifest: the router reads it to know what this does, what it costs and when to pick it.

jay0xx-forge0btc-news-agent-nostr-wot.ocm.jsonjson
{
  "ocm": "1",
  "id": "jay0xx-forge0btc-news-agent-nostr-wot",
  "kind": "skill",
  "name": "nostr-wot",
  "description": "Nostr Web of Trust — trust scoring and sybil detection for Nostr pubkeys. Free tier (wot.klabo.world, 50 req/day) with paid fallback (maximumsats.com, 100 sats via L402). Covers 52K+ pubkeys and 2.4M+ zap-weighted trust edges.",
  "publisher": "Jay0xx",
  "version": "1.0.0",
  "capabilities": {
    "domains": [
      "general"
    ],
    "tags": [
      "skill-md",
      "read-only",
      "github"
    ],
    "languages": [
      "en"
    ]
  },
  "quality_prior": 0.6,
  "examples": [
    "Nostr Web of Trust — trust scoring and sybil detection for Nostr pubkeys. Free tier (wot.klabo.world, 50 req/day) with paid fallback (maximumsats.com, 100 sats via L402). Covers 52K+ pubkeys and 2.4M+ zap-weighted trust edges."
  ],
  "primary": false,
  "metadata": {
    "source": {
      "provider": "github",
      "repository": "https://github.com/Jay0xx/forge0btc-news-agent",
      "path": "aibtcdev-skills/nostr-wot/SKILL.md",
      "ref": "574373f7fb5b3785ea93e997e9a7620eb8e7823f",
      "url": "https://github.com/Jay0xx/forge0btc-news-agent/blob/574373f7fb5b3785ea93e997e9a7620eb8e7823f/aibtcdev-skills/nostr-wot/SKILL.md",
      "key": "Jay0xx/forge0btc-news-agent/aibtcdev-skills/nostr-wot/SKILL.md"
    }
  },
  "instructions": "# Nostr Web of Trust Skill\n\nPre-transaction counterparty risk assessment using Nostr Web of Trust scores. Accepts hex pubkeys or `npub1...` bech32 addresses.\n\n- **52K+ pubkeys** indexed with **2.4M+ trust edges**\n- Trust edges weighted by zap receipts (economic signal, harder to fake)\n- Free tier: `wot.klabo.world` (50 req/day per IP), no key required\n- Paid fallback: `maximumsats.com/api/wot-report` (100 sats via L402) when free tier exhausted\n- 1-hour local cache to avoid redundant API calls\n\n## Usage\n\n```\nbun run nostr-wot/nostr-wot.ts <subcommand> [options]\n```\n\n## Subcommands\n\n### trust-s",
  "cost": {
    "context_tokens": 789
  }
}

Fetch it by URL: GET /api/v1/registry/jay0xx-forge0btc-news-agent-nostr-wot/manifest?version=1.0.0

Reviews

Star ratings from people who tried it. One review per account; edit yours any time.

No reviews yet. Install it, try it, and be the first to rate it.