check_trust_score
Verify anti-Sybil Trust Score (0-100) and Web-of-Trust distance for a Nostr pubkey.
pubkeyrequired
io.github.PHONGUIT22Published by GitHub account PHONGUIT22v1.3.1Updated Nov 4, 2026
Autonomous payment & Web-of-Trust anti-Sybil layer for AI agents via Nostr & Cashu (NIP-61 NutZaps).
NostrPulse lets an AI assistant check Nostr Web-of-Trust trust scores, audit Cashu mints, and send Bitcoin micropayments over Lightning or Cashu NutZaps.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Follow the launch instructions in the repository.
Autonomous Payment & Sybil-Resistant Trust Layer for AI Agents via Nostr, Cashu eCash (NIP-61), and MCP.
[npm version] [Release: v1.3.1] [MCP Registry] [MCP Stdio] [Listed on awesome-remote-mcp-servers] [FreeMCP Registry] [License: MIT] [Track] [Nostr Protocol] [Cashu Protocol] [Next.js 16]
[NostrPulse Autonomous Agent Mesh Showcase]
NostrPulse is an open-source payment and sovereign trust layer for autonomous AI agents, built on top of the Freedom Tech Stack (Nostr + Bitcoin Lightning + Cashu Chaumian eCash + Model Context Protocol). It provides Stripe-like settlement (M2M micro-payments via NIP-61 NutZaps) and Stripe Radar-grade anti-Sybil protection (Web-of-Trust graph distance + verifiable Economic Stake) for Cursor, Claude Desktop, and autonomous LLMs.
Explore Live Explorer » • AI Agent Interface • HRF Grant Roadmap & Verification • Bounty Board • Methodology • Relay Telemetry • Versus Engine
NostrPulse natively exports an industry-standard Model Context Protocol (MCP) server over Stdio JSON-RPC. Any AI client (Claude Desktop, Cursor, Windsurf, LangChain, Vercel AI SDK) can instantly tap into decentralized reputation, machine-to-machine micropayments, and distributed compute without API keys or custodial accounts.
Paste this configuration directly into your claude_desktop_config.json or .cursor/mcp.json:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json.cursor/mcp.json in your project root, or add under Cursor Settings > Features > MCP.Verify tools, examine schemas, and test prompts in the browser via the official Model Context Protocol Inspector:
For edge devices, local SLMs (e.g., Qwen 2.5 0.5B/1.5B via Ollama), or cost-sensitive agent loops, NostrPulse supports context-optimized profiles that reduce prompt overhead from ~2,200 tokens down to ~380 tokens:
NostrPulse includes a reference implementation for autonomous agent-to-agent decentralized negotiation and micro-commerce (scripts/test-mesh-agent.ts):
qwen2.5-coder:1.5b) without cloud API keys:
Open agentic systems and decentralized protocols eliminate platform lock-in, but introduce two critical vulnerabilities:
npub) cost $0 to generate, making spam bots, clone accounts, and wash-trading rampant.NostrPulse calculates an objective 0–100 point reputation index directly from open relay data and root anchor graph topology:
[!IMPORTANT] Anti-Sybil Damping Guard: Accounts lacking verified NIP-05 DNS signatures AND isolated from the Web-of-Trust graph are strictly capped at 44 points (Unverified / Potential Bot). This permanently neutralizes automated bot swarms.
A unified micro-transaction interface switching effortlessly between real-time Lightning and offline Chaumian eCash:
Kind 9321 events are encrypted with the recipient's public key.cashuA (JSON Base64) and next-gen cashuB (CBOR) tokens.NostrPulse integrates a high-performance, zero-memory-leak client for NIP-47 Nostr Wallet Connect, allowing AI agents to pay BOLT-11 Lightning invoices directly through self-hosted autonomous nodes (Alby Hub, Phoenixd, Umbrel, LNBits):
nostr+walletconnect://<wallet_pubkey>?relay=<relay_url>&secret=<client_secret>&lud16=<lightning_address>&encryption=<nip04|nip44>.pay_lightning_nwc (with alias pay_with_nwc) for 1-step settling by autonomous agents.Cashu Mints carry counterparty risk. NostrPulse acts as an objective, real-time Radar for Mints via auditCashuMint and selectBestMint:
NUT-04 Mint, NUT-05 Melt, NUT-07 StateCheck, NUT-08 FeeReturn, NUT-10 DLEQ Proofs, NUT-11 P2PK).MintRiskProfile):
LOW (Trust Score ≥ 75): TRUSTED (Directly verified operator, low latency, full NUT compliance).MODERATE (Trust Score 45–74): USE_WITH_CAP (Community mint with acceptable uptime and WoT connectivity).HIGH_RISK (Trust Score < 45 or unverified admin): AVOID (Anonymous, insecure HTTP, high latency, or isolated keypair).selectBestMint): Evaluates candidate mint lists concurrently and dynamically selects the highest-trust, lowest-latency mint for proof creation and payment routing./agent)A dedicated interface demonstrating autonomous agent commerce:
public/widget.js): Lightweight <nutzap-me npub="..."> button ready to embed on any blog, documentation, or static site.scripts/dvm-worker.ts): Background worker that listens for Kind 5000 job requests tagged with ["t", "trust-score"], computes scores, and broadcasts Kind 6000 with 5-Sat demand (["amount", "5000"]).src/lib/nip90.ts): Utility library offering publishJobRequest(), fetchOpenBounties(), and subscribeJobFeedbackAndResult()./bounties): Open decentralized task board filtered by creator Trust Score (All, Score ≥ 20, Score ≥ 50, Score ≥ 80).TaskResultView.tsx): Audit deliverables and settle bounties instantly with NIP-44/59 encrypted NutZaps.To prevent autonomous agents from draining balances through infinite loops, hallucinated calls, or prompt injections, NostrPulse enforces real-time Spending Guardrails:
AGENT_MAX_SATS_PER_TX): Restricts single transaction calls to a safe default of 50 sats.AGENT_DAILY_LIMIT_SATS): Queries SQLite table agent_spending_log to enforce a rolling daily limit of 500 sats.AGENT_MIN_RECIPIENT_SCORE): Evaluates counterparty trust score via Web-of-Trust graph distance; payments to unverified or bot identities (< 40 score) are automatically intercepted and blocked.{ status: "blocked_by_guardrails", reason } instantly without spending funds.Eliminates the friction of requiring developers or agents to manually generate, paste, or expose nsec private keys before running:
.nostrpulse/agent-identity.json with restricted permissions and automatically excluded from Git commits via .gitignore.get_agent_identity allow agents to query their public identity (pubkey, npub, source, ephemeral flag) out-of-the-box.A comprehensive developer observability layer (src/lib/telemetry.ts) providing a Stripe-grade audit trail:
payment, radar_block, job_settlement, and mint_audit into SQLite table agent_telemetry.totalSpentSats, txCount, and blockedSybilAttacks across configurable timeframes (default: 24h).get_agent_telemetry and by web dashboards via Next.js REST API GET /api/telemetry.@modelcontextprotocol/sdk (v1.30+), OpenAI / Google Gemini AI SDKnostr-tools (v2.25+), @cashu/cashu-ts (v4.9+), @noble/hashesBuffer globals using native browser Uint8Array primitives for universal cross-environment compatibility.AbortSignal.timeout() and Promise.race() fallbacks to eliminate UI freezes.>= 20.0.0npm, pnpm, or yarnOpen http://localhost:3000 in your browser to explore the live dashboard.
/bounties marketplace.nostrpulse-mcp on npm registry).--profile=minimal), and Adaptive Spending Fallback.@nostrpulse/sdk with Zero-Buffer RFC 8949 CBOR, Dual Bundle Build, and Unified Test Suite Runner.Distributed under the MIT License. NostrPulse is strictly non-custodial software: it never generates, stores, or requests user private keys (nsec), nor does it take custody of user funds.
Source: README.md at commit e97231c
Verify anti-Sybil Trust Score (0-100) and Web-of-Trust distance for a Nostr pubkey.
pubkeyrequiredSend an eCash NutZap payment (NIP-61) to a Nostr recipient under guardrail limits.
commentmintUrlrecipientrequiredamountSatsrequiredcashuTokenDispatch a NIP-90 DVM analytics computation task across Nostr relays with local fallback.
promptrequiredbidSatscategorytimeframetimeoutMsPay a BOLT-11 Lightning invoice via NIP-47 Nostr Wallet Connect.
nwcUriinvoicerequiredtimeoutMsamountMsatPay a BOLT-11 Lightning invoice via NIP-47 Nostr Wallet Connect (alias).
nwcUriinvoicerequiredtimeoutMsamountMsatAudit Cashu mint health, NUT-06 status, and counterparty risk score.
mintUrlrequiredforceRefreshRoute to the highest-trust, lowest-latency Cashu mint for a payment.
amountSatsminTrustScorepreferredMintGet the autonomous agent's Nostr public identity and npub.
Takes no parameters.
Check current AI agent spending budget, daily limits, and remaining satoshis.
Takes no parameters.
Retrieve agent telemetry metrics, rolling spend volume, and security events.
limittimeframeHours90% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
{ "mcpServers": { "nostrpulse": { "command": "npx", "args": ["-y", "nostrpulse-mcp"] } }}npx @modelcontextprotocol/inspector npx -y nostrpulse-mcp# Launch with minimal profile (3 core tools: check_trust_score, pay_cashu_nutzap, get_spending_guardrails)npx -y nostrpulse-mcp --profile=minimal
# Or via environment variableNOSTRPULSE_PROFILE=minimal npx -y nostrpulse-mcp[ Agent A: Requester / Buyer ] [ Agent B: Worker / Seller ] │ │ ├──► 1. Dispatch NIP-90 Job ('zap-analytics') ──►│ │ │ │ 2. Audit Requester WoT Anti-Sybil Score ◄───┤ (Requires Trust Score > 40) │ (check_trust_score) │ │ │ │◄── 3. Acknowledge & Deliver Computation ───────┤ │ │ ├──► 4. Inspect Budget Guardrails (assert 24h) │ │ │ ├──► 5. Settle Cashu NutZap (Adaptive Fallback) ─►│npm exec tsx scripts/test-mesh-agent.ts --ollama[ 1-Click In-App Minting & NutZap Pipeline ]User/Agent selects Sats ──► Request NUT-04 Quote ──► Settle via WebLN/QR ──► Poll Mint & Claim Proofs ──► Encrypt NIP-59/44 ──► Broadcast Kind 9321[ NIP-47 Direct Lightning Settlement Pipeline ]Agent receives Invoice ──► Parse NWC URI ──► Encrypt Payload (NIP-04/44) ──► Publish Kind 23194 ──► Listen Kind 23195 (Tagged by #e) ──► Extract Preimage & Fees ──► Destroy Pool & Subscriptions[ 5-Pillar Mint Risk Auditing & Dynamic Mesh Routing ]Target Mint URL ──► Probe NUT-06 /v1/info ──► Extract Admin Contact ──► Resolve WoT & NIP-05 ──► Compute 5-Pillar Mint Score ──► Classify Risk (LOW / MODERATE / HIGH_RISK) ──► Route to Optimal Mint[ Agent Payment Request ] ──► Check maxSatsPerTx (50 sats) ──► Check Rolling 24h Spend (500 sats) ──► Resolve WoT Score (>= 40) │ │ │ ▼ (Any Violation) ▼ (Any Violation) ▼ (Any Violation) [ Short-Circuit Block ] ◄────────────── [ Short-Circuit Block ] ◄───────── [ Short-Circuit Block ] │ ▼ Return { status: "blocked_by_guardrails" } (0 Sats Spent)[ Agent Initialization ] │ ├──► 1. Check process.env.NOSTR_SECRET_KEY / AGENT_NSEC (Hex or Bech32 nsec1...) │ └── Found? ──► Use environment identity │ ├──► 2. Check Local Keystore (.nostrpulse/agent-identity.json) │ └── Exists? ──► Restore persistent identity │ └──► 3. Cryptographic CSPRNG Generation (nostr-tools/pure) └── Generates secp256k1 keypair ──► Writes to .nostrpulse/ (Mode 0600)git clone https://github.com/PHONGUIT22/nostrpulse-full.gitcd nostrpulse-fullnpm installnpm run dev# Build the production standalone MCP server bundlenpm run build:mcp
# Launch MCP server locally over stdio JSON-RPCnpx tsx src/mcp-entry.ts
# Or run the published npm package directlynpx -y nostrpulse-mcp# Test Agent Spending Guardrails, Budget Limits & Zero-Config Identitynpx tsx scripts/test-guardrails.ts
# Test Developer Telemetry & Audit Trail data layernpx tsx scripts/test-agent-telemetry.ts
# Test full MCP Stdio JSON-RPC integration (all 10 tools discovered & tested)npx tsx scripts/test-mcp-stdio.ts
# Test NIP-47 NWC payment execution, URI parsing, and timeout guardsnpx tsx scripts/test-nwc-pay.ts
# Test WoT-Gated Cashu Mint Mesh (Testnut & Minibits /v1/info audit & trust verification)npx tsx scripts/test-mint-mesh.ts
# Test autonomous Agent-to-Agent (A2A) Collaborative Mesh (Local SLM / Ollama)npm exec tsx scripts/test-mesh-agent.ts --ollama
# Test A2A Mesh against the published npm package over Stdio JSON-RPCnpm exec tsx scripts/test-mesh-agent.ts --ollama --npm
# Test 5-Stage Autonomous Mini-Agent Showcase (Ollama Minimal Profile or Gemini)npm exec tsx scripts/test-mini-agent.ts --ollama --profile=minimal
# Test self-contained NIP-59 Gift Wrap encryption & decryptionnpx tsx scripts/test-nip59-encryption.ts
# Strict TypeScript type check (zero errors)npx tsc --noEmit