<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: DataRebelHQ</title>
    <description>The latest articles on DEV Community by DataRebelHQ (@datarebelhq).</description>
    <link>https://dev.to/datarebelhq</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4185310%2Fc6c444c8-f93c-45e1-b579-a4d037700ced.png</url>
      <title>DEV Community: DataRebelHQ</title>
      <link>https://dev.to/datarebelhq</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/datarebelhq"/>
    <language>en</language>
    <item>
      <title>Microsoft Publisher is gone — here's how to rescue your .pub files before your PC forgets them</title>
      <dc:creator>DataRebelHQ</dc:creator>
      <pubDate>Fri, 16 Oct 2026 04:53:54 +0000</pubDate>
      <link>https://dev.to/datarebelhq/microsoft-publisher-is-gone-heres-how-to-rescue-your-pub-files-before-your-pc-forgets-them-3ced</link>
      <guid>https://dev.to/datarebelhq/microsoft-publisher-is-gone-heres-how-to-rescue-your-pub-files-before-your-pc-forgets-them-3ced</guid>
      <description>&lt;p&gt;Microsoft Publisher is gone.&lt;br&gt;
If you had it through Microsoft 365, access ended on or shortly after October 1, 2026, as the removal update rolled out. Support for the perpetual version ended October 13, 2026, when Office LTSC 2021 and Consumer Office 2021 reached end of support. Perpetual installs keep running, but they get no more security updates.&lt;br&gt;
Your files are not deleted. That part matters, so I want to be clear about it: your .pub files are still on your computer. What died is the reader — the program that could open them.&lt;br&gt;
I found that out the way a lot of people are finding it out now, looking at folders of old newsletters, flyers, and brochures that nothing on the machine will open properly any more.&lt;br&gt;
The official escape hatch has a catch&lt;br&gt;
Microsoft's own guidance was to convert files to PDF inside Publisher before the deadline (File → Save as → PDF), and Microsoft also offered a bulk path: a downloadable script, Convert-PubFileToPDF.ps1.&lt;br&gt;
The catch is in the script's first step: it needs a working, licensed copy of Publisher installed.&lt;br&gt;
So for Microsoft 365 users, the bulk tool dies with the access it was meant to outlive. It only serves perpetual owners while their installs last. If you already lost access, it cannot help you.&lt;br&gt;
Microsoft says the same thing on its support page, in its own way: it points users to third-party conversion tools, with a caution that such services vary in quality and capabilities, and that Microsoft provides no support for them. In writing, the vendor is handing its stranded users to the third-party market.&lt;br&gt;
The real risk isn't conversion. It's silent failure.&lt;br&gt;
I've spent time actually measuring what happens when you convert .pub files with the open tools available, and the problem isn't that conversion fails loudly. It's that it can appear to succeed while dropping things.&lt;br&gt;
In the measurements behind this post, one converter run exited successfully and produced no PDF at all for a truncated file. Another file was converted and reported fine, but the extracted text came out reordered and garbled — "Sp ot Bu the nnn y &amp;amp; E gg ns" — while looking converted. Graphics in other files exploded into hundreds of small image tiles inside the PDF: 501 images in a single one-page flyer in one case, 70 in another.&lt;br&gt;
All five test files were reported as successes by a naive conversion. Not all five were actually complete.&lt;br&gt;
That's the risk I care about. A church newsletter archive or a school flyer collection that "converts" with pages, text, or images quietly missing is worse than a file that fails openly, because you might delete the originals believing you're safe.&lt;br&gt;
The free option, stated honestly&lt;br&gt;
LibreOffice opens .pub files, and The Document Foundation has promoted that support as a rescue path. If you have one file, a working computer, and you're comfortable installing and running desktop software yourself, try that first. It's free.&lt;br&gt;
Use it with your eyes open: layout can shift, especially on graphics- and WordArt-heavy files, and you still have to check the result page by page to be sure nothing was dropped. Free and real — but it's you doing the checking.&lt;br&gt;
What I'm testing&lt;br&gt;
I build small pay-per-call tools, and I'm testing whether there's a real need for this as a service:&lt;br&gt;
Send a .pub file, get back a PDF.&lt;br&gt;
$0.10 per file, one at a time.&lt;br&gt;
$0.05 per file in batches.&lt;br&gt;
Every conversion completeness-checked before it's handed back: pages present, text present, images present, checked against the source file.&lt;br&gt;
That's a structural completeness check. It is honestly not a pixel-perfect promise. I can't promise the PDF looks pixel-identical to what Publisher would have rendered — Publisher itself no longer exists as the ground truth to compare against. What I can check, and report, is whether the pages, the words, and the images survived the conversion, and flag the files that need a closer look.&lt;br&gt;
The ask&lt;br&gt;
I'm not building this on a guess. There's a short waitlist page here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://exchangerebel.com/publisher-rescue/" rel="noopener noreferrer"&gt;https://exchangerebel.com/publisher-rescue/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It asks two questions:&lt;br&gt;
How many .pub files do you hold?&lt;br&gt;
Would you pay per file to convert them?&lt;br&gt;
There's also an optional email field if you want to hear the result, and an optional note if there's something I should know about your files.&lt;br&gt;
If enough people sign up in the next two weeks, I'll build it. If not, I won't — either way I'll post the result here. That's the deal with a test like this: the answer is the answer, and I'll share it either way.&lt;br&gt;
— DataRebel&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>discuss</category>
      <category>showdev</category>
      <category>webdev</category>
    </item>
    <item>
      <title>I Put 76 APIs Behind x402-over-MCP — and an Agent Paid for One</title>
      <dc:creator>DataRebelHQ</dc:creator>
      <pubDate>Wed, 14 Oct 2026 18:42:07 +0000</pubDate>
      <link>https://dev.to/datarebelhq/i-put-76-apis-behind-x402-over-mcp-and-an-agent-paid-for-one-4hlo</link>
      <guid>https://dev.to/datarebelhq/i-put-76-apis-behind-x402-over-mcp-and-an-agent-paid-for-one-4hlo</guid>
      <description>&lt;p&gt;AI agents are getting good at calling tools. They're still bad at paying for them.&lt;/p&gt;

&lt;p&gt;An agent can't fill in a pricing page, can't manage a subscription, and shouldn't be holding your API keys. What it &lt;em&gt;can&lt;/em&gt; do is sign a transaction. So if I want to sell data to agents — and I do — the payment primitive has to be per-call, machine-native, and settled before the data moves. That's x402: the long-dormant HTTP 402 status, revived as a protocol where the server answers an unpaid request with a payment challenge, the client pays, retries with proof, and gets the data.&lt;/p&gt;

&lt;p&gt;I'm Mo. I run ExchangeRebel: 24 pay-per-call API services — 79 paid operations over plain HTTP — covering Solana token safety scores, SEC fundamentals, FINRA short interest, ETF distributions, US macro data, UK company records, product recalls, trademark search, weather, news timelines, a stock screener, and a pile of developer utilities. Every call is priced in USDC on Solana, from $0.005 to $0.50. No accounts, no API keys, no subscriptions: the payment is the authorization.&lt;/p&gt;

&lt;p&gt;This post is about the newest front door: one remote MCP server that exposes 76 of those operations as tools, payable through the standard x402-over-MCP transport. It's live, it's listed on the Official MCP Registry and Smithery, and on October 14, 2026 it took its first settled call. Here's how it's built, what conformance actually cost, and where it honestly falls short.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem: agents don't do checkout flows
&lt;/h2&gt;

&lt;p&gt;Every monetization pattern built for humans breaks for agents. Subscriptions assume a person who logs in monthly. API keys assume a person who signs up, stores a secret, and rotates it. Prepaid balances make the seller a custodian of buyer funds — I don't want to hold anyone's money, ever.&lt;/p&gt;

&lt;p&gt;A per-call payment flips all of that. The server quotes a price &lt;em&gt;in the protocol itself&lt;/em&gt;. The client pays exactly that, once, for exactly one call. Settlement is the access control. If the payment doesn't settle, the data doesn't move — fail-closed, no exceptions, no free tier hiding anywhere.&lt;/p&gt;

&lt;h2&gt;
  
  
  The architecture: the gateway holds zero payment logic
&lt;/h2&gt;

&lt;p&gt;The MCP server lives at &lt;code&gt;https://exchangerebel.com/mcp&lt;/code&gt; — one stateless Streamable HTTP endpoint on the same worker as the rest of the fleet. Stateless matters: no sessions, no server-initiated streams, nothing to keep alive between calls.&lt;/p&gt;

&lt;p&gt;The design decision I'd make again: &lt;strong&gt;the gateway contains no payment logic of its own.&lt;/strong&gt; Each of the 24 underlying services already had a toll gate — code that builds the x402 challenge, verifies a payment, settles it, records it in a ledger, and only then serves data. Those gates had already survived two full-catalog payment sweeps over HTTP. Reimplementing settlement inside the MCP gateway would have created a 25th payment path to audit.&lt;/p&gt;

&lt;p&gt;So the gateway is a translator. An unpaid &lt;code&gt;tools/call&lt;/code&gt; gets its challenge built from the target operation's existing challenge — and the gateway proxies &lt;em&gt;nothing&lt;/em&gt; upstream, because proxying an unpaid call would be a free-data side door. A paid call has its payment payload re-expressed as the standard payment header and is proxied to the tool's own toll gate, which runs the exact code path an HTTP buyer hits: discriminate the rail, precheck, replay-check, verify, settle, record, serve. The gateway then translates the HTTP response back into a tool result and attaches the receipt.&lt;/p&gt;

&lt;p&gt;How does a gate know which rail a payment belongs to? By the transaction's fee payer. A Dexter-facilitated payment carries Dexter's fee payer (&lt;code&gt;DeXterR2kQm8AvRHnNPatWkE46TfAcMeBDjb6FySoAb8&lt;/code&gt;); a PayAI payment carries PayAI's. The gate checks Dexter first, then PayAI, then the direct rail — one discriminator, no guessing from payload shapes.&lt;/p&gt;

&lt;p&gt;Replay protection is layered the same way: each rail keeps its own settlement ledger, and the gateway adds its own serve-once marker keyed by the hash of the payment bytes, so the same payload can't be served twice through MCP either.&lt;/p&gt;

&lt;h2&gt;
  
  
  The payment flow, in MCP terms
&lt;/h2&gt;

&lt;p&gt;The x402-over-MCP transport mirrors the HTTP flow, just moved into &lt;code&gt;_meta&lt;/code&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The client calls a tool with no payment. The server returns a tool result with &lt;code&gt;isError: true&lt;/code&gt; carrying the &lt;strong&gt;PaymentRequired&lt;/strong&gt; payload — price, asset, network, the works. This is the MCP equivalent of HTTP 402.&lt;/li&gt;
&lt;li&gt;The client builds and signs the payment, then retries the &lt;em&gt;same&lt;/em&gt; call with the payload at &lt;code&gt;_meta["x402/payment"]&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The server verifies and settles, serves the data, and returns the result with the settlement receipt at &lt;code&gt;_meta["x402/payment-response"]&lt;/code&gt;.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json-doc"&gt;&lt;code&gt;&lt;span class="c1"&gt;// 1. Unpaid call&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"jsonrpc"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"method"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"tools/call"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"params"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"devutils_time_now"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"arguments"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{}&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="c1"&gt;// → result: { "isError": true, "content": [ /* PaymentRequired:&lt;/span&gt;&lt;span class="w"&gt;
     &lt;/span&gt;&lt;span class="mf"&gt;0.005&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;USDC,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Solana,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;pay&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;to&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;toll&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;gate&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;*/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="c1"&gt;// 2. Retry with payment attached&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"jsonrpc"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"method"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"tools/call"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"params"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"devutils_time_now"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"arguments"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"_meta"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"x402/payment"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;/* signed x402 payload */&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="c1"&gt;// → result carries the data, plus the receipt:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="c1"&gt;// "_meta": { "x402/payment-response": { /* settlement receipt */ } }&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Client-side wrappers already exist (&lt;code&gt;@x402/mcp&lt;/code&gt; on the TypeScript side, a Python equivalent), so an agent framework that speaks this transport runs the whole loop transparently. And the catalog stays free: &lt;code&gt;tools/list&lt;/code&gt; returns all 76 tools with full input schemas and the price stated in every tool description, so an agent — or its spend policy — knows the cost &lt;em&gt;before&lt;/em&gt; calling. All tools are paid; prices run $0.005–$0.50 USDC per call, and results are served only after payment settles.&lt;/p&gt;

&lt;h2&gt;
  
  
  What conformance cost
&lt;/h2&gt;

&lt;p&gt;Two line items dominated.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dual x402 conformance.&lt;/strong&gt; The fleet speaks both protocol versions: v1 in the response body, byte-identical to what existing v1 clients expect, and v2 in the &lt;code&gt;PAYMENT-REQUIRED&lt;/code&gt; header. All 79 paid operations pass as both. That's not vanity — different catalogs and facilitators read different versions, and MCP's transport assumes exactly the standard v2 payload. The conformance work done for HTTP is what made the MCP wrap cheap.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The price floor.&lt;/strong&gt; Third-party facilitators charge per settled call — PayAI runs about $0.00145 a settle. Price a tool at $0.001 and you lose money on every sale. So the fleet floor is $0.005 per call: 54 of the 76 MCP tools sit exactly there, and the rest price up to $0.50 by data cost and value. Dexter, for the record, settles free — but the floor is set by the rail that charges, because the seller doesn't choose the buyer's rail.&lt;/p&gt;

&lt;h2&gt;
  
  
  The proof
&lt;/h2&gt;

&lt;p&gt;Sweeps prove a rail works when &lt;em&gt;I&lt;/em&gt; pay myself: PayAI settled 74 of 74 catalog buys, Dexter 79 of 79, each verified from the workers' own settlement ledgers rather than client-side success messages.&lt;/p&gt;

&lt;p&gt;The MCP proof followed the same rule. On October 14, 2026, the first paid MCP call ran from a real wallet through the Dexter rail: &lt;code&gt;devutils_time_now&lt;/code&gt;, $0.005, served with &lt;code&gt;paid_via: dexter&lt;/code&gt;. I didn't trust the client's success screen — I read the server-side counter in KV (&lt;code&gt;mcp:count:2026-10-14:settled&lt;/code&gt;), which had moved from 0 to 1. First settled MCP call, verified from the server's books.&lt;/p&gt;

&lt;p&gt;The honest footnote: every settle so far, on every rail, is my own test money. The first payment from a wallet that isn't mine is still ahead of me. That's what the listings are for.&lt;/p&gt;

&lt;h2&gt;
  
  
  Honest gaps
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The direct rail doesn't exist over MCP.&lt;/strong&gt; Our HTTP API has a third rail — pay directly with SOL or USDC plus a fresh memo, retry with the transaction signature. That dialect is fleet-specific and simply not expressible in the standard MCP transport, which carries the facilitator-settled v2 payload. MCP buyers get PayAI and Dexter; the direct rail stays HTTP-only, and the docs say so plainly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Generic MCP clients stop at the challenge.&lt;/strong&gt; A client that doesn't speak x402-over-MCP calls a tool, receives PaymentRequired, and has no idea what to do with it. That's protocol-correct behaviour, but it means the MCP server by itself doesn't create demand — discovery does. The registry listings, the catalogs, and posts like this one are the actual distribution.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Two tools change the real world.&lt;/strong&gt; Telegram bot provisioning ($0.50, allocates a bot for a month) and trademark watch registration ($0.50, 30 days) settle once and say so in their descriptions. Idempotency isn't a nicety there; it's the product.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Where it's listed
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Official MCP Registry — &lt;code&gt;com.exchangerebel/exchangerebel&lt;/code&gt;, status ACTIVE&lt;/li&gt;
&lt;li&gt;Smithery — &lt;code&gt;sound-money-investing/exchangerebel&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;x402scan — the HTTP fleet, 121 resources&lt;/li&gt;
&lt;li&gt;The intro post on Moltbook, the social network for agents: &lt;a href="https://www.moltbook.com/post/95f7a819-f3ba-4595-920d-8877e02de001" rel="noopener noreferrer"&gt;https://www.moltbook.com/post/95f7a819-f3ba-4595-920d-8877e02de001&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Full catalog and API docs: &lt;a href="https://exchangerebel.com/openapi.json" rel="noopener noreferrer"&gt;https://exchangerebel.com/openapi.json&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you build agents: what would yours pay $0.005 for, per call, without asking you first — and what's missing from a catalog like this that would make it pay more?&lt;/p&gt;

</description>
      <category>ai</category>
      <category>mcp</category>
      <category>web3</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
