Skip to main content
Glama

⚡ NostrPulse

The Decentralized Stripe & Radar for Autonomous AI Agents

Autonomous Payment & Sybil-Resistant Trust Layer for AI Agents via Nostr, Cashu eCash (NIP-61), and MCP.

npm version Release: v1.2.0 MCP Stdio License: MIT Track Nostr Protocol Cashu Protocol Next.js 16


🤖 MCP Server for AI Agents (Stripe for AI)

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.

1. Zero-Code Quickstart (Cursor & Claude Desktop)

Paste this configuration directly into your claude_desktop_config.json or .cursor/mcp.json:

{
  "mcpServers": {
    "nostrpulse": {
      "command": "npx",
      "args": ["-y", "nostrpulse-mcp"]
    }
  }
}
  • Claude Desktop Config File Locations:

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

    • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • Cursor IDE: Save to .cursor/mcp.json in your project root, or add under Cursor Settings > Features > MCP.

2. Interactive Testing via MCP Inspector

Verify tools, examine schemas, and test prompts in the browser via the official Model Context Protocol Inspector:

npx @modelcontextprotocol/inspector npx -y nostrpulse-mcp

3. Core MCP Tools Lookup Table

Tool Name

Type

Description

check_trust_score

Radar / Anti-Sybil

Anti-fraud radar for AI agents. Evaluates Web-of-Trust Ring-1 (22 Root Anchors), transitive hops, and Sybil-filtered Economic Stake (sats) before interacting or paying.

pay_cashu_nutzap

Payment Rails (eCash)

Instant machine-to-machine (M2M) settlement with Chaumian eCash (NIP-61 NutZap) wrapped in metadata-private NIP-59 Gift Wrap and NIP-44 encryption. Wrapped with pre-flight spending guardrails.

request_nip90_job

Decentralized Compute

Dispatches compute and data-processing tasks to decentralized NIP-90 Data Vending Machines (DVMs) across Nostr relays with local SQLite cache fallback.

pay_lightning_nwc

Payment Rails (Lightning)

Settle BOLT-11 Lightning invoices directly through an autonomous node via NIP-47 Nostr Wallet Connect (Alby Hub, Phoenixd, Umbrel) with spending guardrails.

pay_with_nwc

Payment Rails (Alias)

Direct NWC payment executor alias for pay_lightning_nwc.

audit_cashu_mint

Mint Radar

Audit and evaluate counterparty risk of a Cashu eCash Mint using Web-of-Trust graph distance, NIP-05 sovereign domain validation, and admin reputation.

route_cashu_mint

Mint Mesh

Dynamically discover and route to the highest-trust, lowest-latency Cashu Mint from the WoT-Gated Dynamic Mint Mesh.

get_agent_identity

Zero-Config Identity

Retrieve active autonomous AI agent cryptographic public identity (pubkey, npub, keystore source, ephemeral status). Automatically bootstraps local keys.

get_spending_guardrails

Budget Gatekeeper

Query current AI agent spending guardrails, daily budget (500 sats rolling), 24h satoshis spent, remaining allowance, and per-tx limits (50 sats).

get_agent_telemetry

Telemetry & Audit

Inspect autonomous agent spending metrics, rolling 24h budget allowance, blocked Sybil threats, and Stripe Radar-grade recent telemetry events.

4. Profiles for Small Language Models (SLMs: 500M – 1.5B)

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:

# 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 variable
NOSTRPULSE_PROFILE=minimal npx -y nostrpulse-mcp

Profile

Active Tools

Token Footprint

Recommended Use Case

minimal

check_trust_score, pay_cashu_nutzap, get_spending_guardrails

~380 tokens

Local SLMs (0.5B – 1.5B), edge devices, low-cost loops

radar

check_trust_score, audit_cashu_mint

~240 tokens

Read-only anti-Sybil screening & Mint risk verification

payment

pay_cashu_nutzap, pay_lightning_nwc, get_spending_guardrails

~420 tokens

Payment-only execution daemons & bots

full

All 10 NostrPulse MCP tools

~2,200 tokens

Flagship LLMs (Claude 3.7/Opus, GPT-4o, Gemini 2.5)


5. Autonomous Agent-to-Agent (A2A) Collaborative Mesh

NostrPulse includes a reference implementation for autonomous agent-to-agent decentralized negotiation and micro-commerce (scripts/test-mesh-agent.ts):

[ 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) ─►│
  • Zero-Cloud Local Inference: Run the showcase locally using Ollama (qwen2.5-coder:1.5b) without cloud API keys:

    npm exec tsx scripts/test-mesh-agent.ts --ollama
  • Adaptive Spending Fallback: If a requested micro-payment exceeds the rolling 24-hour spending limit, the agent automatically adapts down to the remaining safe allowance to settle minimum fees without crashing or overspending.


Related MCP server: maiat-protocol

🌐 The Problem & The Freedom Solution

Open agentic systems and decentralized protocols eliminate platform lock-in, but introduce two critical vulnerabilities:

  1. Agent Impersonation & Sybil Floods: Cryptographic keypairs (npub) cost $0 to generate, making spam bots, clone accounts, and wash-trading rampant.

  2. Payment Fragility & KYC Lockouts: Legacy banking rails (Stripe/PayPal) freeze autonomous agents. Synchronous Lightning Zaps (NIP-57) fail when receiver nodes are offline or lack inbound liquidity channels.

Paradigm Shift

Vector

Legacy Web2 / Stripe

NostrPulse (Freedom Tech Stack)

Agent Identity

API keys, credit cards, KYC bans

Cryptographic Sovereign Keypairs (NIP-01 / NIP-19)

Anti-Fraud (Radar)

Centralized black-box heuristic rules

Web-of-Trust Ring-1 (22 Anchors) + Anti-Sybil Sats Stake

M2M Settlement

30% platform cuts, merchant holds

Chaumian eCash (NIP-61 NutZaps): Zero-fee, instant, private

Offline Delivery

Synchronous connection required

Asynchronous NutZaps via NIP-59 Gift Wrap & Relays

Compute Delegation

Proprietary cloud APIs

NIP-90 Data Vending Machines (Open Compute Marketplace)

AI Protocol

Custom vendor REST wrappers

Stdio JSON-RPC via Model Context Protocol (nostrpulse-mcp)


🏛️ Multi-Tier System Pipeline


🚀 Key Innovations & Engineering Highlights

1. 🛡️ 5-Pillar Cryptographic Trust Score & Anti-Sybil Visualizer

NostrPulse calculates an objective 0–100 point reputation index directly from open relay data and root anchor graph topology:

Pillar

Verification Signal

Max Points

Pillar 1

NIP-05 Cryptographic DNS Binding: Validates .well-known/nostr.json against the public key (Bonus for sovereign domains).

25 pts

Pillar 2

Web-of-Trust (WoT) Ring-1 Proximity: Evaluates graph distance to 22 verified protocol seed keys (jack, fiatjaf, jb55, calle, odell, etc.) with local SQLite fallback.

25 pts

Pillar 3

Sats-Weighted In-Degree (Economic Stake): Analyzes verified Zap receipts and filters out self-zaps and bot clones. Visualized with a dual progress bar.

20 pts

Pillar 4

Keypair Longevity & Multi-Relay Depth: Assesses keypair maturity and replication count across global relays.

15 pts

Pillar 5

Metadata Richness & Authenticity: Verifies avatar, bio, and external identity endpoints.

15 pts

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.


2. ⚡ Dual-Rail Value-4-Value Settlement (Lightning + Cashu eCash)

A unified micro-transaction interface switching effortlessly between real-time Lightning and offline Chaumian eCash:

[ 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
  • 100% Asynchronous NutZaps (NIP-61): Senders deliver bearer eCash tokens to creators even when the recipient's Lightning node is offline.

  • NIP-59 Gift Wrap Envelope Privacy: Wraps NutZaps with random ephemeral keypairs to conceal sender, recipient, and payload metadata from public relay scrapers.

  • Front-Running Defense (NIP-44 v2 Encryption): Bearer tokens inside Kind 9321 events are encrypted with the recipient's public key.

  • Native NUT-00 V4 CBOR Decoding: Zero-dependency binary parser compliant with RFC 8949, reading both legacy cashuA (JSON Base64) and next-gen cashuB (CBOR) tokens.

  • Dynamic Mint Router: Switch between Minibits, Macadamia, Cashu Testnut, or private self-hosted Mint endpoints.


3. ⚡ NIP-47 Nostr Wallet Connect (NWC) Direct Lightning Rail

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):

[ 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
  • Standardized Connection URIs: Seamless parsing and generation of nostr+walletconnect://<wallet_pubkey>?relay=<relay_url>&secret=<client_secret>&lud16=<lightning_address>&encryption=<nip04|nip44>.

  • Zero-Leak Subscription Lifecycle: Immediate resource cleanup upon resolution or timeout, destroying relay pools and event subscriptions to prevent memory retention in long-running agent daemons.

  • Dual Encryption Handshake: Transparent fallback support for both legacy NIP-04 shared secrets and next-gen ChaCha20-Poly1305 NIP-44 v2 encryption.

  • Autonomous MCP Execution: Exposed as pay_lightning_nwc (with alias pay_with_nwc) for 1-step settling by autonomous agents.


4. 🛡️ WoT-Gated Dynamic Mint Mesh & Counterparty Risk Radar (NUT-06)

Cashu Mints carry counterparty risk. NostrPulse acts as an objective, real-time Radar for Mints via auditCashuMint and selectBestMint:

[ 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
  • NUT-06 Probe & Capability Auditing: Evaluates mint uptime, operational response latency, and supported protocol capabilities (NUT-04 Mint, NUT-05 Melt, NUT-07 StateCheck, NUT-08 FeeReturn, NUT-10 DLEQ Proofs, NUT-11 P2PK).

  • Cryptographic Admin Identity Discovery: Extracts Nostr operator pubkeys, NIP-05 sovereign domain signatures, or Nostr URIs from contact metadata, resolving transitive WoT graph distance to the 22 Root Anchors.

  • Tri-Tier Counterparty Risk Profiling (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).

  • Autonomous Mesh Selection (selectBestMint): Evaluates candidate mint lists concurrently and dynamically selects the highest-trust, lowest-latency mint for proof creation and payment routing.


5. 🤖 Autonomous Machine Money Agent (/agent)

A dedicated interface demonstrating autonomous agent commerce:

  • Interactive AI Spender: Agent equipped with Chaumian eCash wallet capable of paying creators automatically based on quality prompts.

  • Connect MCP Modal: 1-click copy configuration for Claude Desktop and Cursor IDE.

  • Stand-alone NutZap Web Component (public/widget.js): Lightweight <nutzap-me npub="..."> button ready to embed on any blog, documentation, or static site.


6. 🤖 NIP-90 Autonomous DVM Worker & Decentralized Bounty Marketplace

  • Autonomous Trust Score DVM Bot (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"]).

  • NIP-90 Client SDK (src/lib/nip90.ts): Utility library offering publishJobRequest(), fetchOpenBounties(), and subscribeJobFeedbackAndResult().

  • Anti-Sybil Bounty Marketplace (/bounties): Open decentralized task board filtered by creator Trust Score (All, Score ≥ 20, Score ≥ 50, Score ≥ 80).

  • 1-Tap Cashu NutZap Settlement (TaskResultView.tsx): Audit deliverables and settle bounties instantly with NIP-44/59 encrypted NutZaps.


7. 🛡️ Autonomous Agent Spending Guardrails & Budget Manager

To prevent autonomous agents from draining balances through infinite loops, hallucinated calls, or prompt injections, NostrPulse enforces real-time Spending Guardrails:

[ 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)
  • Per-Transaction Cap (AGENT_MAX_SATS_PER_TX): Restricts single transaction calls to a safe default of 50 sats.

  • 24-Hour Rolling Budget (AGENT_DAILY_LIMIT_SATS): Queries SQLite table agent_spending_log to enforce a rolling daily limit of 500 sats.

  • Anti-Sybil Counterparty Gate (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.

  • Non-Custodial Safety: Rejections return { status: "blocked_by_guardrails", reason } instantly without spending funds.


8. 🔑 Zero-Config Sovereign Identity Bootstrapping

Eliminates the friction of requiring developers or agents to manually generate, paste, or expose nsec private keys before running:

[ 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)
  • Automated Persistence: Keypair is saved to .nostrpulse/agent-identity.json with restricted permissions and automatically excluded from Git commits via .gitignore.

  • Instant Readiness: Tools like get_agent_identity allow agents to query their public identity (pubkey, npub, source, ephemeral flag) out-of-the-box.


9. 📊 Developer Telemetry & Stripe Radar Audit Trail

A comprehensive developer observability layer (src/lib/telemetry.ts) providing a Stripe-grade audit trail:

  • Event Logging: Records structured JSON logs for payment, radar_block, job_settlement, and mint_audit into SQLite table agent_telemetry.

  • Developer Summary Metrics: Computes totalSpentSats, txCount, and blockedSybilAttacks across configurable timeframes (default: 24h).

  • Dual Access: Consumable directly by AI agents via MCP tool get_agent_telemetry and by web dashboards via Next.js REST API GET /api/telemetry.


📜 Protocol Specifications (NIPs, NUTs & MCP)


🛠️ Technology Stack & Architecture

  • Framework: Next.js 16 (App Router, Server Components & Streaming SSR)

  • Agent Protocols: @modelcontextprotocol/sdk (v1.30+), OpenAI / Google Gemini AI SDK

  • Language: TypeScript 5 (Strict type-checking on all cryptographic structures)

  • Styling: Tailwind CSS v4, Base UI, Lucide Icons

  • Protocol Libraries: nostr-tools (v2.25+), @cashu/cashu-ts (v4.9+), @noble/hashes

  • Zero-Buffer Client Engine: Fully decoupled from Node.js Buffer globals using native browser Uint8Array primitives for universal cross-environment compatibility.

  • Non-Blocking Resilience: All network queries are wrapped with AbortSignal.timeout() and Promise.race() fallbacks to eliminate UI freezes.


⚡ Quickstart & Local Setup

Prerequisites

  • Node.js >= 20.0.0

  • npm, pnpm, or yarn

1. Clone & Install

git clone https://github.com/PHONGUIT22/nostrpulse-full.git
cd nostrpulse-full
npm install

2. Run the Development Server

npm run dev

Open http://localhost:3000 in your browser to explore the live dashboard.

3. Build & Run the MCP Server

# Build the production standalone MCP server bundle
npm run build:mcp

# Launch MCP server locally over stdio JSON-RPC
npx tsx src/mcp-entry.ts

# Or run the published npm package directly
npx -y nostrpulse-mcp

4. Run Verification & Test Suites

# Test Agent Spending Guardrails, Budget Limits & Zero-Config Identity
npx tsx scripts/test-guardrails.ts

# Test Developer Telemetry & Audit Trail data layer
npx 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 guards
npx 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-RPC
npm 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 & decryption
npx tsx scripts/test-nip59-encryption.ts

# Strict TypeScript type check (zero errors)
npx tsc --noEmit

🗺️ Roadmap & Milestones

  • Phase 1: Deterministic 5-Pillar Trust Score Engine & Anti-Sybil Damping Guard.

  • Phase 2: NIP-57 Lightning Zap integration with WebLN & live receipt streaming.

  • Phase 3: NIP-61 NutZap dual-mode engine with NUT-00 V4 CBOR decoding & NIP-44 encryption.

  • Phase 4: NIP-65 dynamic relay synchronization & browser WebSocket telemetry.

  • Phase 5: NIP-90 Data Vending Machines: Autonomous Trust Score worker bot & decentralized /bounties marketplace.

  • Phase 6: 1-Tap Cashu NutZap settlement for deliverable acceptance & instant payout.

  • Phase 7: MCP Stdio Server & npm package deployment (nostrpulse-mcp on npm registry).

  • Phase 8: NIP-47 Nostr Wallet Connect (NWC) direct Lightning rail for autonomous node settlement.

  • Phase 9: WoT-Gated Dynamic Mint Mesh & NUT-06 5-Pillar Counterparty Risk Radar.

  • Phase 10: Agent Spending Guardrails (single-tx cap & 24h limits), Zero-Config Identity Bootstrapping & Developer Telemetry Data Layer.

  • Phase 11: Autonomous Agent-to-Agent (A2A) Collaborative Mesh, SLM Profiles (--profile=minimal), and Adaptive Spending Fallback.

  • Phase 12: Standalone @nostrpulse/sdk for seamless integration into third-party Nostr clients.


⚖️ License & Non-Custodial Disclaimer

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.

Available Tools

10 tools
audit_cashu_mintB

Audit Cashu mint health, NUT-06 status, and counterparty risk score.

ParametersJSON Schema
NameRequiredDescriptionDefault
mintUrlYesTarget Cashu mint URL to audit
forceRefreshNoBypass in-memory audit cache and perform fresh live probe (default: false)

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the behavioral disclosure burden. It does not explicitly state whether the audit is read-only, whether it makes external network calls, whether it can be safely repeated, or what side effects 'forceRefresh' might have at the mint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one front-loaded sentence with no filler or repetition. 'Audit Cashu mint health' leads with the action and resource, then specifies the exact audit dimensions.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter tool with complete parameter documentation, the description is adequate for selection and basic invocation. However, there is no output schema and no mention of what the returned audit result looks like or how to interpret the counterparty risk score, which leaves a meaningful gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both mintUrl and forceRefresh fully. The description adds no additional parameter-level meaning, which is acceptable under the baseline for full schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Audit'), a specific resource ('Cashu mint'), and concrete audit dimensions (health, NUT-06 status, counterparty risk score). This clearly communicates what the tool does and differentiates it from payment, routing, and identity sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance about when to use this tool versus the sibling tools, particularly check_trust_score which also deals with risk/trust. The description states what it does but not the conditions or scenarios that should lead an agent to select it over the alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_trust_scoreA

Verify anti-Sybil Trust Score (0-100) and Web-of-Trust distance for a Nostr pubkey.

ParametersJSON Schema
NameRequiredDescriptionDefault
pubkeyYesTarget Nostr public key in 64-char hex or npub format

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden of behavioral disclosure. 'Verify' implies a read-only operation and the description states what is returned (score 0-100 and WoT distance), but it does not mention failure modes, data sources, or whether any network/trust-service lookup is involved.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, tightly worded sentence with no filler. The key action and target are front-loaded, and the output range is included efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter query tool with no output schema, the description adequately explains the input and the returned values. It could add detail about what 'Web-of-Trust distance' means or how to interpret the score, but the core information an agent needs to invoke it correctly is present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the description does not meaningfully add beyond the schema: both identify the pubkey as the target. The description reiterates the purpose but provides no extra syntax, formatting, or edge-case behavior for the parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific action ('Verify'), a specific resource ('anti-Sybil Trust Score and Web-of-Trust distance'), and a specific target ('Nostr pubkey'). This clearly distinguishes it from the sibling tools, which are mostly payment/identity/telemetry operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes the tool's context clear: it is for verifying anti-Sybil trust information about a Nostr pubkey. It doesn't explicitly name alternatives or exclusions, but none of the sibling tools overlap with this purpose, so the intended use is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_agent_identityA

Get the autonomous agent's Nostr public identity and npub.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the behavioral burden. 'Get' and 'public' suggest a read-only operation, but the description does not explicitly rule out side effects, error conditions, or special behavior, leaving a mild transparency gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence conveys the essential information with no filler or repetition. It is appropriately sized for a zero-parameter identity getter.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity, empty parameter schema, and lack of output schema, the description is nearly complete. It names the returned information ('public identity and npub'), though it could be slightly more explicit about the output format or exact fields.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and the schema is trivially 100% covered, so no parameter explanation is needed. The description adds meaning by clarifying what the no-input call returns: the agent's Nostr identity and npub.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('Get') and a clear resource ('the autonomous agent's Nostr public identity and npub'). It is easily distinguished from siblings like pay_cashu_nutzap, check_trust_score, and get_agent_telemetry.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended use is implied: call this when the agent needs its own Nostr identity or npub. However, it does not explicitly state when not to use it or compare it with alternatives, and no sibling tool serves a similar purpose.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_agent_telemetryB

Retrieve agent telemetry metrics, rolling spend volume, and security events.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax events to return (default: 20)
timeframeHoursNoTimeframe in hours (default: 24)

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It only states the action 'retrieve' and the data categories, but does not mention pagination, default limits, authentication requirements, whether data is a snapshot or continuous, or any potential side effects. This is a significant gap for a data-retrieval tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-formed sentence with no wasted words. It is concise, though it could be slightly restructured to front-load the most critical information, but it is not verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given there is no output schema and no annotations, the description should clarify return format, pagination behavior, and any prerequisites. None of this is provided. An agent calling this tool would not know what the response structure looks like or if there are any constraints beyond the parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage for both parameters (limit and timeframeHours), including defaults. The tool description adds no extra meaning beyond what the schema already provides, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb ('Retrieve') and a specific resource ('agent telemetry metrics, rolling spend volume, and security events'), which distinguishes it from sibling tools like get_agent_identity and get_spending_guardrails. The purpose is unambiguous and directly actionable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives, nor any exclusions or context for selection. While the name suggests telemetry retrieval, the description offers no explicit routing information to an agent deciding between this and related tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_spending_guardrailsA

Check current AI agent spending budget, daily limits, and remaining satoshis.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden. The verb 'Check' strongly implies a read-only, non-mutating operation, and it names the specific data returned. However, it does not disclose whether any state changes occur, whether values are real-time, or whether authentication is required.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler or repetition. Every word adds meaning by specifying the action, the resource, and the exact values the agent can expect.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only query with no output schema, the description provides the key conceptual return items: budget, daily limits, and remaining satoshis. It could be slightly more complete by clarifying response format or units, but 'satoshis' already removes the main ambiguity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters and the input schema is empty, so there is nothing to document. The baseline of 4 applies because the description correctly focuses on the tool's output rather than attempting to describe nonexistent parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Check') and a clear resource ('current AI agent spending budget, daily limits, and remaining satoshis'). This directly distinguishes it from sibling payment, identity, telemetry, and audit tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not state when to use this tool versus alternatives, nor does it provide exclusions or prerequisites. It implies a read-only inspection use case but never explicitly says 'use this before spending' or contrasts with siblings like get_agent_telemetry.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pay_cashu_nutzapA

Send an eCash NutZap payment (NIP-61) to a Nostr recipient under guardrail limits.

ParametersJSON Schema
NameRequiredDescriptionDefault
commentNoOptional payment message memo
mintUrlNoOptional target Cashu mint URL
recipientYesRecipient Nostr public key (64-char hex or bech32 npub)
amountSatsYesAmount in satoshis to pay
cashuTokenNoOptional Cashu eCash token string; if omitted, generates a mint quote invoice

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description alone must disclose behavioral traits. It does state the payment sends eCash and respects guardrails, but for a money-moving operation it omits consequences like irreversibility, prerequisites, failure modes, and the quote-invoice path when cashuToken is omitted.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with no filler, front-loading the action and payment type and ending with the guardrail constraint. Every phrase contributes useful information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite full schema coverage, the tool has no output schema and no annotations, so the agent is left without return-value, error, or prerequisite details. For a side-effecting payment tool, the description should at least point to guardrail checks or clarify the no-token quote behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All five parameters have schema descriptions, so the schema carries the semantic weight. The description only adds high-level context (eCash, Nostr recipient, guardrails) and does not add parameter-level detail beyond the schema, which matches the baseline for 100% coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific action, 'Send', and a precise resource: an eCash NutZap payment via NIP-61 to a Nostr recipient. The eCash/NutZap phrasing differentiates it from sibling Lightning payment tools like pay_lightning_nwc.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides clear context for when this tool applies: eCash NutZap payments to Nostr recipients, with guardrail limits enforced. It does not explicitly name alternatives or exclusion criteria, but the payment rail is enough to route an agent away from the Lightning siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pay_lightning_nwcC

Pay a BOLT-11 Lightning invoice via NIP-47 Nostr Wallet Connect.

ParametersJSON Schema
NameRequiredDescriptionDefault
nwcUriNoOptional NWC connection URI (falls back to env NWC_CONNECTION_URI)
invoiceYesBOLT-11 Lightning invoice
timeoutMsNoTimeout in milliseconds (default: 15000)
amountMsatNoOptional amount in millisatoshis for amountless invoices

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the full burden of behavioral disclosure. It only states the action without revealing any behavioral traits such as the need for a connection URI, timeout behavior, failure modes, or whether the payment is irreversible. For a mutation tool with zero annotation coverage, this is a significant gap that could lead an agent to misuse it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, succinct sentence that clearly communicates the core action. It is appropriately sized with no wasted words. However, it may be too terse to be helpful beyond a basic understanding, but conciseness is not the issue – it is the lack of substance that hurts the overall score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of a payment tool (4 parameters, no output schema, no annotations), the description is incomplete. It does not explain when to use this tool versus pay_with_nwc, does not disclose behavioral details, and does not clarify parameter semantics beyond what the schema already provides. An agent would have to infer too much from the tool name and schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% – every parameter (nwcUri, invoice, timeoutMs, amountMsat) has a description in the input schema. The tool description adds no additional parameter context, so it does not improve upon the schema. Baseline 3 is appropriate when the schema handles the parameter documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific action ('Pay'), a specific resource ('BOLT-11 Lightning invoice'), and the mechanism ('NIP-47 Nostr Wallet Connect'). This is precise and unambiguous. However, it does not differentiate from the sibling tool 'pay_with_nwc', which could be a broader or alternative payment tool. The name itself ('lightning_nwc') and the BOLT-11 specificity hint at a difference, but no explicit distinction is made.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. The description only states what it does, with no mention of conditions, exclusions, or when a sibling tool like 'pay_with_nwc' would be more appropriate. An agent receives no contextual hints for tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pay_with_nwcC

Pay a BOLT-11 Lightning invoice via NIP-47 Nostr Wallet Connect (alias).

ParametersJSON Schema
NameRequiredDescriptionDefault
nwcUriNoOptional NWC connection URI (falls back to env NWC_CONNECTION_URI)
invoiceYesBOLT-11 Lightning invoice
timeoutMsNoTimeout in milliseconds (default: 15000)
amountMsatNoOptional amount in millisatoshis for amountless invoices

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full behavioral burden. It does not disclose that paying is irreversible, that it spends funds, that amountless invoices require amountMsat, or how the nwcUri fallback to an environment variable behaves. The single sentence covers mechanism but not operational consequences.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single focused sentence and is easy to parse. The parenthetical 'alias' saves space but adds ambiguity, preventing a perfect score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a payment operation with no annotations and no output schema, the description is too thin. It omits usage selection, behavioral warnings, and any clarification of the alias relationship, leaving an agent under-informed about a financially meaningful call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameters are already fully documented. The description adds only the 'BOLT-11' context for the invoice, which is marginal value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Pay'), a specific resource ('BOLT-11 Lightning invoice'), and the transport method ('NIP-47 Nostr Wallet Connect'). It is clear on its face, though it does not explicitly differentiate itself from the sibling 'pay_lightning_nwc' beyond the parenthetical 'alias.'

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to use this tool versus alternatives such as 'pay_lightning_nwc' or 'pay_cashu_nutzap'. The word 'alias' hints at a relationship to another tool, but the description never says whether this is the same operation, a fallback, or a preferred path.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

request_nip90_jobC

Dispatch a NIP-90 DVM analytics computation task across Nostr relays with local fallback.

ParametersJSON Schema
NameRequiredDescriptionDefault
promptYesTarget Nostr public key or computation query
bidSatsNoBid fee in satoshis (default: 5)
categoryNoTask category: 'zap-analytics', 'reputation', or 'trust-score' (default: 'trust-score')
timeframeNoHistorical timeframe: 'all-time', '1y', or '30d' (default: 'all-time')
timeoutMsNoTimeout in milliseconds (default: 3500)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden, but it only discloses that the task is 'across Nostr relays' and includes 'local fallback'. It does not mention whether this dispatches a paid bid, whether it awaits results, whether it mutates state, or what happens on failure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with no filler. Every phrase ('Dispatch', 'NIP-90 DVM analytics', 'across Nostr relays', 'local fallback') contributes meaningful information without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no annotations and no output schema, this description is too sparse. It does not explain what a DVM is, whether the tool returns results synchronously or asynchronously, when payment is involved, or how the local fallback behaves in practice. An agent has to infer significant operational context from the parameter schema alone.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all five parameters. The description adds no extra parameter meaning, but per the baseline rule, this is acceptable when the schema fully covers the parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('Dispatch') and a concrete resource type ('NIP-90 DVM analytics computation task'), so an agent can tell this is for submitting analytics work to a DVM infrastructure. However, it does not explicitly differentiate from the sibling 'check_trust_score' tool, which could plausibly overlap with the 'trust-score' category.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives such as 'check_trust_score' or any of the payment-oriented siblings. The description implies usage through its name and wording, but it does not state conditions, prerequisites, or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

route_cashu_mintB

Route to the highest-trust, lowest-latency Cashu mint for a payment.

ParametersJSON Schema
NameRequiredDescriptionDefault
amountSatsNoPayment amount in satoshis
minTrustScoreNoMinimum required trust score (default: 45)
preferredMintNoOptional preferred mint URL to prioritize if verified and healthy

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not reveal whether this tool actually executes a payment, only returns a selected mint, or performs external network checks. The description also omits side effects, trust-score mechanics, and what the agent should do with the result.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence with no filler or repetition. It efficiently conveys the tool's core selection objective, though it could arguably expand slightly without becoming bloated.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that there is no output schema and no annotations, the description is too thin to fully orient an agent. It does not clarify what the tool returns, whether any payment is executed, or how the routing result should be used with sibling payment tools. An agent could reasonably misinterpret 'route ... for a payment' as meaning the tool itself sends funds.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all three parameters are already meaningfully documented in the schema. The description adds high-level algorithm context ('highest-trust, lowest-latency') that relates to minTrustScore and preferredMint, but it does not add per-parameter details beyond what the schema provides, matching the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Route') with a clear resource ('Cashu mint') and a precise selection objective ('highest-trust, lowest-latency'). This clearly distinguishes it from sibling tools like pay_cashu_nutzap, which executes payments, and audit_cashu_mint, which audits a mint rather than selecting a route.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'for a payment' gives useful context that this tool is part of a payment flow, but the description does not explicitly say when to use this tool versus pay_cashu_nutzap or pay_with_nwc, nor does it mention that routing should happen before the actual payment call. Usage context is implied, not stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 10 tool updatesv0.1.0
    • First observedaudit_cashu_mint
    • First observedcheck_trust_score
    • First observedget_agent_identity
    • First observedget_agent_telemetry
    • First observedget_spending_guardrails
    • First observedpay_cashu_nutzap
    • First observedpay_lightning_nwc
    • First observedpay_with_nwc
    • First observedrequest_nip90_job
    • First observedroute_cashu_mint

TDQS

B3.3/5.0

Scored across 10 tools

Disambiguation2/5

pay_lightning_nwc and pay_with_nwc are exact aliases with identical descriptions, making them indistinguishable and creating a clear selection problem. Other tools are mostly distinct, but this duplicate payment pair is a serious coherence issue.

Naming Consistency5/5

All tool names follow a consistent lowercase snake_case verb-first pattern, such as check_trust_score, pay_cashu_nutzap, route_cashu_mint, and get_agent_identity. Even the alias pay_with_nwc fits the same verb-first convention, so there are no mixed naming styles.

Tool Count4/5

Ten tools is within the ideal range for a domain-focused server covering identity, payments, trust, mint routing, and telemetry. However, pay_with_nwc is redundant with pay_lightning_nwc, so not every tool earns its place.

Completeness3/5

The server covers core operations for Nostr identity, trust scoring, Lightning and Cashu payments, mint auditing/routing, guardrails, telemetry, and DVM job dispatch. Notable gaps include the lack of guardrail update/set operations and no obvious endpoint for fetching DVM job results or status, leaving potential dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers