SatRank — Lightning trust + audit oracle MCP server
dev.satrank/mcp·v1.0.1Lightning trust + audit oracle. Score, pay, and audit L402 endpoints with Ed25519 receipts.
0 stars51 downloads/wk
Reviews
Write oneNobody has reviewed SatRank — Lightning trust + audit oracle yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
SatRank — Lightning trust + audit oracle tools (16, 1 write)
write = sends, deletes, buys or postsRead from the package source without running it. The installed server may list more.
aeps.daily_anchorFetch the daily Merkle anchor for a UTC day. Returns operator_pubkey + root_hex + receipt_count + L1 broadcast info. Verifiers use this for receipt inclusion proofs.
aeps.evidence_receiptFetch the Ed25519-signed evidence receipt for a fulfilled job. Same content as fulfill_evidence, addressable by job_id.
aeps.get_disputeRead the current state of an AEPS dispute. Returns dispute_id + type + multiplier + oracle_pubkeys + oracle_threshold + state + attestations.
aeps.get_multihopRead multi-hop HTLC chain state. Returns chain_id + agent_pubkey + per-leg state.
aeps.get_observationsReturn all observed daily anchors for a (operator, day) bucket, grouped by root_hex. distinct_roots > 1 = equivocation.
aeps.inclusion_proofBuild the RFC 6962 audit path for a single evidence receipt against the day-Merkle root. Returns root_hex + audit_path[] + leaf_index + tree_size. Verifiers feed these to the AEPS Merkle verifier (TS or Rust impl) plus the L1 anchor txid to confirm the receipt is committed on-chain.
aeps.list_forksList detected fork events (operator equivocations). Optional operator_pubkey filter.
aeps.recent_anchorsList the most recent N daily Merkle anchors. Default 30, max 366.
fulfillwrite actionPay an L402 endpoint via SatRank fulfill proxy with hold-invoice + auto-issued evidence receipt. Agent supplies intent + max_sats budget + max_latency_ms SLA ; SatRank picks best candidate, settles the L402 payment, returns body + body_sha256 + preimage + operator_pubkey + premium_sats + job_id. Refund on candidate failure. Use this when you want SatRank to write the post-pay evidence trail (Ed255
fulfill_evidenceFetch the public Ed25519-signed evidence receipt for a fulfill_jobs row by job_id. Returns canonical_json + signature + body_sha256 + operator_pubkey + ts_started + ts_finished + sats_paid. No auth required.
get_endpoint_scoreRead the public scoring snapshot for a specific L402 endpoint URL. Returns Bayesian p_success + ci95, 5-stage breakdown (challenge / invoice / payment / delivery / quality), median_latency_ms, last_probe_age_sec, freshness_status, source attribution. Use BEFORE calling fulfill on a specific URL to verify trust independently of the ranking.
intentResolve an intent (category + keywords + budget + latency ceiling) into a ranked list of L402 endpoint candidates from the SatRank catalogue. Returns Bayesian p_success + ci95 + 5-stage breakdown per candidate. Use this BEFORE paying any L402 endpoint to pick the most trusted candidate that fits your budget + SLA. Free to call ; pass `fresh: true` to force a sync HTTP probe (costs 2 sats via /api/
mini_llm_classifySatRank-operated L402 endpoint : single-best-label classification (10 sats). Powered by Claude Haiku 4.5 server-side. Use when the public AI catalogue is over-priced (>30 sats/req) for classification. The MCP server forwards Authorization headers ; agent runtime supplies the L402 macaroon after paying the 402 challenge.
mini_llm_summarizeSatRank-operated L402 endpoint : plain-prose summarization (10 sats). Powered by Claude Haiku 4.5 server-side. Use when the public AI catalogue prices summarization above your budget.
mini_llm_translateSatRank-operated L402 endpoint : translation (10 sats). POST text + target language code, get back translated text only.
verify_assertionVerify offline a SatRank-compatible Nostr trust assertion (kind 30782) or oracle calibration (kind 30783). Validates Schnorr signature + structure + valid_until tag. No network call. Use to compose oracle output across agents without re-querying SatRank.
Public scan report
scanner v0.1.9 · 2026-09-27 · same rubric, same numbers if you re-run it
- Code scan3 source files scanned25/25
- –Live reliabilityno gateway calls yet and no remote to proben/a
- –Tool poisoningtools not inspected (local package is not executed); not countedn/a
- Auth qualitylocal package, no credentials required12/15
- Maintenancelast push 77 days ago12/15
- Maintainer identitynamespace and repository owner differ; GitHub account older than a year; website matches verified namespace7/10
How SatRank — Lightning trust + audit oracle compares
Against every graded MCP server, from our own scans and uptime checks. Updated after each scan run.
- Safety score
- 86/100
- higher than 72% of 48,255 servers
- Tools
- 16
- the typical server has 7
- Tools that change things
- 6%
- typical: 0%. Fewer write tools means less an agent can break
- Downloads a week
- 51
- more than 43% of 12,191 servers with a package
What its tools let an agent do: 15 read · 1 change
Install SatRank — Lightning trust + audit oracle in Claude Code, Cursor or VS Code
Runs npx -y satrank-mcp on your machine. Read the scan report first; the gateway never runs local packages.
claude mcp add mcp -- npx -y satrank-mcp
What the publisher says
From the SatRank — Lightning trust + audit oracle repository's README, as published. We do not edit it. Read it on GitHub
SatRank
Lightning trust oracle for AI agents on L402. Bitcoin-pure.
What this does
- Crawls the L402 ecosystem (l402.directory + RSS + DNS) to build a catalogue of paid endpoints.
- Probes each endpoint, classifying outcomes across 5 stages: challenge / invoice / payment / delivery / quality.
- Scores every (endpoint, stage) pair as a streaming Beta(α, β) posterior. The end-to-end success probability is the product of stage means.
- Ranks candidates on POST /api/intent (paid 2 sats via L402): an agent passes a category + budget + SLA, gets back the top-K endpoints with full Bayesian breakdown.
- Publishes signed Nostr trust assertions (kind 30782) so any agent can cache / verify SatRank's output offline.
Public endpoints
Doc surfaces:
GET / landing page (static HTML)
GET /methodology technical reference (static HTML)
GET /api API reference (static HTML)
GET /openapi.json OpenAPI 3.0 spec (machine-readable)Functional API (nine routes — POST /api/intent is the only L402-gated one):
POST /api/intent paid, 2 sats via L402
POST /api/deposit free, mint a multi-use deposit macaroon (10–10000 sats, 30-day TTL)
GET /api/deposit/:macaroon_id free, read remaining balance
GET /api/services/:url_hash free, per-endpoint score snapshot
GET /api/services/categories free, list of catalogue categories
GET /api/services/best free, top-3 per category (5-min cache)
GET /api/oracle/budget free, last 24h revenue + paid-probe spend
GET /health free, liveness
GET /.well-known/satrank-key free, oracle pubkey for offline verifyDeposit macaroons let an agent pre-pay N sats once and use the bearer preimage across many /api/intent calls without a Lightning round-trip per call. Authorization: L402 deposit_:.
MCP
Three tools for any MCP-compatible AI runtime (Claude Code, Cursor, Codex, n8n):
intent forwards POST /api/intent (paid)
get_endpoint_score forwards GET /api/services/:url_hash (free)
verify_assertion offline Schnorr verification of kind 30782 (no network)Install in Claude Code:
claude mcp add satrank -- npx -y satrank-mcpSelf-hosters point SATRANKAPIBASE at their own deployment.
Architecture
14 source files + 4 doc surfaces (3 HTML pages + OpenAPI spec). Read top-to-bottom in 30 minutes.
src/
├── types.ts Stage, Posterior, Endpoint, Observation
├── config.ts zod env schema, parsed once at boot
├── logger.ts JSON-line stdout
├── db.ts pg Pool + idempotent schema bootstrap
├── schema.sql 9 tables in ONE file (no migrations folder)
├── lnd.ts minimal LND REST client (addInvoice + payInvoice)
├── ssrf.ts RFC1918 + link-local + IPv6 ULA URL guard
├── nostr.ts kind 30782 sign + publish + offline verify
├── scoring.ts Beta(α,β) per stage, Wilson CI95, ranker
├── probe.ts HTTP probe with optional L402 pay
├── crawler.ts l402.directory + RSS + DNS + cron
├── api.ts Express; 9 functional routes + 4 doc surfaces, native L402 paid gate, deposit credits
├── mcp.ts MCP server, 3 tools, ships verbatim to npm
├── landing.html static landing served at GET /
├── methodology.html technical reference served at GET /methodology
├── api-reference.html API reference served at GET /api
├── openapi.json OpenAPI 3.0 spec served at GET /openapi.json
└── index.ts boot + shutdownRun it
cp .env.example .env
# minimum: set DATABASE_URL
npm install
npm run build
npm startShortened. The full README is on GitHub.
Nothing above is checked by us. What we check is on the safety report.
SatRank — Lightning trust + audit oracle: common questions
- Is SatRank — Lightning trust + audit oracle MCP server safe?
- Yes, by our scan: it is graded A (86/100). Read the SatRank — Lightning trust + audit oracle safety report
- How do I install SatRank — Lightning trust + audit oracle?
- It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
- Does SatRank — Lightning trust + audit oracle need an API key?
- No secret keys are declared. It reads 1 setting from the environment.
- Is SatRank — Lightning trust + audit oracle maintained?
- The last commit was 114 days ago (2026-07-13). The latest release is v1.0.1.
- How does SatRank — Lightning trust + audit oracle compare with other MCP servers?
- safety score 86/100 (higher than 72% of 48,255 servers); tools 16 (the typical server has 7); tools that change things 6% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.