MCP server for Bitcoin AI tools and Nostr Web of Trust scoring (12 tools). Pay-per-use via Lightning L402. 50 free WoT queries/day.
The server defines 12 tools with visible input schemas (Zod validation) and descriptions. Naming follows verb_noun conventions mostly (ask_bitcoin, generate_image, wot_score). Descriptions range from 100-300 chars, meeting the 10-1024 baseline, and explain the cost (sats) and operation clearly. However, all tools expose a 'payment_hash' parameter which violates secret-injection patterns, payment authentication should be server-side via Authorization headers, not user-supplied parameters. Parameter descriptions are adequate but could be more precise about format (e.g., 'hex format' is mentioned for pubkeys but not validated). Output schemas are NOT documented, the code returns text via formatL402() helper, but the actual response structure from the backend APIs is never described. This forces LLMs to infer structure from error handling code. Error handling leverages formatL402() for payment prompts, which is good for UX but the recovery pattern is manual (user pays, retries with hash) rather than automated. Tool composition is weak: no batch variants, no chaining IDs in responses documented, and several tools operate on the same Nostr graph but don't reference each other.
Ask a question about Bitcoin, Lightning Network, or cryptocurrency. Powered by Llama 3.3 70B. Costs 21 sats via Lightning L402.
Generate an image from a text prompt using FLUX.1 Schnell (12B). Costs 100 sats via Lightning L402.
Detect anomalous patterns in a Nostr pubkey's network behavior. Checks for ghost followers, asymmetric relationships, cluster patterns, and suspicious activity.
Compare trust scores for a pubkey across multiple NIP-85 providers. Shows consensus classification and provider agreement.
Analyze the quality of a Nostr pubkey's follow list. Returns quality score, ghost follower ratio, diversity entropy, and improvement suggestions.
Simulate what happens if one pubkey follows/unfollows another. Shows ripple effect across the network using differential PageRank.
payment_hash parameter exposes authentication credential. Per pattern:secret-injection, credentials must never appear as tool parameters. Payment authentication should use server-side Authorization headers only, not user-supplied params that enter logs and traces.
Output schemas are not documented. The code returns text via formatL402() but the actual API response structure (JSON fields, nested objects) is never documented. LLMs cannot plan downstream operations or extract structured data without knowing the response schema.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 59 | 2026-07-28+ | v2 |
| 2026-03-09 | C | 62 | - | v1 |
Get Nostr network health metrics: node count, edge count, Gini coefficient (decentralization), power-law exponent, density, and component analysis. No pubkey needed.
Predict how likely two Nostr pubkeys are to connect. Uses 5 topology signals: Common Neighbors, Adamic-Adar, Preferential Attachment, Jaccard, WoT Proximity.
Look up a Nostr pubkey's Web of Trust score (PageRank-based, 0-100). Returns score, rank, percentile, followers. 50 free requests/day, then L402.
Run 5-signal Sybil detection on a Nostr pubkey. Analyzes follower quality, mutual trust ratio, follow diversity, temporal patterns, and community integration. Returns classification: genuine, likely_genuine, suspicious, or likely_sybil.
Get a pubkey's trust circle (mutual follows with trust strength). Returns members with roles, cohesion, and density metrics.
Find the trust path between two Nostr pubkeys. Shows hop-by-hop path with trust scores at each hop. Useful for 'how am I connected to this person?'
No pagination support documented. wot_score, wot_follow_quality, wot_trust_circle, and wot_anomalies may return large result sets but lack limit/offset or cursor parameters. No result-capping guidance in descriptions.
Parameter format validation rules not explicit. 'Nostr public key in hex format' is mentioned but no length (64 chars), pattern, or validation guidance provided. LLMs cannot self-correct invalid hex strings without explicit constraints.
No error recovery guidance. When payment_required status is returned, formatL402() prompts the user to manually pay and retry. No automation, no retry logic, no guidance on handling rate limits or timeouts.
Tool composition is weak. Multiple wot_* tools operate on the same Nostr Web of Trust graph but do not reference each other or suggest related operations. No batch variants (e.g., score multiple pubkeys at once). No guidance on common sequences (e.g., 'check sybil status first, then trust score').