ContextVM is a decentralized protocol that enables Model Context Protocol (MCP) servers and clients to communicate over the Nostr network. It uses Nostr as a secure, distributed transport layer—leveraging cryptographic keys for identity, decentralized discovery, and Bitcoin-powered micropayments. Rather than relying on centralized infrastructure like domains, OAuth, or cloud hosting, ContextVM allows anyone to run or access services using only Nostr and a internet-connected device. It transforms any computational service into a discoverable, accessible, and monetizable resource—while preserving privacy, security, and user sovereignty.
Public Key
npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm Profile Code
nprofile1qqsxkduqau5h9eeaxu9cfgl9rea2nt35haqjjwxul0vuta3myg2pdjqpzemhxue69uhhyetvv9ujuurjd9kkzmpwdejhgqg4waehxw309aex2mrp0yhxummnw3ezumn9ws3t9rz3
Show more details
Published at
2025-12-25T15:15:38Z Event JSON
{
"id": "f5cb3adc527357ed59d75ad131f56f6291d91b07a81f100d22bb404aee73d297" ,
"pubkey": "6b3780ef2972e73d370b84a3e51e7aa9ae34bf412938dcfbd9c5f63b221416c8" ,
"created_at": 1766675738 ,
"kind": 0 ,
"tags": [],
"content": "{\"name\":\"ContextVM\",\"about\":\"ContextVM is a decentralized protocol that enables Model Context Protocol (MCP) servers and clients to communicate over the Nostr network. It uses Nostr as a secure, distributed transport layer—leveraging cryptographic keys for identity, decentralized discovery, and Bitcoin-powered micropayments.\\n\\nRather than relying on centralized infrastructure like domains, OAuth, or cloud hosting, ContextVM allows anyone to run or access services using only Nostr and a internet-connected device. It transforms any computational service into a discoverable, accessible, and monetizable resource—while preserving privacy, security, and user sovereignty.\",\"picture\":\"https://image.nostr.build/d7356fafce4dbac8436355e9eb1f77156d3429c47c96be31d18c9ff29f7669fb.jpg\",\"display_name\":\"ContextVM\",\"displayName\":\"ContextVM\",\"website\":\"https://contextvm.org/\",\"lud16\":\"[email protected] \",\"banner\":\"https://image.nostr.build/98c21918d6a4d4c26b9bfb98db71d988069b291e40f7440c030c7c766403808d.jpg\",\"nip05\":\"[email protected] \"}" ,
"sig": "62b079bbed54fcf3bb8d7957f3b2bb3b4141013658cee13f60e363d98be7c26f516eae1f5d20aa08b53c63e87801db5e3d050d32f92b293ec7bb9632307b22fc"
}
Last Notes npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM That's great! Looking forward to keep testing. Btw TEP-8 is CEP-8 (the cvm payments standard), or something else? npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM The ContextVM website now has agent-native payments, building on the recently updated CEP-8. 🦾🤖 The CEP-8 update brought explicit gating to the payment lifecycle, the same approach that other protocols like 402 or mpp are following, and that small change is what makes agents able to pay natively. That's the building block for an economy where agents pay agents and tools over Nostr. https://npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm.blossom.band/1bdc1e72da09d65a1db24163c65654fafd3ae63a1f78b2eac9f2783ca5dba891.mp4 To make that loop real, the ContextVM site got a built-in Lightning wallet. Connect it once with a NWC string and it is ready across the app. You can check your balance, generate a QR to receive, or paste a bolt11 invoice to pay. https://npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm.blossom.band/aa14f4b71d6bfbd636be5dc28d23850d8e37cf927a0d66facb419e84ae9017ac.png The wallet also shows up exactly where it counts: any Lightning payment card gets a Pay button, and after paying, you get a Retry call button that resumes the tool. https://npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm.blossom.band/9e8abd52203ad0b134c626cad68d1aab2cd7654b82368aad4ecbe07bc40f995c.png Agents that can spend and earn over Lightning, native to Nostr. Permissionless, seamless. Try it: https://contextvm.org/ #Nostr #Lightning #Bitcoin #AI #Agents #NIP47 npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM Hey everyone! Just introducing the draft for a new CEP: Server Redirection. The idea behind this CEP is to specify how a server can signal a redirection to a client. The motivation is to provide a primitive that allows servers to perform load balancing or rotate addresses for subsequent requests for privacy reasons. https://github.com/ContextVM/contextvm-docs/pull/47 npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM What is ContextVM? A transport layer for MCP over the Nostr network. An open communication network built on cryptographic, censorship-resistant, and permissionless foundations! https://contextvm.org/ npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM ContextVM Rust SDK 0.2.0 is out! 🚀 MCP over Nostr just got a whole lot more capable. Three big things landed today: 📦 Oversized transfers (CEP-22) Until now, messages were capped by what fits in a single Nostr event (around 65 KB). Larger payloads, like big tool results or resources, now split into chunks automatically, get verified end-to-end, and reassemble on the other side. Servers only do this when the client supports it, so older clients keep working. 🌊 Open-ended streaming (CEP-41) A server tool can now send a live stream of data back to the client while a request is still running, think progress, partial results, or log lines. The client reads it as an async stream, and the final normal response still arrives at the end. Streaming is negotiated automatically with clients that support it. 🌍 UniFFI bindings, write ContextVM in your language The SDK now ships bindings for Python, Swift, Kotlin, and C/C++, all built on the same Rust core. That means native support on mobile, backend services, and scripting runtimes. There's a runnable examples/python/ folder to get you started. Plus: smarter relay resolution (CEP-17), richer server announcements (CEP-6), optional human-friendly server profiles (CEP-23), progress-aware request timeouts, and an MSRV bump to 1.88. Huge thanks to @npub1alj…g9jp for the job on uniffi bindings, and @npub1knd…cqxa for all the hard hork! Ready to build on this? Read the docs and ship your first ContextVM server or client today: https://docs.contextvm.org/ npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM You can also use the SkateSpots server through the https://contextvm.org/chat interface 🛹 https://npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm.blossom.band/10b88fcaca19c3f79a28f7205b258a1305f0deed09f82f2361cb462d5068d290.mp4 #nevent1q…lu7w npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM CEP-8 can now talk directly to AI agents. 🧵 With the just released ContextVM SDK 0.13.0 we're shipping full support for a new CEP-8 mode called Explicit Payment Gating. Why we built it: CEP-8 already let servers charge for their tools and capabilities, but only "behind the scenes", payment was handled silently by the transport layer. That's great for a wallet app. It's not great for an AI agent that actually needs to decide whether a call is worth paying for. The fix: Agents reason through normal MCP responses, so we turned payment into one. Now a paid call returns a clean "Payment Required" error (-32042) that carries human-readable instructions and one or more payment options. Feed that straight to your LLM, it reads the instruction, pays the invoice its own way, and retries the same call. No special SDK knowledge required, and it works with any MCP-compatible agent runtime. This design is based on the MPP spec and inspired by HTTP's 402 Payment Required status code, a long-reserved error code for exactly this idea, now adapted for JSON-RPC and AI agents. What it unlocks: - AI agents that natively understand and handle paid MCP capabilities - Per-call budgets and consent at the agent layer - Payment as a first-class decision: pay, decline, or escalate to a human Under the hood, each successful payment grants a single-use authorization that's matched to the exact same request on retry, and a "Payment Pending" error (-32043) keeps verification from spamming invoices. Fully backward compatible, the existing silent "transparent" flow stays the default, so nothing breaks for current users. Try it: Upgrade to @contextvm/sdk 0.13.0 and turn on a paid capability with explicit gating. Docs: CEP-8 spec — https://docs.contextvm.org/reference/ceps/cep-8/ Explicit gating guide — https://docs.contextvm.org/how-to/payments/explicit-gating/ API reference — https://docs.contextvm.org/reference/ts-sdk/payments/explicit-gating/ Go build something agents can pay for. 🔌 #ContextVM #MCP #AI #Bitcoin #Lightning #Nostr npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM This is also a great example of what CVM allows, a full CVM server running in a browser tab! 🤯 #nevent1q…7w22 npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM ContextVM makes it easier to deploy your self-hosted infrastructure — No domains, no OAuth, no port forwarding! npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM @npub182j…m4rf npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM This is another brief demo of our latest chat interface at https://contextvm.org/chat. This time, we're connecting to the https://wavefunc.live/ metadata server, which gives you useful tools for searching music metadata using the MusicBrainz API. We searched for Nina Simone. Pretty cool, to be honest. This is a great music research tool. https://npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm.blossom.band/8d00a1dd988a85bc4aa8d247707bde59a3e5c43e6ba55cf1e047f68e3d71c4ff.mp4 If you want to test this, just open https://contextvm.org/s/bb0707242a17a4be881919b3dcfea63f42aacedc3ff898a66be30af195ff32b2 , connect to the server and navigate to the chat route npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM ContextVM makes it easier to deploy your self-hosted infrastructure. No domains, no OAuth, no port forwarding! npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM New version of the ts-sdk 0.12.0 🗜 For this version, we forked the official MCP ts-sdk and stripped out all unnecessary dependencies for our project. The official SDK comes with many dependencies related to HTTP transports and other unnecessary features for CVM. We simply removed all that fat to reduce the number of dependencies (from 17 down to just 5). This is especially beneficial for lightweight and web clients. If you want to read more about this fork and what specifically was removed check https://github.com/ContextVM/mcp-sdk/tree/v1.x There are no other changes besides this. Hope you enjoy the slimmer builds! 🗜 npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM Are you providing any service over MCP? Learn more about ContextVM, and see for yourself how easy it is! npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM Very pumped to introduce the LLM chat on the contextvm.org website!🚀 https://contextvm.org/chat It's been long overdue, but we've just released the new version of our site, which now includes a chat interface for working with LLMs. This chat connects directly to MCP servers exposed through CVM, making it one of the most comprehensive demos of what CVM enables. You can BYOK or use the free models, though be aware the free models are somewhat unstable, and we highly recommend plugging in your own key or connecting to your local Ollama instance. Any API with an OpenAI-compatible interface will work. You can test public servers or connect to your own private CVM servers. Here are some demos: - Using Wolfram alpha and open meteo to calculate the distance between Madrid and Barcelona, and the weather forecast: https://video.nostr.build/d2d61f6b9d548ed1d3fc643363d8a3f1951687d636465e99fe19ea63c6a6d502.webm - Using Tenor api to find the funniest cat GIFs https://video.nostr.build/0a08fb465ccbceccb85b8eb99196a1eedd782225d9344de00bc3f8697e3de860.webm - Using Relatr to search for Jack and explain why the score https://video.nostr.build/07167a800b190cd408ba2f39d661a8332677a12a217acee39efb4e00d013f678.webm This is the agentic web in action. Hope you like this update, and please report any issues if you find them. Huge thanks to @npub10hx…wtt6 for moving this forward. npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM This is awesome!🔥 npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM The implementation of CEP‑15 (Common Tool Schemas) has been merged into the https://contextvm.org website. This allows servers to define their categories and common tool hashes so they can be discovered and grouped accordingly. The result is a marketplace‑style UX where multiple servers can expose the same tools or use the same categories. Server operators can position their services within these common categories or tools, and users can navigate the marketplace to find the services that best suit their needs. https://image.nostr.build/1b1736568c43a2468865a43bcaacc52fa963fbef5a3ede9a300f6d138ca29c8e.png https://image.nostr.build/d7195d9f9d77be064fb5a1a4148134c6f03bcfd637d1a0b560788a783fe14faa.png https://image.nostr.build/024dcd7e3d2599fb182cf1bbec630abd88eebceafaf6eff48aa25ad06f9cc15a.png npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM This is very cool. Very innovative way to use ContextVM and it's latest updates 👀 #nevent1q…kvhm npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM New issue of the CVM World! This time the #8 issue! In today's update we cover the latest news from ContextVM. In particular, we discuss the first official release of our new Rust SDK, which brings CVM to native development. We also cover a bunch of new CEPs being merged. Read it in substack: https://contextvm.substack.com/p/the-rust-sdk-the-contextvm-world Or nostr: https://nostr.at/naddr1qvzqqqr4gupzq6ehsrhjjuh885mshp9ru50842dwxjl5z2fcmnaan30k8v3pg9kgqythwumn8ghj7un9d3shjtnswf5k6ctv9ehx2ap0qy2hwumn8ghj7un9d3shjtnyv9kh2uewd9hj7qqxvdmx6aed8qpd802z Please if you like what we are doing consider subscribe to the newsletter in Substack as that help us to reach more people and encourage us to keep pushing 💛 https://contextvm.substack.com #naddr1qv…802z npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM The list on contextvm.org isn't manually filtered, it just pulls from whatever relays are configured in the web app. You can see and change those relays by clicking the relay icon in the bottom left corner of the site. https://image.nostr.build/5bfd4b857ddb75bab3255f84f2ab6df0f683b7490bcdd78d1592be560d04d47e.png So if you announce your server to the same relays that the site is watching, it'll show up automatically. If you're announcing to different relays, it won't appear unless you add those relays to the site's configuration. Hope this clears your doubt, don’t hesitate if you need more clarification. npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM Yes! LG 🔥 npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM They are self announced in relays. It was one of the first extensions to the protocol :) https://docs.contextvm.org/spec/ceps/cep-6/ npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM Yes! 🚀 npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM CEP‑41 has finally merged, bringing the ability to create open‑ended streams. These streams are intended for servers that stream data to clients, such as events, fragments, or real‑time data. This opens the door to many new use cases. For example, it enables a CVM server to proxy a WebSocket server, like a Nostr relay 👀. We can imagine numerous interesting applications: AI/LLM streaming APIs, chat servers, real‑time feeds, or any other system that relies on data streaming. You can read the specification on our docs page https://docs.contextvm.org/spec/ceps/cep-41/ A reference implementation is also available in the TypeScript SDK 0.11.x family. Happy building! 🚀🚀 npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM Do you know that now we also have a Rust SDK? 🦀😎 #nevent1q…8fet npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM This is an amazing idea, CVM being used to run state machines 🤌 #nevent1q…ysc8 npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM Thanks 💛 It’s still early days, we have a lot of work ahead introducing the other CEPs, for payments and so on. But this is a great foundation: all the core specs are in place, together with encryption and stateless operations. npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM 🔥 Great news! 🔥 We’ve just released the Rust SDK for CVM: https://github.com/ContextVM/rs-sdk This is a big step forward for the ecosystem. Until now, the TypeScript SDK, our reference implementation, has been the only one available. With Rust, CVM now expands into native development, opening the door to new use cases, better performance, and future bindings for other languages. The Rust SDK follows the same architectural principles as the TypeScript SDK. It builds on the underlying RMCP SDK for protocol compliance and adds a Nostr transport on top. The 0.1.x release lands with the core spec in place and support for CEP‑4 Encryption, CEP‑6 Server Announcements, CEP‑19 Ephemeral Gift Wraps, and CEP‑35 Stateless Session Discovery and Capability Learning. This release also sharpens the SDK strategy: TypeScript remains the reference implementation for web and desktop, while Rust becomes the foundation for native development and future FFI bindings. The repository already includes docs and examples, with skills, and more documentation coming soon to docs.contextvm.org. It also ships with a strong test suite and interoperability coverage between the TypeScript and Rust SDKs, so it already feels robust. That said, this is still a beta release, and we’ll keep testing and pushing it further. You can follow the current parity status between both SDKs here: https://github.com/ContextVM/rs-sdk/issues/64 🧑💻 Install it with `cargo add contextvm-sdk`. Huge shout out to our students from Summer of Bitcoin, @npub1knd…cqxa who leaded the development of this release, and @npub10hx…wtt6 , also to @npub1zc6…25sl for putting together the very first version. We’re grateful for the community effort behind this 🫶 We hope this SDK unlocks a new wave of development across the CVM ecosystem. Now let’s keep building 🚀🚀 Repo docs: https://github.com/ContextVM/rs-sdk/tree/main/docs Repo examples: https://github.com/ContextVM/rs-sdk/tree/main/examples npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM Stats powred by Nanalytics by @npub1jss…fmzy #nevent1q…vggc npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM Glad to see nanalytics working great! npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM More and more MCP servers are leveraging ContextVM. Check them out on our website: https://contextvm.org/servers npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM CEP-8 is the ContextVM standard for decentralized pricing and processing payments for capabilities. When a client requests a capability, an MCP server can send back a notification providing all the information needed for a payment to occur. Specifically, the server advertises the price requested for its capabilities and the types of payment accepted (known as PMI). Let’s examine it from a more technical perspective: 1. Capability Request: The client requests a capability (such as a tool execution) without prior payment. 2. Notification (payment_required): If the server requires payment, it pauses the request and emits a notifications/payment_required event containing the numeric amount, the pmi, and a pay_req opaque string (the actual invoice or payment data). 3. Payment Processing: The client parses the pay_req according to the specified PMI rule set and executes the payment. 4. Notification (payment_accepted or payment_rejected): The server verifies the settlement. If successful, it emits notifications/payment_accepted. If the payment is invalid or insufficient, it emits notifications/payment_rejected. 5. Capability Fulfillment: After a successful payment_accepted notification, the server processes the original request and returns the result to the client. The beauty of CEP-8 is that it does not mandate a specific payment method. Any server operator can decide and advertise the preferred rail for the payment to occur. There is also an alternative payment lifecycle for bearer assets that reduces round trips. We are also working on updates to make this more suitable for LLM agents. If you want to learn more, visit: https://docs.contextvm.org/spec/ceps/cep-8/ npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM We've just merged CEP‑24 🚀 This standardizes how NIP‑22 can be used to leave reviews attached to server announcements (https://docs.contextvm.org/spec/ceps/cep-24/). This provides a simple way for users to publish their experiences with the servers. Together with CEP‑23, which standardizes how servers can leverage profile‑metadata events (kind 0) and notes (kind 1), the circle is now complete. Server operators can now maintain a social presence interoperable with any Nostr client, and they can receive and answer reviews directly on their servers. This makes the ecosystem more participatory and helps operators and users stay in contact. In addition, we have deployed an implementation of reviews on the https://contextvm.org website. Let's keep building! 🚀🚀 https://image.nostr.build/c09a054a9e53af2578548677236206ad54297e216259370d77dd0cede4a28369.png npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM CEP-23 is now merged, and TS SDK 0.9.0 ships support for publishing server profile metadata (kind:0) directly from the Nostr server transport. This standardizes a pattern we were already seeing in the wild: servers using the same pubkey not only for protocol operations, but also for profile metadata and public social communication on Nostr. With CEP-23, servers can optionally publish kind:0 for human-friendly identity metadata and `kind:1` notes for updates, changelogs, and operator communication, without changing the existing discovery model. `kind:11316` remains the machine-readable capability surface. `kind:0` and `kind:1` add the social layer. A small addition, but an important step toward making ContextVM servers more legible, interoperable, and present across the wider Nostr ecosystem. CEP-23 + TS SDK 0.9.0 are live. Skills are updated as well. Happy building https://docs.contextvm.org/spec/ceps/cep-23/ npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM It’s up to the imagination. That is a right association, tho. It also references the DVM standard, where “VM” stands for “Vending Machine” npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM At ContextVM we chose Nostr as a communication layer because its simple, permissionless, and decentralized. We think it’s one of the best possible technologies for AI agents to leverage MCPs. npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM In just one week since the start of the Summer of Bitcoin program, interns working on ContextVM have already opened and merged several PRs in different CVM project. Our students are really nailing it! 🫶 npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM ContextVM TS SDK 0.8.0 is live, with CEP‑22 oversized‑payload transfer. Large payload delivery over Nostr relays is now much more robust. We even stress‑tested it by pushing a 1.5 MB image over regular relays, partly to check robustness and partly for fun :) It worked, but keep in mind that this is not a general‑purpose file transfer protocol If you run a server or client on the TS SDK, update to 0.8.0. The CVMI CLI was also bumped to include it. We keep pushing boundaries 🚀 If you are curious about the underlying specification you can read it here: https://docs.contextvm.org/spec/ceps/cep-22/ npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM Communications over the internet has been centralizing more and more since its very beginning, choked by permissioned control points. The risk we foresee is that the agentic web can fall in the same trap. ContextVM actively breaks this monopoly by routing the Model Context Protocol (MCP) over Nostr's decentralized relay network, leveraging censorship-resistant public keys that no single entity can shut down or revoke. npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM Introducing CEP‑22 (WIP). This new spec adds a simple way to transport ContextVM messages that exceed the relay size limit. It proposes fragmenting a single payload into chunks across multiple events and reassembling it once the receiver has collected all the chunks. The design stays narrow, just enough to handle larger tool results while preserving the current workflow. See the draft spec: https://github.com/ContextVM/contextvm-docs/blob/feat/larger-than-relays/src/content/docs/spec/ceps/cep-22.md npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM Curious about which services are already leveraging ContextVM? On our website you can find a list of public server to which your AI agent can connect through our infrastructure! 👇🏻 https://contextvm.org/servers npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM Thanks 💛 npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM In today’s update we cover the latest news from ContextVM. In particular, we have been chosen to mentor the next generation of open-source contributors through the Summer of Bitcoin internship program 🚀 We also cover our latest modification to the CVM website and the spam attack that recently hit our relays. Read the full article to learn everything going on in the CVM World! https://contextvm.substack.com/p/mentoring-the-next-generation-the #naddr1qv…gz9c npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM We bring amazing news! ContextVM has been invited to participate in the Summer of Bitcoin program. https://www.summerofbitcoin.org/ This is a global, online summer internship program focused on introducing university students to Bitcoin, Nostr, and open-source development and design. We’re very glad to have been chosen as mentors. We’d also be grateful to hear your project ideas for a student to work on for ContextVM during the summer. Please share any you have. What would you like to see in ContextVM? npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM 🚀 https://contextvm.org/s/nprofile1qyd8wumn8ghj7un9d3shjtnrdah8getcw3mx6tn0wfnj7qpqvk3nfvp0tyfu7tqlwvmkq3xlzyj5zen8de75n8gvxn3v5yx08ctq06sg4p #nevent1q…rfna npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM Setting up an MCP server to be used by AI agents requires a lot of skills, managing domains, OAuth, port forwarding. ContextVM changes the game, reducing the burden for running a remote MCP server! npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM Thanks for the help reposting this; we got some new subs :) really appreciate it. #nevent1q…hhcm npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM Just released a new version of our TS SDK (0.7.6). This update adds support for dynamic authorization on the server through two new optional callbacks: `isPubkeyAllowed` for runtime pubkey validation and `isCapabilityExcluded` for dynamic capability exclusion from the allowed pubkeys check. These async callbacks complement the existing static allowlist and exclusion configurations, enabling more flexible authorization policies. We have also renamed the `isPublicServer` option to `isAnnouncedServer` to better reflect its purpose of publishing public announcement events on Nostr for relay‑based discovery. The old option is deprecated but still supported for backward compatibility. Docs and skills updated! Happy building! 🦾 npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM GM! As you know, we are trying to get the word out on ContextVM to the broader internet by launching our Substack! If you are already on the platform feel free to subscribe! We want the project to grow outside of our niche and we need your help to bootstrap the publication! Here is the link: https://contextvm.substack.com/ npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM Just another quick demo. Same thing, but this time, instead of using the CVMI `call` command to access the server, we are connecting to the server as if it were a locally running MCP. This is possible thanks to the CVMI `use` command, which allows you to use CVM servers anywhere you can configure MCP servers. https://mibo.eu.nostria.app/3207606b2502451db13fcc29fe75558194de812bfc33fe1034a04b43961fbabe.mp4 #nevent1q…wfsk npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM Just a little but powerful update to our site. Since we merged CEP‑17 for server‑relay announcements, we have updated our site to accept npubs and nprofiles for servers. You can now use these identifiers in the URL or in the search bar. It will resolve relays for the server in this order: 1. Relay hints when the identifiers are nprofiles 2. Server relays (from 10 002 events) 3. Hard‑coded relays, if none of the previous ones exist This really improves discoverability and strengthens decentralization capabilities. We also added an extra goodie: NIP‑05 resolution, so if your server pubkey is associated with a NIP-05 address the site will resolve it. For example, you can use https://contextvm.org/s/[email protected] or, since the host domain matches the NIP‑05 domain, you can even omit the domain part: https://contextvm.org/s/relatr Cool right? 😎 npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM Just testing this new 'Am I Exposed?' public server someone made online 👀 This is a Bitcoin on‑chain privacy scanner. We wanted to test it to see how it works. This is a short demo of using it together with the CVMI call command. It’s quite straightforward; we didn’t need to touch any other configuration files, just add an alias. The complete process and demo are in this video. https://mibo.eu.nostria.app/e99accc3ff571f264dcdd73620ddf46ef94f55e018762c470d3e7b270a274a9a.mp4 #nevent1q…84y4 npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM There is loads of garbage, that's why we hardened the writing policies, also connections openning too many reqs concurrently. It is working great so far npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM Basically we replaced the relay we were using with Strfry and hardened some writing rules. Strfry also has some sane abuse protection out of the box. npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM Lazy yet productive Saturday. Stabilized relays from the spam attack and forked Strfry during the process. Contributed to https://ants.sh by @npub1der…xzpc to add relatr for search capabilities. Touched grass npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM 🚀 #nevent1q…3u3s npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM This should be fixed now 🫡 As a side effect, we forked Strfry to add a convenient way to deploy a relay and some write policies to harden it for CVM usage. https://github.com/ContextVM-org/strfry-cvm #nevent1q…0mym npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM Spam attack in our relays. Fixing now npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM A simple, but powerful concept #naddr1qv…eanj npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM Hmm, what is your Node version? Some older versions might not have ws defined globally. In any case, we just pushed a new version of cvmi that polyfills this. Please test 0.2.6 and let us know, your feedback will be greatly appreciated 🙏 npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM Use it from contextvm.org or through the CVMI CLI. 1. Configure an alias for easy calling: `npx cvmi config add ots @nprofile…5kv0` 2. OTS an event: `npx cvmi call ots ots_event target=<event-id‑nevent‑naddr>` 3. Verify the attestation and get its state: `npx cvmi call ots verify_ots target=<event-id‑nevent‑naddr>` If you want, you can configure it as an MCP in your preferred agentic framework; just set `npx cvmi use @nprofile…5kv0` in your MCP configuration. #nevent1q…6c2m npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM 🕰 New public server available! 🕰 This is an OTS client that lets you easily Open Time Stamp any Nostr event. The usage is straightforward: two tools, 'ots_event' to create an attestation for an event, and 'verify_ots', which lets you verify the OTS attestation and its state in the time chain. With this server, you or your agents can easily OTS any Nostr event. Here’s a brief demo: https://video.nostr.build/74e0a7eaebda78e3ae27c48b53adfbdac71efa2da606fcb665fa496460aa8cfb.webm The project’s code is open source, and you can run your own instance if you wish. By default it uses public Bitcoin nodes to verify the attestations, so you don’t need to run your own node. https://github.com/ContextVM-org/ots-cvm Server page: https://www.contextvm.org/s/e1c1c32729cbd542c9b9ce7ee6e421c434e07835228020c4f57140782f02496a You can use this service for free, but public OTS servers need to cover operating costs. If you’d like to donate, please refer to opentimestamps.org. npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM 🌍 New issue of the ContextVM world newsletter 🌍 In today’s update we cover CEP‑17, the latest specification change to the CVM protocol. This change allows MCP servers to announce the relays for establishing connections, making it easier for clients to discover them. We also discuss new CVMI capabilities and other news from the ecosystem, plus demos and a new Rust SDK that is currently being built. Hope you enjoy it! Don’t miss any issue, subscribe to our Substack. https://contextvm.substack.com/ #naddr1qv…z2d5 npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM Make your MCPs over Nostr, composable, token efficient, easy 🚀 #naddr1qv…eanj #mcp npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM LG! 🚀 npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM We'll write a spec draft soon so we can move forward with that :) npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM https://image.nostr.build/19f28ef0527a534876244ffd331799af566c0a965f04e07f1af7ae321cc958b5.png npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM The cool part about the demo, ahead of the reduction in token usage compared to building this with the MCP interface, is the progressive disclosure. The LLM didn’t know anything about Earthly, Wolfram, or Relatr, and it discovered tools and usage as needed. No extra tool schemas were loaded unnecessarily, no bloated context window, just organic discovery and usage. #nevent1q…4f6s npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM @npub182j…m4rf @npub1jss…fmzy npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM We’re thrilled to roll out CVMI CLI 0.2.x, adding two powerful commands: `call` and `discover`. `call` lets you invoke CVM servers straight from the command line, perfect for debugging or plugging into agents. No MCP config or schema loading needed; responses are cleaned to save tokens. Save servers with aliases and run them like `npx cvmi call relatr`. `discover` query relay announcements to list available tools, just run `npx cvmi discover`. Demo: query Earthly and Wolfram for the Eiffel Tower’s address and height https://video.nostr.build/14f2338be8a83b3e489233fbfcc359956eabb45d2ffee88417c72e1a0aaf7b4f.webm Get Sovereign Engineering pubkey using Relatr. https://video.nostr.build/e6560296c095847b5e5c20ea0d053f3c74bde4145f0ebe1f2bfd0a30721f85cf.webm These upgrades make CVM servers far easier to use and compose, cut token costs versus MCP, and give developers a simple way to debug, script, or integrate CVM services from the command line. Some screenshots of this new capabilities: https://image.nostr.build/9229de75630bcec299836fd1b77dded7809b3c31ba3784f7f7d4b1b434a7203d.png https://image.nostr.build/afae05aeb9be14f2872f11142f957530dff904f14e8697fd136b3de994236079.png https://image.nostr.build/afae05aeb9be14f2872f11142f957530dff904f14e8697fd136b3de994236079.png npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM Just wow! This is seriously cool. I think you did the first integration of chat with CVM tools on the web to date. Really awesome! npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM 🚀 CEP-17 is now merged into ContextVM, and it is available in the ts SDK from v0.7.x. https://docs.contextvm.org/spec/ceps/cep-17/ This is a meaningful step forward for resilience. With CEP-17, servers can publish the relay list they use following NIP-65, and clients can resolve connection paths more intelligently: first from explicit configuration, then from relay hints embedded in `nprofile`, and then if nothing is define from relay list discovery. That makes connectivity more robust by default, reduces dependence on central points of failure, and avoids hardcoded relays in normal client setup. It also makes client configuration simpler. In many cases, you can now just pass an `nprofile` string and clients will use its relay hints directly; if those are not available, it can fall back to CEP-17 discovery through NIP-65 relay-list metadata. The reference implementation is already in the SDK, the docs and skills have been updated, and contextvm.org now surfaces these new `nprofile` identifiers as well. Small change in surface, big improvement in how reliably clients can find and reach servers across a more sovereign network 🚀 npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM We’re so back. DNS problems have been resolved, sites and relays are reachable again 🚀 #nevent1q…my5u npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM We've been having problems with DNS and registrars, which is why our ContextVM websites are down. We have a pending transfer that should be resolved soon. In the meantime, we’ve deployed the main site and documentation on GitHub Pages as a backup alternative. The links are: - https://contextvm.github.io/contextvm-site/ - https://contextvm.github.io/contextvm-docs/ Sorry for the inconvenience. CVM servers are still running, and clients can still connect using any relay, there’s no disruption there 🦾 npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM Nostr == WS == CVM. Connecting to servers, calling tools, etc, everything has worked over WebSockets since day one with ContextVM 🚀 #nevent1q…xla3 npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM A new issue of our biweekly newsletter is out! 🚀 "Ephemeral Is Better — The ContextVM World #3" Available in nostr and substack: https://contextvm.substack.com/p/ephemeral-is-better-the-contextvm #naddr1qv…8e0w npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM Continuing with NIPs, we have just added a pr for CVM to the NIPs repository. We wrote this NIP to describe the conventions for transporting Model Context Protocol (MCP) messages over Nostr. We deliberately kept the NIP thin on details that already live in the full CVM spec; it exists to make CVM discoverable in the Nostr ecosystem and to show that CVM is just Nostr, using the same primitives any Nostr app uses. https://github.com/nostr-protocol/nips/pull/2246 npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM We just opened a PR in the NIPs repo that includes this convention for ephemeral gift wraps. Perhaps other developers will find it a valuable building block https://github.com/nostr-protocol/nips/pull/2245 #nevent1q…c6mq npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM Ephemeral giftwraps improve your privacy and hygiene on relays, as nothing is persisted there. CVM messages use ephemeral events when the traffic is not encrypted, but when encrypted, they wrap the ephemeral events in a gift wrap which uses a regular kind. So even if the wrapped event is ephemeral, its envelope isn't. Ephemeral gift wraps solve this; everything is encrypted end-to-end, relays just route blindly, nothing is persisted, no collect now, decrypt later 🥷🏼 #nevent1q…e26y npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM CEP-19 is live with ephemeral gift wraps 🚀 In plain terms, you can now send end-to-end encrypted MCP messages that do not have to be stored on relays. This is a significant upgrade for privacy, as your messages can travel through public infrastructure without becoming permanent data. The kind used by CVM is ephemeral (25910), and when you use encryption, this ephemeral kind is gift-wrapped (NIP-59) in a regular event kind that is persistent on relays (1059). With this update, servers and clients can use a new kind for ephemeral gift wraps (21059). It is exactly the same as the regular kind (1059) but is ephemeral, so it is not stored on relays. This also improves metadata hygiene: relays can forward messages without needing to retain payloads. How it works: CEP-19 introduces an ephemeral gift-wrap kind alongside the existing persistent kind. Both sides advertise their support, and when both do, the transport prefers ephemeral wrapping while maintaining backward compatibility with older clients. Configuration in the SDK: This feature is available from version v0.6.0. Just set the transport’s `GiftWrapMode` option to `EPHEMERAL` to always use ephemeral gift wraps, `PERSISTENT` to force legacy behavior, or `OPTIONAL` to negotiate ephemeral wrapping when supported. The default remains compatible with existing relays and clients, making this an opt-in privacy upgrade without being a breaking change. npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM Hey Nostr! We're excited to share that we're working on getting more eyes on ContextVM and its development. We just published our first post on Hacker News. If you're on the platform, we'd love for you to check it out, share your thoughts, or help spread the word. Every bit helps, so please join us in growing ContextVM! 🚀 https://news.ycombinator.com/item?id=47151294 npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM Looks dope! npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM Now that payments are in place, we are going to work on: - CEP-19 for ephemeral gift wraps: https://github.com/ContextVM/contextvm-docs/issues/19, and - CEP-17 for servers relay list: https://github.com/ContextVM/contextvm-docs/issues/17. Both CEPs are quite minimal but yet beneficial for the ecosystem. CEP-19 provides better privacy guarantees, as servers and clients will be able to use ephemeral gift wraps for encrypted communications. Currently, they use regular gift wraps, which are regular events, and even if the events inside are ephemeral, they are wrapped in a regular envelope. CEP-17 defines how servers can announce relay lists (NIP-65) to improve discoverability. Simple but powerful! LG!🚀 After this iteration we will come back to CEP-15 introducing common tool schemas, which is a bigger one https://github.com/ContextVM/contextvm-docs/issues/15 npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM We've just released a new version of our SDK, now CEP-8 implementation is now complete, end to end, we’ve added the missing piece for LLM aware spending CEP-8 gives us the wire protocol for paid MCP capabilities, servers request payment, clients settle, both sides get explicit confirmation. What was missing was a clean way to make consent programmable. This release adds a single paymentPolicy hook at the client boundary, a little yet powerful new addition. Your host environment decides whether a charge proceeds: a deterministic budget, a per-tool allowlist, a terminal prompt, or a full LLM-based policy engine. One hook, any pattern. Google's AP2 addresses a similar problem, but it's an ambitious multi-actor framework involving Shopping Agents, Credential Providers, and cryptographic Mandates passed across multiple parties, quite complex. Our take is different, CEP-8 provides the payment rails, Nostr anchors every request to a cryptographic identity at the transport level, and consent is a composable local primitive. Simpler to integrate, and versatile enough to fit whatever your host needs to do. This our take on agentic payments, simple, versatile, composable, no vendor lock ins npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM Yes! npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM After a few days experimenting and receiving feedback around CEP‑8 payments, we enhanced their SDK implementation, making payments more reliable and consistent. We’ve just released a new feature that supports additional use cases, such as servers with prepaid balances, top‑up accounts, or separate payment management. This feature lets you waive a payment via the server’s resolve price callback. With this update, payment processing is far more powerful 🚀 Docs and skills have been updated accordingly. Happy building :) https://image.nostr.build/fbd347f5e537efc79947c1d91acb930cc32ba229624ec17b3380e8be5cf6469b.png Docs: https://docs.contextvm.org/ts-sdk/payments/overview/#waiving-payment-prepaid--subscription-models Skills: npx cvmi add --skill payments, or npx skills add contextvm/cvmi --skill payments npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM We are at speed now, and you can find our latest issue of the newsletter on our Substack! https://contextvm.substack.com/p/the-contextvm-world-2 #nevent1q…rlat npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM Get it fresh in your inbox every two weeks! #nevent1q…c4ug npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM GM Nostr! Our newsletter, The ContextVM World 🌍, is now live on Substack: https://contextvm.substack.com/ While ContextVM is built on Nostr and will continue to publish natively on Nostr, our goal is to reach a larger audience outside of Nostr to have more builders leveraging our protocol! Feel free to subscribe to our Substack and to share our newsletter with the world! npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM The second issue of "The ContextVM World" is out! Hope you enjoy it 💛 #naddr1qv…vpzd npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM Let's keep building! 🚀 npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM Thanks Tim! appreciate your words 💛 npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM Thanks so much to openSats for this opportunity! We'll keep pushing the boundaries of this new paradigm 💛 #nevent1q…hxrk npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM Protocols over Platforms is the mantra at the core of CVM https://notnotp.com/notes/use-protocols-not-services/ npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM https://lemonade.contextvm.org #nevent1q…rf53 npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM These are badges are real, you can check them here as well: https://nostrsigil.com/badges/naddr1qvzqqqr48ypzpl0zzdglhjrqfsnaelea2plcaxc4gw8nh5zqj09rl4tu66ekckxsqy28wumn8ghj7un9d3shjtnyv9kh2uewd9hsqyrvv4kk7mnpv3jj6mr9vajkuernaqgdnx #nevent1q…y4t3 npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM 🍋 Introducing Lemonade Legends, our newest teaching project that demonstrate how to use CEP-8 in a tangible and fun way! Do you want your lemonade legend badge? https://lemonade.contextvm.org This is a server that mints nostr badges with dynamic pricing: 21 sats on day 0, +21 sats each day after. A live experiment in paid capabilities, SQLite accountability, and dual APIs (humans via UI, agents via MCP). The idea behind this project was to create a new and fun educational resource for the CVM ecosystem. You can read our blog post here: https://contextvm.org/blog/lemonade-legends or in nostr. What we did for this project: ✨ Server + Svelte app, both open source ✨ Step-by-step blog post walking through the code ✨ Copy-paste ready patterns for your own paid tools Dive in → https://contextvm.org/blog/lemonade-legends Server → github.com/ContextVM/lemonade-legends Site → github.com/ContextVM/lemonade-legends-site What will you build with CEP-8? 💛 #lemonadelegends #contextvm #cep8 #nostr #bitcoin #lightning #opensource #naddr1qv…t8dw npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM Just pushed a new payment processor for our SDK based on ZAPS!⚡️ It only requires an LN address to be used, it couldn't be easier⚡⚡️ https://image.nostr.build/986e254f2b9a960f1d6080be6b74b027bafe22e6619e302fc6837bfc3c84d22c.png With this new payment processor, our SDK now supports three payment processors based on Lightning BOLT11: NWC, LNbits, and now ZAPS⚡ To use it, simply update to the latest contextvm SDK. The only consideration regarding this payment method is that ZAPS can be faked by the provider of your LN address. If you trust the provider of the configured Lightning address, there is no problem, it could even be your own node. However, if you don’t trust the provider, the ZAP receipt alone is not sufficient to prove settlement. This is not a new issue; it has been discussed and is already covered in an appendix in nip-57 Hope you enjoy!⚡️⚡️⚡️ npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM LFG! 🔥 npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm ContextVM Totally agree. This is why CVM 💛 #nevent1q…myde