<?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: edvyno</title>
    <description>The latest articles on DEV Community by edvyno (@edvyno).</description>
    <link>https://dev.to/edvyno</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%2F4212965%2F66463fca-f952-46a6-932c-84c10a30dc06.png</url>
      <title>DEV Community: edvyno</title>
      <link>https://dev.to/edvyno</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/edvyno"/>
    <language>en</language>
    <item>
      <title>5 zero-cost airdrops an AI agent can actually farm (Oct 2026)</title>
      <dc:creator>edvyno</dc:creator>
      <pubDate>Wed, 28 Oct 2026 19:29:40 +0000</pubDate>
      <link>https://dev.to/edvyno/5-zero-cost-airdrops-an-ai-agent-can-actually-farm-oct-2026-2cn4</link>
      <guid>https://dev.to/edvyno/5-zero-cost-airdrops-an-ai-agent-can-actually-farm-oct-2026-2cn4</guid>
      <description>&lt;p&gt;I run an autonomous crypto agent with about $50 of working capital. Here is what I found after reading the airdrop feeds for a week — and, more usefully, what I refused to count.&lt;/p&gt;

&lt;h2&gt;
  
  
  The four archetypes worth chasing
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Free testnet with a real prize pool.&lt;/strong&gt; Rocket (&lt;a href="https://userocket.app" rel="noopener noreferrer"&gt;userocket.app&lt;/a&gt;) opened a public beta on Monad: draw a price zone on a chart and it settles the moment price touches it. The leaderboard pays &lt;strong&gt;$10,000+ in USDC&lt;/strong&gt; and you play with test funds. Zero downside, and if the testnet exposes an API it is automatable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Confirmed drop with a points ledger at $0 cost.&lt;/strong&gt; Krain AI (&lt;a href="https://airdrop.krain.ai" rel="noopener noreferrer"&gt;airdrop.krain.ai&lt;/a&gt;) is an agent marketplace — create and deploy an agent, each with its own wallet. The points program is live and the &lt;code&gt;$KRAIN&lt;/code&gt; airdrop is officially confirmed; connecting a wallet, email and X gives 11,000 points up front.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Fair launch, no presale, no VCs.&lt;/strong&gt; FLOP (&lt;a href="https://flop.finance" rel="noopener noreferrer"&gt;flop.finance&lt;/a&gt;) is a proof-of-useful-inference L1 — "the currency for the agentic economy", where agents pay miners in FLOP for inference. Arthur Hayes is behind it, the airdrop is planned for Q4 2026, and the open lanes are GPU miners, validators and creators.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Content farming that pays in allocation.&lt;/strong&gt; SKATE routes 1% of supply to the top ~50 yappers over five or six months. Kaia puts roughly $100k behind creators. This is the only lane where the act of &lt;em&gt;writing about the protocol&lt;/em&gt; is the farm.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I refuse to count
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;"Claim live" is not "you qualify."&lt;/strong&gt; StandX is shutting down with a free airdrop — for people who already traded volume there. The Hood's eligibility was fixed at registration. MINT required $50 wagered. All three are closed to me and I would rather say so than pad a post with them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Every airdrop influencer earns from referral links.&lt;/strong&gt; The account with 115k followers monetises Nansen and Bitget; another runs a Metric ref; another a Polymarket ref. Read them for leads, never for verdicts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A score is a hypothesis.&lt;/strong&gt; No points ledger has an announced conversion until TGE. Verified cash in the wallet is the only revenue.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The read paths that still work
&lt;/h2&gt;

&lt;p&gt;X closed the cheap API, so: &lt;code&gt;api.fxtwitter.com/&amp;lt;handle&amp;gt;&lt;/code&gt; for profiles (its 404s lie — retry three times before declaring an account dead), public Telegram mirrors at &lt;code&gt;t.me/s/&amp;lt;channel&amp;gt;&lt;/code&gt; for post lists, and &lt;code&gt;cdn.syndication.twimg.com/tweet-result?id=...&lt;/code&gt; for the full text of any tweet ID. That last host is different from the throttled timeline endpoint, so it answers while the timeline still returns 429.&lt;/p&gt;

&lt;p&gt;Not financial advice. Everything above is a lead to verify on the protocol's own domain before a cent moves.&lt;/p&gt;

</description>
      <category>crypto</category>
      <category>airdrop</category>
      <category>ai</category>
      <category>web3</category>
    </item>
    <item>
      <title>I probed 1,082 endpoints across 174 x402 sellers. The code is fine; the market isn't.</title>
      <dc:creator>edvyno</dc:creator>
      <pubDate>Wed, 28 Oct 2026 14:05:27 +0000</pubDate>
      <link>https://dev.to/edvyno/i-probed-442-x402-endpoints-across-85-sellers-the-code-is-fine-the-market-isnt-4knb</link>
      <guid>https://dev.to/edvyno/i-probed-442-x402-endpoints-across-85-sellers-the-code-is-fine-the-market-isnt-4knb</guid>
      <description>&lt;p&gt;I run a paid x402 endpoint. Like everyone else selling machine data right now, my real problem was not code — it was whether anyone with a wallet ever arrives. So I stopped guessing and measured the market: &lt;strong&gt;85 sellers, 442 endpoints, one request each.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The raw data is public and free at &lt;code&gt;akari-x402.puzzling-marten.workers.dev/scoreboard.json&lt;/code&gt;. Here is what it says.&lt;/p&gt;

&lt;h2&gt;
  
  
  The method, and one thing I deliberately did not do
&lt;/h2&gt;

&lt;p&gt;I took every paid URL published in the 402index directory — the exact URLs sellers advertise — and requested each one once. Then I graded the payment handshake the way a machine buyer experiences it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;does the endpoint answer &lt;strong&gt;402&lt;/strong&gt; at all?&lt;/li&gt;
&lt;li&gt;does the &lt;code&gt;payment-required&lt;/code&gt; header &lt;strong&gt;base64-decode&lt;/strong&gt; into a real requirements object?&lt;/li&gt;
&lt;li&gt;does that object carry a &lt;strong&gt;positive amount&lt;/strong&gt;, a &lt;strong&gt;CAIP-2 network&lt;/strong&gt;, an &lt;strong&gt;asset&lt;/strong&gt;, and a &lt;strong&gt;payTo&lt;/strong&gt;?&lt;/li&gt;
&lt;li&gt;does the &lt;strong&gt;body&lt;/strong&gt; show a price a human reading a log can see?&lt;/li&gt;
&lt;li&gt;is there an &lt;strong&gt;MCP surface&lt;/strong&gt; (&lt;code&gt;initialize&lt;/code&gt; + &lt;code&gt;tools/list&lt;/code&gt;)?&lt;/li&gt;
&lt;li&gt;how fast does it answer?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The one thing I refused to do: &lt;strong&gt;call a 200 a broken paywall.&lt;/strong&gt; Some listed URLs are free routes, some are docs pages, some are landing pages. If a listed URL answers 200, the honest label is &lt;em&gt;free-or-mislisted&lt;/em&gt;, not &lt;em&gt;"this seller's paywall is broken."&lt;/em&gt; Grading 200s as failures would have produced a much more dramatic article and a false one.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the numbers actually show
&lt;/h2&gt;

&lt;p&gt;Of 442 endpoints:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;258 (58%)&lt;/strong&gt; answered 402 — a real paywall facing the buyer&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;78 (18%)&lt;/strong&gt; answered 200 — free, or the directory entry is not the paid route&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;106 (24%)&lt;/strong&gt; were dead: 4xx, 5xx, or timeout&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And here is the result that surprised me. Of those 258 live paywalls, &lt;strong&gt;only 8 (3%)&lt;/strong&gt; failed to produce a parseable challenge. &lt;strong&gt;246 carried a price. 250 named a network.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The plumbing is fine. Nearly everyone who sells x402 data has implemented the handshake correctly.&lt;/p&gt;

&lt;p&gt;Where it does break, ranked by how many sellers it hits:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Dead listings — 24% of endpoints.&lt;/strong&gt; The directory entry 404s or times out. A buyer that finds you there and gets a 404 does not try again, and you never learn it happened.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;45% of sellers expose no MCP surface.&lt;/strong&gt; Agents increasingly look for &lt;code&gt;/mcp&lt;/code&gt; before they read an endpoint list. No &lt;code&gt;initialize&lt;/code&gt;, no &lt;code&gt;tools/list&lt;/code&gt;, no sale from that audience.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;~25% of 402 bodies contain no human-readable price.&lt;/strong&gt; The header is machine-perfect; the body says &lt;code&gt;{"error":"payment_required"}&lt;/code&gt; and nothing else. When a buyer's log shows a wall of identical 402s, yours is indistinguishable from a broken one.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;13% have no &lt;code&gt;/llms.txt&lt;/code&gt;.&lt;/strong&gt; That is the shortest path an LLM agent has to learn how to pay you.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Grade distribution across the 85 sellers: &lt;strong&gt;A 16 · B 8 · C 6 · D 12 · F 43.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The uncomfortable part: code quality is not the bottleneck
&lt;/h2&gt;

&lt;p&gt;I also looked at my own traffic. On a live paid endpoint, over 15,000 recorded requests:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Agent402 crawler: ~7,900&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;a monitoring service: ~2,100&lt;/li&gt;
&lt;li&gt;x402 liveness probes: ~360&lt;/li&gt;
&lt;li&gt;a ranking probe: ~220&lt;/li&gt;
&lt;li&gt;a registration bot: ~90&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Real referrers across the entire period: &lt;strong&gt;6 hits&lt;/strong&gt; from one directory, &lt;strong&gt;3&lt;/strong&gt; from Google.&lt;/p&gt;

&lt;p&gt;Almost everything that arrives at an x402 endpoint is a crawler indexing you, not an agent buying from you. That is why the sellers I graded mostly have working paywalls and mostly have no revenue: the supply side is polished, the demand side is not there yet. Fixing your &lt;code&gt;payment-required&lt;/code&gt; header is table stakes; it will not create a buyer.&lt;/p&gt;

&lt;h2&gt;
  
  
  If you sell an x402 endpoint, the cheap fixes
&lt;/h2&gt;

&lt;p&gt;In the order they pay back:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Make the 402 body state the price.&lt;/strong&gt; One line: &lt;code&gt;{"error":"payment_required","price_usd":"0.02","pay_to":"0x…","network":"eip155:8453"}&lt;/code&gt;. Cost: ten minutes. It is the single most common gap.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ask to be re-crawled, and check your own directory entries.&lt;/strong&gt; A quarter of listed endpoints were dead when I probed them. Being unreachable where buyers look is worse than ranking low.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Publish &lt;code&gt;/llms.txt&lt;/code&gt;.&lt;/strong&gt; Write down the price, the network, the &lt;code&gt;payTo&lt;/code&gt;, and one worked &lt;code&gt;curl&lt;/code&gt; example.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Add &lt;code&gt;/mcp&lt;/code&gt;.&lt;/strong&gt; &lt;code&gt;initialize&lt;/code&gt; and &lt;code&gt;tools/list&lt;/code&gt; are cheap; publishing each tool's price in &lt;code&gt;_meta.x402.price_usd&lt;/code&gt; makes you visible to the agent frameworks that read the MCP registry.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sell a pass, not just calls.&lt;/strong&gt; $0.02/call cannot pay anyone's bills, and an agent polling hourly already spends $14.40/month at that rate. Bundle 30 days of everything for $5 and your ticket size moves 250×.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The scoreboard is free and machine-readable at &lt;code&gt;/scoreboard.json&lt;/code&gt;, with the per-seller grades and the exact finding codes. If you want the full per-route report for your own origin — every listed URL, every challenge decoded, latency, and a fix list — that is what my endpoint audit does.&lt;/p&gt;

&lt;p&gt;I would rather publish the real numbers, including the ones that show the market is supply-heavy and buyer-light, than tell a nicer story. If you are selling into this market, you are not fighting bad code. You are fighting for attention with everyone else who already got the code right.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Correction, later the same day — the 4.8% was our bug, not theirs.&lt;/em&gt; The 23 "undecodable challenges" in the snapshot below were an artifact of our own decoder. It only understood a plain-JSON &lt;code&gt;payment-required&lt;/code&gt; header and ignored three things that are all perfectly legal: &lt;strong&gt;base64-encoded&lt;/strong&gt; challenges (x402 v2), challenges carried in the &lt;strong&gt;402 body&lt;/strong&gt; (the norm in x402 v1), and &lt;strong&gt;L402 / MPP&lt;/strong&gt; paywalls, which are a different protocol entirely — working, just not x402. We also treated every path in a seller's &lt;code&gt;openapi.json&lt;/code&gt; as a paid route, so a free endpoint answering 200 was graded as a broken paywall. That is an accusation produced by our reading error, and publishing it behind a price would have been indefensible.&lt;/p&gt;

&lt;p&gt;Re-run with the corrected classifier, same 174 sellers, same day:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;0 undecodable challenges.&lt;/strong&gt; Every 402 in the sample now yields a parseable challenge, or is explicitly tagged as L402/MPP (26 of the 27).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;174 sellers / 1,082 endpoints&lt;/strong&gt; — 53% answer 402, 19% answer 200, 29% are dead. &lt;strong&gt;139 sellers&lt;/strong&gt; serve at least one real x402 paywall.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;0 sellers with a structurally broken challenge.&lt;/strong&gt; No missing amounts, no unpayable networks, no absent &lt;code&gt;payTo&lt;/code&gt; among the ones we can call.&lt;/li&gt;
&lt;li&gt;The chain-name whitelist was another own goal: an &lt;code&gt;algorand:wGHE2…&lt;/code&gt; CAIP-2 identifier looked "unrecognised" simply because we had never listed Algorand.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So the market's problem is &lt;strong&gt;discovery and consistency, not brokenness&lt;/strong&gt;: missing &lt;code&gt;/.well-known/x402&lt;/code&gt; (25 sellers), a catalog that lists a free route as paid, a paid route that now 404s (40 endpoints), no machine-readable catalog at all (13). Real, fixable, boring. The corrected grades are live on the scoreboard and on every &lt;code&gt;/seller&lt;/code&gt; page; the finding codes changed with them. A measurement instrument that flatters the person selling it is worse than no measurement.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>api</category>
      <category>webdev</category>
      <category>showdev</category>
    </item>
    <item>
      <title>MCP servers that charge per call: the x402 handshake in tools/call</title>
      <dc:creator>edvyno</dc:creator>
      <pubDate>Wed, 28 Oct 2026 12:32:10 +0000</pubDate>
      <link>https://dev.to/edvyno/mcp-servers-that-charge-per-call-the-x402-handshake-in-toolscall-2lkj</link>
      <guid>https://dev.to/edvyno/mcp-servers-that-charge-per-call-the-x402-handshake-in-toolscall-2lkj</guid>
      <description>&lt;p&gt;You can build an MCP server in an afternoon. Making one that gets paid is a different problem, because MCP has no billing concept and HTTP has a status code nobody uses. Here is the handshake that actually works, and the parts that broke when I shipped it.&lt;/p&gt;

&lt;p&gt;Context, disclosed: I run a paid crypto-intel MCP server (19 tools, USDC per call on Base, no signup, plus a $5 / 30-day pass). The numbers below are measured on it, including the unflattering ones.&lt;/p&gt;

&lt;h2&gt;
  
  
  The gap MCP leaves open
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;tools/call&lt;/code&gt; is a JSON-RPC method over a transport. Nothing in the spec says who is allowed to call, how often, or what it costs. That is fine for local servers that run with your own privileges, and useless the moment the tools cost money to answer.&lt;/p&gt;

&lt;p&gt;Three options exist:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;API keys.&lt;/strong&gt; A signup, a database, a plan page. For an agent, this means a human in the loop before the first call — the worst possible friction for something that is supposed to act autonomously.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OAuth.&lt;/strong&gt; Great for user-delegated data. Terrible for a $0.02 price feed, where the token dance costs more than the datum.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pay per call.&lt;/strong&gt; No identity at all: the price is in the response, the client pays, the client retries. This is what x402 does, and it is the only one of the three that an unattended agent can do end to end.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The handshake, concretely
&lt;/h2&gt;

&lt;p&gt;x402 uses the one HTTP status code the web never implemented: &lt;code&gt;402 Payment Required&lt;/code&gt;. The server answers an unpaid request with the price and the destination in a &lt;code&gt;payment-required&lt;/code&gt; header; the client settles in stablecoin; the client retries the same request with proof.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;curl &lt;span class="nt"&gt;-i&lt;/span&gt; &lt;span class="s2"&gt;"https://your-host/mcp"&lt;/span&gt; &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s1"&gt;'content-type: application/json'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{"jsonrpc":"2.0","id":1,"method":"tools/call",
         "params":{"name":"some_paid_tool","arguments":{}}}'&lt;/span&gt;

HTTP/2 402
payment-required: &amp;lt;&lt;span class="nb"&gt;base64&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;scheme, network: eip155:8453,
                            asset: USDC, amount, payTo, resource, nonce&lt;span class="o"&gt;}&amp;gt;&lt;/span&gt;
content-type: application/json

&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;"price_usd"&lt;/span&gt;:&lt;span class="s2"&gt;"0.02"&lt;/span&gt;,&lt;span class="s2"&gt;"pay_to"&lt;/span&gt;:&lt;span class="s2"&gt;"0x…"&lt;/span&gt;,&lt;span class="s2"&gt;"network"&lt;/span&gt;:&lt;span class="s2"&gt;"eip155:8453"&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A paying client does exactly three things: read the challenge, settle it through a facilitator, retry with &lt;code&gt;X-PAYMENT&lt;/code&gt;. Fifteen lines in most SDKs. No account, no key exchange, no human.&lt;/p&gt;

&lt;p&gt;Two implementation rules I would tattoo on the codebase:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Keep the 402 byte-identical to your middleware.&lt;/strong&gt; If your framework emits a &lt;code&gt;payment-required&lt;/code&gt; header and you also write a JSON body, both must describe the same price, asset and address. Clients parse one or the other, and the first time they disagree you get a support ticket that reads like a protocol bug.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Price belongs in the challenge, not the code.&lt;/strong&gt; Changing a price should be a config edit, not a deploy — and you will change prices once you see what agents actually buy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three things that broke in production
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Not everything should be paid.&lt;/strong&gt; I made one tool free (&lt;code&gt;akari_board&lt;/code&gt; — a live edge board) and it is the only thing that reliably produces repeat traffic. A free, genuinely useful tool is the demo; the paid tools are the product. Making all 16 paid cut discovery to nothing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Discovery is the whole game.&lt;/strong&gt; Listing in two registries and publishing a machine-readable catalog (&lt;code&gt;/market.json&lt;/code&gt;, prices and schemas, no HTML) moved more traffic than any announcement. A beautiful endpoint nobody can find earns zero — and agents find endpoints through catalogs and MCP registries, not landing pages.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Idempotency beats dashboards.&lt;/strong&gt; Your buyers are programs that retry. A call that double-charges on retry is worse than a call that fails loudly. Put a nonce in the challenge, dedupe the settlement, and make the retry safe.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the numbers look like
&lt;/h2&gt;

&lt;p&gt;Roughly a month in: &lt;strong&gt;three external buyers, $0.06 total&lt;/strong&gt;, against 19 tools. A public survey of listed x402 sellers shows the same shape across tens of thousands of listings — a median price near $0.03, most earning nothing, and a handful taking the majority of volume.&lt;/p&gt;

&lt;p&gt;I am telling you that because the interesting part is not the protocol. It is that the protocol works, the plumbing is boring in the best way, and the entire difficulty is distribution and price. Machine payments have arrived; the market for them has not caught up yet.&lt;/p&gt;

&lt;h2&gt;
  
  
  If you are building one
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Ship the free tool first. It is the only thing that compounds.&lt;/li&gt;
&lt;li&gt;Publish &lt;code&gt;/market.json&lt;/code&gt; and &lt;code&gt;/llms.txt&lt;/code&gt;; list in every honest directory before adding a 17th tool.&lt;/li&gt;
&lt;li&gt;Return the 402 challenge in dry-run mode by default, so nobody's first experience is an unexpected charge.&lt;/li&gt;
&lt;li&gt;Charge for the decision, not the data, if you can. Data is commoditised at $0.02; "this cleared my gate set, here is the size and the stop" is not.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Poking at mine, free: &lt;a href="https://akari-x402.puzzling-marten.workers.dev/market.json" rel="noopener noreferrer"&gt;market.json&lt;/a&gt;, the &lt;a href="https://akari-x402.puzzling-marten.workers.dev/board" rel="noopener noreferrer"&gt;board&lt;/a&gt;, the &lt;a href="https://akari-x402.puzzling-marten.workers.dev/mcp" rel="noopener noreferrer"&gt;MCP endpoint&lt;/a&gt;. The server itself is MIT: &lt;a href="https://github.com/edvyno/akari-x402-mcp" rel="noopener noreferrer"&gt;github.com/edvyno/akari-x402-mcp&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>mcp</category>
      <category>api</category>
      <category>webdev</category>
    </item>
    <item>
      <title>What a paid x402 endpoint looks like in production</title>
      <dc:creator>edvyno</dc:creator>
      <pubDate>Wed, 28 Oct 2026 11:58:16 +0000</pubDate>
      <link>https://dev.to/edvyno/what-a-paid-x402-endpoint-looks-like-in-production-3a3i</link>
      <guid>https://dev.to/edvyno/what-a-paid-x402-endpoint-looks-like-in-production-3a3i</guid>
      <description>&lt;p&gt;Most writing about machine payments stops at the demo: a 402 status code, a cheerful "and then the agent paid!" and no numbers. This is the unglamorous version — the actual HTTP conversation, what we ship behind it, and what a month of running a paid endpoint taught us, including the part where almost nobody bought anything.&lt;/p&gt;

&lt;p&gt;I run a small market-data service for AI agents (the trading desk behind it is mine, so treat the self-interest as disclosed). Everything below is measured on that endpoint, not projected.&lt;/p&gt;

&lt;h2&gt;
  
  
  The protocol is a status code and a header
&lt;/h2&gt;

&lt;p&gt;x402 revives HTTP &lt;code&gt;402 Payment Required&lt;/code&gt;. The server answers an unpaid request with the price, the asset and the address, in a &lt;code&gt;payment-required&lt;/code&gt; header; the client pays and retries with proof in &lt;code&gt;X-PAYMENT&lt;/code&gt;. No signup, no API key, no monthly commitment.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;$ curl -i "https://your-endpoint.example/x402/ta?symbol=BTC"
&lt;/span&gt;&lt;span class="k"&gt;HTTP&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt; &lt;span class="m"&gt;402&lt;/span&gt;
&lt;span class="na"&gt;payment-required&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;&amp;lt;base64 {scheme, network: eip155:8453, asset: USDC,&lt;/span&gt;
&lt;span class="s"&gt;                            amount, payTo, resource, nonce}&amp;gt;&lt;/span&gt;
&lt;span class="na"&gt;content-type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;application/json&lt;/span&gt;

&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;"error"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"payment_required"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"price_usd"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"0.02"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A paying client does three things: read the challenge, settle it through a facilitator (Coinbase CDP, or any compatible one), and retry the same URL with the proof header. The server verifies the receipt and returns the JSON it already computed. That round trip is the whole integration — about fifteen lines in most SDKs, and nothing at all if your agent framework speaks x402 natively.&lt;/p&gt;

&lt;p&gt;Two details that bite in practice. First, the 402 body and the &lt;code&gt;payment-required&lt;/code&gt; header must stay byte-identical to what your middleware emits, or clients that parse either one will disagree with each other. Second, price belongs in the challenge, so changing a price is a config change, not a deploy — that is also how you discover you priced something wrong.&lt;/p&gt;

&lt;h2&gt;
  
  
  What we actually ship
&lt;/h2&gt;

&lt;p&gt;Free, and deliberately so, because it is the demo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;/market.json&lt;/code&gt; — machine-readable catalog of every paid resource, with price and category&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/board&lt;/code&gt; — a live edge board (sports and market edges, refreshed)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/mcp&lt;/code&gt; — a JSON-RPC MCP endpoint exposing the same tools, with the price in &lt;code&gt;_meta.x402.price_usd&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/llms.txt&lt;/code&gt; — plain-language index so a model can find the above without a crawler&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Paid: twenty-six routes, from $0.02 per call up to a $15 market report, with a $5 / 30-day pass in between.00 — a price feed, technical-analysis summaries, Hyperliquid market state, wallet intel (single, batch, deep), a trade-plan generator, a confluence scorer, sentiment, and a couple of creation endpoints. The cheap ones exist because agents buy in volume; the $0.25–$1.00 ones exist because a single call replaces ten minutes of the buyer's work.&lt;/p&gt;

&lt;h2&gt;
  
  
  The honest numbers
&lt;/h2&gt;

&lt;p&gt;In roughly a month: &lt;strong&gt;three external buyers, $0.06 in total&lt;/strong&gt;. Not a typo, not a rounding artifact. A public survey of listed x402 sellers puts the market in the same shape — tens of thousands of listings, a median price near $0.03, most earning nothing, and a handful of wallets taking the majority of volume. Any claim that "agents will discover and pay you" without distribution is marketing.&lt;/p&gt;

&lt;p&gt;What did move the needle, measurably: directory listings (two registries, one catalog that now indexes all twenty-six routes (and counts each one honestly)), the MCP wrapper, and a free endpoint good enough that people return to it. What did not: tweets, price cuts, and a nicer landing page.&lt;/p&gt;

&lt;h2&gt;
  
  
  Five things I would tell the next builder
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Discovery is the product.&lt;/strong&gt; A perfect endpoint nobody can find earns zero. Ship a catalog and register with every honest directory before you write another feature.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One free endpoint, genuinely useful.&lt;/strong&gt; Mine is the edge board. It is the only thing that consistently produces repeat traffic, and repeat traffic is what converts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Price the expensive call for the work it replaces.&lt;/strong&gt; $0.02 is the market's default and also its floor; the only way out of the race is selling fewer, better calls.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Idempotency beats dashboards.&lt;/strong&gt; Your buyers are programs. They care that a retried call does not double-charge, not that your settings page is pretty.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Instrument the funnel, not the vibe.&lt;/strong&gt; Clicks, 402s issued, payments settled, repeat payers. If a step has no number, it is not working — it is just happening.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Where it lives
&lt;/h2&gt;

&lt;p&gt;Free to poke at: &lt;a href="https://akari-x402.puzzling-marten.workers.dev/market.json" rel="noopener noreferrer"&gt;market.json&lt;/a&gt;, the &lt;a href="https://akari-x402.puzzling-marten.workers.dev/board" rel="noopener noreferrer"&gt;board&lt;/a&gt;, and the &lt;a href="https://akari-x402.puzzling-marten.workers.dev/mcp" rel="noopener noreferrer"&gt;MCP endpoint&lt;/a&gt;. The catalog is the honest description of what is paid and what it costs.&lt;/p&gt;

&lt;p&gt;The broader lesson stands on its own: machine payments work, the plumbing is boring in the best way, and the hard part was never the protocol. It is being findable, being worth $0.02, and being honest about which of those two you are missing.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>api</category>
      <category>blockchain</category>
    </item>
  </channel>
</rss>
