Skip to main content

wot

Web of Trust operations for Nostr pubkeys — trust scoring, sybil detection, trust path analysis, neighbor discovery, follow recommendations, and network health. 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. Use --key-source to select nip06 (default), taproot, or stacks derivation path.

설치로 이동

소스 정보

저장소
aibtcdev/skills
최근 소스 활동
2026년 5월 11일 17:14
감지된 SKILL.md 언어
영어
스타
9
포크
43

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

파일 탐색기
2 개 파일

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
wot
description
Web of Trust operations for Nostr pubkeys — trust scoring, sybil detection, trust path analysis, neighbor discovery, follow recommendations, and network health. 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. Use --key-source to select nip06 (default), taproot, or stacks derivation path.
metadata
{"author":"arc0btc","author-agent":"Trustless Indra","user-invocable":"false","arguments":"trust-score | sybil-check | neighbors | trust-path | recommend | network-health | config | cache-status","entry":"wot/SKILL.md","mcp-tools":"nostr_get_pubkey, nostr_get_profile","requires":"wallet","tags":"read-only"}
# Web of Trust (WoT) Skill Pre-transaction counterparty risk assessment using Nostr Web of Trust scores. Accepts Nostr hex pubkeys or `npub1...` bech32 addresses only. - **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 This is a doc-only MCP-tool skill. Agents derive the Nostr pubkey via `nostr_get_pubkey` and then call external WoT APIs directly. There is no `wot.ts` CLI entrypoint — all operations use MCP tool calls or direct HTTP requests to the WoT API. ## Key Derivation Use `nostr_get_pubkey` to get the agent's Nostr pubkey before calling WoT API endpoints: ``` nostr_get_pubkey({}) ``` Returns `{ pubkey: "2b4603d2...", npub: "npub1abc..." }`. ## Key Source The Nostr pubkey derivation path is configured in the `nostr` skill settings. Options: | Value | Path | Description | |-------|------|-------------| | `nip06` (default) | `m/44'/1237'/0'/0/0` | NIP-06 standard — compatible with Alby, Damus, Amethyst | | `taproot` | `m/86'/coin_type'/0'/0/0` | Taproot x-only key — same keypair as bc1p address | | `stacks` | `m/84'/coin_type'/0'/0/0` | BTC SegWit path — backward-compat with pre-NIP-06 agents | ## What WoT Accepts WoT is a Nostr-native protocol. It indexes secp256k1 x-only public keys (32 bytes). The only valid inputs are: | Format | Example | Works | |--------|---------|-------| | Nostr hex pubkey | `2b4603d2...` (64 hex chars) | Yes | | Nostr npub bech32 | `npub1abc...` | Yes | | Stacks address | `SP1ABC...` | **No** — hashed; original key not recoverable | | BTC address (bc1q) | `bc1q...` | **No** — hashed P2WPKH | | BTC address (bc1p) | `bc1p...` | **No** — hashed P2TR | | Ordinals address | `bc1p...` | **No** — same as bc1p, hashed | **Why hashed addresses don't work:** Bitcoin and Stacks addresses are derived by hashing the public key (HASH160 or SHA256). The original secp256k1 key cannot be recovered from the address. WoT requires the raw 32-byte x-only pubkey to look up nodes in the trust graph. **Future cross-protocol identity:** Cross-protocol identity mapping (e.g. linking a Stacks address to a Nostr npub) is not yet standardized. When it is, the `taproot` key source provides the best bridge — the taproot x-only pubkey is both a valid Nostr pubkey AND the internal key of the agent's bc1p address, making it externally verifiable from on-chain data. The `stacks` key source cannot bridge this gap because the Stacks address uses a different hash. ## Usage This skill has no CLI entrypoint. Agents: 1. Call `nostr_get_pubkey({})` to get the Nostr pubkey. 2. Use `HTTP GET` to query the WoT API endpoints directly. ## Subcommands ### trust-score Look up WoT trust score, rank, and percentile for a pubkey via the klabo.world API. ``` nostr_get_pubkey({}) // → { pubkey: "2b4603d2..." } GET https://wot.klabo.world/api/trust-score?pubkey=2b4603d2... ``` Output: ```json { "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. ``` GET https://wot.klabo.world/api/sybil-check?pubkey=2b4603d2... ``` Output: ```json { "success": true, "pubkey": "2b4603d2...", "classification": "normal", "is_sybil": false, "is_suspicious": false } ``` ### neighbors Discover trust graph neighbors — connected pubkeys with combined trust scores. ``` GET https://wot.klabo.world/api/neighbors?pubkey=2b4603d2... ``` Output: array of connected pubkeys with their trust scores and edge weights. ### trust-path Find the trust path between two pubkeys in the WoT graph. Shows the chain of trust edges connecting `from` to `to`. ``` GET https://wot.klabo.world/api/trust-path?from=2b4603d2...&to=dbe4d9fb... ``` Output: ordered list of pubkeys forming the trust path, with hop count and per-hop scores. ### recommend Get personalized follow recommendations for a pubkey based on WoT graph proximity and trust score. ``` GET https://wot.klabo.world/api/recommend?pubkey=2b4603d2... ``` Output: array of recommended pubkeys with trust scores and reasoning. ### network-health Graph-wide stats: total nodes, edges, Gini coefficient, power law alpha. No pubkey required. ``` GET https://wot.klabo.world/api/network-health ``` Output: ```json { "success": true, "total_nodes": 52000, "total_edges": 2400000, "gini_coefficient": 0.72, "power_law_alpha": 2.1 } ``` ### config Trust threshold configuration is managed locally. The recommended thresholds: - `minRank`: maximum rank to accept as trusted. Default: `10000` - `requireTop100`: reject if not in top 100. Default: `false` ### cache-status The WoT API responses should be cached locally for 1 hour to avoid hitting the 50 req/day free tier limit. Use the `credentials` skill to store L402 tokens for the paid tier. ## 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. ## L402 Payment Flow When the 50 req/day free tier is exhausted, the API returns HTTP 402 with a Lightning invoice in `WWW-Authenticate`. After paying: ``` arc creds set --service wot --key l402-token --value "<token>:<preimage>" ``` The credential is automatically read on subsequent calls. ## Key Derivation Reference All three derivation paths produce secp256k1 x-only pubkeys that WoT can look up: ``` BIP39 mnemonic → BIP32 seed → derivation path → 32-byte secp256k1 private key → x-only pubkey ``` **NIP-06 (default):** `m/44'/1237'/0'/0/0` - Standard Nostr path — coin_type 1237 registered for Nostr - Same mnemonic produces the same npub in Alby, Damus, Amethyst, Snort, etc. - Recommended for agents without a specific on-chain identity requirement **Taproot:** `m/86'/coin_type'/0'/0/0` - x-only pubkey is identical to the Taproot internal key (bc1p address) - Externally verifiable: anyone with the agent's bc1p address can derive the expected npub - Best path for cross-protocol identity (Nostr + on-chain BTC) **Stacks (backward-compat):** `m/84'/coin_type'/0'/0/0` - Original derivation used before NIP-06 update - Only needed if the agent already has a published Nostr identity from the old path - Not recommended for new agents
GitHub에서 보기