Use this file to discover all available pages before exploring further.
CVM (ContextVM) is MCP (Model Context Protocol) running over Nostr relays instead of HTTP. It exposes 21 structured tools for querying NIP-66 relay monitoring data. Your client sends a tool call as a Nostr event; the rstate server processes it and returns the result as another Nostr event. No IP addresses are exposed, no API keys are needed, and the entire stack is self-hostable.
Standard MCP runs over HTTP. CVM replaces the HTTP transport with Nostr relay transport:
Your client connects to one or more CVM relay(s) using a Nostr keypair
The client sends a tool call as a signed Nostr event addressed to the server’s pubkey
The rstate server receives the event, processes the tool call, and publishes the response as a Nostr event
Your client receives the response event and extracts the tool output
The result is a fully functional MCP server accessible over the Nostr network. Communication is identified by Nostr pubkeys rather than IP addresses, which means no client IP is exposed to the server.
Once configured, Claude can answer natural language questions about relay data by calling the appropriate CVM tools automatically:
Find all relays that support NIP-42 authenticationList the top 10 most reliable relays by uptimeShow me relays within 100km of San FranciscoCompare relay.damus.io and relay.nostr.bandFind all relays running strfry softwareShow me offline relays that were recently seen
CVM supports optional micro-payments via the CEP-8 pricing protocol. Most tools are free. When a CVM server has payment gating enabled:
The client calls a tool
The server returns a payment request with amount, currency, and payment method
The client pays via L402 (Lightning) or P2PK (Cashu)
The server processes the tool call after payment confirmation
The public nostr.watch CVM does not currently charge for basic queries. When self-hosting, you control pricing via a PRICING_YAML configuration file. Free tools do not need entries in the pricing file.
Only entries with amount > 0 in the pricing file activate payment gating. All other tools remain free regardless of whether a pricing file is present.
Running your own rstate instance gives you full sovereignty — you ingest raw NIP-66 events directly from Nostr relays and no trust in nostr.watch is required.Prerequisites: Node.js >= 20 and a Nostr private key (nsec) for the server identity.
Keep CVM_SERVER_NSEC private. It is the server’s identity key — compromise means someone can impersonate your instance. Use allowedPubkeys to restrict access if running a private instance.
CVM operates on a verify-or-self-host model. When using the public nostr.watch CVM, you trust that the rstate instance is honestly aggregating NIP-66 data. The aggregation logic is open source, but you cannot independently verify the results without running your own instance. Self-hosting eliminates this trust requirement entirely.