<?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: devtoship</title>
    <description>The latest articles on DEV Community by devtoship (@devtoship).</description>
    <link>https://dev.to/devtoship</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%2F3885077%2F2b0fa3e2-a46a-4c07-835e-32827140c535.jpg</url>
      <title>DEV Community: devtoship</title>
      <link>https://dev.to/devtoship</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/devtoship"/>
    <language>en</language>
    <item>
      <title>We Catalogued 14,085 x402 Endpoints. 10,508 Came From One Domain.</title>
      <dc:creator>devtoship</dc:creator>
      <pubDate>Thu, 23 Jul 2026 20:38:51 +0000</pubDate>
      <link>https://dev.to/devtoship/we-catalogued-14085-x402-endpoints-10508-came-from-one-domain-1g19</link>
      <guid>https://dev.to/devtoship/we-catalogued-14085-x402-endpoints-10508-came-from-one-domain-1g19</guid>
      <description>&lt;p&gt;We index every x402 endpoint we can find and probe each one every 10 minutes. As of July 2026 the catalogue holds &lt;strong&gt;14,085 endpoints&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;10,508 of them belong to a single provider.&lt;/strong&gt; All suspended. One domain mass-registered a five-figure pile of endpoints into the public registry, and if you render a registry as a directory without checking anything, that one domain is most of your "ecosystem."&lt;/p&gt;

&lt;p&gt;Strip it out and you're left with 3,577 genuine endpoints. Of those, &lt;strong&gt;2,131 pass verification and 1,446 don't&lt;/strong&gt; — roughly two in five fail. That's the real shape of x402 today, and it's why we probe instead of list.&lt;/p&gt;

&lt;p&gt;Here's how the verification works and what it turns up.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Verification Matters More Here Than Elsewhere
&lt;/h2&gt;

&lt;p&gt;In a normal API marketplace you sign up, get a key, hit the endpoint. If it's broken you find out during integration and pick another.&lt;/p&gt;

&lt;p&gt;x402 inverts that. Your agent discovers an endpoint at runtime, signs a USDC transaction, and pays &lt;em&gt;before&lt;/em&gt; it knows whether the response is useful. If the endpoint is dead or misconfigured, the money is gone — and worse, the agent may quietly use bad data downstream.&lt;/p&gt;

&lt;p&gt;Nobody is going to hand-check these. The catalogue has to do it continuously, and it has to demote things that stop working.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the Handshake Probe Checks
&lt;/h2&gt;

&lt;p&gt;Every 10 minutes, via a Cloudflare Cron trigger, each endpoint gets an unauthenticated request. The probe records:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Does it respond at all?&lt;/strong&gt; Network errors, timeouts and 5xx count as failures.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Does it return &lt;code&gt;402 Payment Required&lt;/code&gt;?&lt;/strong&gt; Anything else — 200, 401, 404 — means it isn't actually x402, whatever the registry says.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Is the payment challenge well-formed?&lt;/strong&gt; We parse the x402 challenge (both v1 and v2) and require the fields that matter: price, network, recipient address, accepted assets.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Does the live price match the registered price?&lt;/strong&gt; The probe stores the observed price alongside the registered one and flags drift.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;How slow is it?&lt;/strong&gt; Latency is recorded for ranking.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Each run writes a row to a &lt;code&gt;verifications&lt;/code&gt; table. From the last 7 days of rows we recompute rolling success rate, p95 latency and a stability score. An endpoint whose &lt;code&gt;success_rate_7d&lt;/code&gt; falls below 0.5 drops out of &lt;code&gt;ranked_endpoints&lt;/code&gt; into &lt;code&gt;fallback_endpoints&lt;/code&gt; with an explicit exclusion reason, so an agent can decide for itself whether to retry.&lt;/p&gt;

&lt;p&gt;In the last 24 hours that came to &lt;strong&gt;2,884 probes: 2,837 passed, 47 failed.&lt;/strong&gt; A 98% pass rate sounds too good until you remember what it's measuring — these are the endpoints that already survived. The failures were mostly timeouts. Price mismatches over the last 7 days: zero. The filtering already happened; continuous probing is what keeps it accurate as things rot.&lt;/p&gt;

&lt;h2&gt;
  
  
  Networks Nobody Can Pay On
&lt;/h2&gt;

&lt;p&gt;A quieter failure mode: endpoints registered on networks agents can't actually transact on today.&lt;/p&gt;

&lt;p&gt;Of the full catalogue, 13,919 endpoints are on Base mainnet. The remainder scatter across &lt;strong&gt;128 testnet endpoints&lt;/strong&gt; (base-sepolia and &lt;code&gt;eip155:84532&lt;/code&gt;), &lt;strong&gt;30 on Solana&lt;/strong&gt;, 5 on Polygon, 2 on Algorand, 1 on Arbitrum.&lt;/p&gt;

&lt;p&gt;Testnet endpoints are the interesting case. They return a perfectly valid 402. They handshake cleanly. They will also never move real money, so surfacing them to an agent with a funded wallet is worse than useless. They stay in the catalogue but are filtered out of discovery results.&lt;/p&gt;

&lt;h2&gt;
  
  
  What an Agent Actually Sees
&lt;/h2&gt;

&lt;p&gt;The verification work shows up directly in the &lt;code&gt;/discover&lt;/code&gt; response:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"ranked_endpoints"&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="nl"&gt;"endpoint_id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ba98c32b-5ced-4abd-9d1f-4352085a4b53"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"provider_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;"Rag"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://rag.gedx402.com/v1/aisearch/:id/query"&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;"POST"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"score"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.996&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"score_breakdown"&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;"success_rate"&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;"latency"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.992&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"price"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.99&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"stability"&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="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;"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="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"x402"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"price_per_call"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.001&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"network"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"base"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"accepted_assets"&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="s2"&gt;"USDC"&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;"observed"&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;"success_rate_7d"&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;"success_rate_30d"&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;"p95_latency_ms"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"last_verified_at"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2026-07-23 13:40:43"&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's a real response, pulled while writing this. The &lt;code&gt;observed&lt;/code&gt; block is measured, not claimed by the provider — &lt;code&gt;last_verified_at&lt;/code&gt; is a timestamp from an actual probe, and &lt;code&gt;success_rate_7d&lt;/code&gt; comes from counting rows.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Part We Haven't Solved
&lt;/h2&gt;

&lt;p&gt;Handshake probes catch endpoints that are dead, fake, or malformed. They cannot catch the failure that costs you money: an endpoint that returns a clean 402, accepts payment, and then hands back an empty array, an HTML error page, or a JSON error wrapped in a 200.&lt;/p&gt;

&lt;p&gt;Proving that requires actually paying — a real transaction, then a capability-aware check that the response contains what a caller of &lt;code&gt;web.search&lt;/code&gt; or &lt;code&gt;defi.token_price&lt;/code&gt; would need. We've built that machinery, with per-request caps and a daily budget, but it isn't running as a continuous sweep right now, so we don't badge endpoints with it. Claiming a verification tier you aren't currently running is exactly the kind of thing this post is arguing against.&lt;/p&gt;

&lt;p&gt;So: what we assert is what we measure. Every endpoint in &lt;code&gt;ranked_endpoints&lt;/code&gt; returned a valid 402 with a well-formed challenge on a payable network, recently, repeatedly. Post-payment quality is the next problem, and it's a harder one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try It
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST https://api.entroute.com/discover &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&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;'{
    "intent": "search the web",
    "constraints": { "verified_only": true }
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Site: &lt;a href="https://entroute.com" rel="noopener noreferrer"&gt;entroute.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;How verification works: &lt;a href="https://entroute.com/docs/verification" rel="noopener noreferrer"&gt;entroute.com/docs/verification&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;MCP install: &lt;code&gt;claude mcp add entroute -- npx @entroute/mcp-server&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;SDK: &lt;code&gt;npm install @entroute/sdk-agent-ts&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you run an x402 endpoint and it's failing our probes, the fastest fix is usually the payment challenge — missing &lt;code&gt;network&lt;/code&gt; or recipient address is the single most common malformation we see. &lt;a href="https://entroute.com/providers" rel="noopener noreferrer"&gt;Submit it&lt;/a&gt; and it'll be re-probed within 10 minutes.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Counts in this post were measured on 23 July 2026 and will drift. EntRoute is free to query and runs on Cloudflare Workers + D1.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>api</category>
      <category>webdev</category>
      <category>opensource</category>
    </item>
    <item>
      <title>How to Find Verified x402 APIs for AI Agents (Without Managing a Single API Key)</title>
      <dc:creator>devtoship</dc:creator>
      <pubDate>Fri, 17 Apr 2026 20:23:04 +0000</pubDate>
      <link>https://dev.to/devtoship/how-to-find-verified-x402-apis-for-ai-agents-without-managing-a-single-api-key-1030</link>
      <guid>https://dev.to/devtoship/how-to-find-verified-x402-apis-for-ai-agents-without-managing-a-single-api-key-1030</guid>
      <description>&lt;p&gt;Your AI agent needs weather data. You haven't configured a weather API. The agent stops, asks you to sign up, get keys, set environment variables, restart. The autonomous magic breaks.&lt;/p&gt;

&lt;p&gt;This keeps happening because today's agents are &lt;strong&gt;tool-limited&lt;/strong&gt;. They can only use APIs you've pre-configured. We built &lt;a href="https://entroute.com" rel="noopener noreferrer"&gt;EntRoute&lt;/a&gt; to make agents &lt;strong&gt;budget-limited&lt;/strong&gt; instead. Give your agent a wallet and a task. It discovers and pays for whatever it needs.&lt;/p&gt;

&lt;h2&gt;
  
  
  The x402 Protocol (30-Second Primer)
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.x402.org/" rel="noopener noreferrer"&gt;x402&lt;/a&gt; is an open protocol by Coinbase that brings HTTP 402 Payment Required back to life. An API endpoint returns a &lt;code&gt;402&lt;/code&gt; with payment details in the headers. The client signs a USDC transaction, retries the request with a payment proof, and gets the response. No API keys. No OAuth. No billing portal.&lt;/p&gt;

&lt;p&gt;The protocol is live with 500+ providers and growing. But having endpoints isn't enough. Agents need to &lt;strong&gt;find&lt;/strong&gt; the right one, &lt;strong&gt;trust&lt;/strong&gt; that it works, and &lt;strong&gt;pick&lt;/strong&gt; the best option when there are five providers for the same capability.&lt;/p&gt;

&lt;p&gt;That's the gap EntRoute fills.&lt;/p&gt;

&lt;h2&gt;
  
  
  How It Works
&lt;/h2&gt;

&lt;p&gt;EntRoute is a discovery API. An agent describes what it needs, either by intent or capability ID, and gets back ranked, verified endpoints with pricing.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST https://api.entroute.com/discover &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&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;'{"intent": "get the current price of ETH"}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Response:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"resolved"&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;"capability_id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"defi.token_price"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"confidence"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.95&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;"ranked_endpoints"&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="nl"&gt;"provider_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;"Silverback"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://x402.silverback.xyz/v1/token-price"&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;"GET"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"score"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.87&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"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="nl"&gt;"price_per_call"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.001&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"network"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"base"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"accepted_assets"&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="s2"&gt;"USDC"&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;"observed"&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;"success_rate_7d"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.98&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"p95_latency_ms"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;150&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The key fields in that response are under &lt;code&gt;observed&lt;/code&gt;. Those aren't claimed by the provider. They're measured by us.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Not Just Use the Bazaar?
&lt;/h2&gt;

&lt;p&gt;Coinbase's &lt;a href="https://bazaar.x402.org" rel="noopener noreferrer"&gt;x402 Bazaar&lt;/a&gt; is the official registry. It's great, and we ingest from it daily. But it's a flat list. Every endpoint that registers shows up, whether it works or not.&lt;/p&gt;

&lt;p&gt;We ran the numbers on what the Bazaar contains:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Endpoints that don't return 402 at all&lt;/li&gt;
&lt;li&gt;Endpoints with invalid payment headers&lt;/li&gt;
&lt;li&gt;Endpoints on Solana or testnets that agents can't pay on today&lt;/li&gt;
&lt;li&gt;Endpoints that accept payment but return garbage data&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;EntRoute adds three layers on top:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Continuous Verification
&lt;/h3&gt;

&lt;p&gt;Every endpoint gets probed every 10 minutes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Does it return &lt;code&gt;402 Payment Required&lt;/code&gt;?&lt;/li&gt;
&lt;li&gt;Are the x402 payment headers valid and parseable?&lt;/li&gt;
&lt;li&gt;What's the actual latency?&lt;/li&gt;
&lt;li&gt;Does it fulfill after payment? (for the 31 endpoints we've confirmed end-to-end)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Endpoints that fail get demoted. Endpoints that stay reliable rise in the rankings.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Quality-Based Ranking
&lt;/h3&gt;

&lt;p&gt;When multiple endpoints serve the same capability, we rank them by measured signals:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Signal&lt;/th&gt;
&lt;th&gt;Default Weight&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Success rate (7d)&lt;/td&gt;
&lt;td&gt;45%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Latency (p95)&lt;/td&gt;
&lt;td&gt;25%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Price per call&lt;/td&gt;
&lt;td&gt;20%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Stability (uptime variance)&lt;/td&gt;
&lt;td&gt;10%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Agents can also request ranking presets (&lt;code&gt;reliability&lt;/code&gt;, &lt;code&gt;speed&lt;/code&gt;, &lt;code&gt;budget&lt;/code&gt;, or &lt;code&gt;balanced&lt;/code&gt;) depending on what matters for the task.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Intent Resolution
&lt;/h3&gt;

&lt;p&gt;Agents don't need to know capability IDs. Natural language works:&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="c"&gt;# These all resolve to the right capability&lt;/span&gt;
curl &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{"intent": "translate this to French"}'&lt;/span&gt;
curl &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{"intent": "what is the mass of Jupiter"}'&lt;/span&gt;
curl &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{"intent": "search the web for AI news"}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the top capability match has no live endpoints, EntRoute falls through to the next-best match (within a tight confidence window) so the agent still gets a useful result.&lt;/p&gt;

&lt;h2&gt;
  
  
  Integration: Three Ways In
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Option 1: MCP Server (Claude Code, Cursor, etc.)
&lt;/h3&gt;

&lt;p&gt;One command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude mcp add entroute &lt;span class="nt"&gt;--&lt;/span&gt; npx @entroute/mcp-server
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Your agent gets three tools:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;discover_paid_api&lt;/code&gt;&lt;/strong&gt;: find endpoints by intent or capability&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;call_paid_api&lt;/code&gt;&lt;/strong&gt;: call an endpoint with automatic x402 payment&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;list_capabilities&lt;/code&gt;&lt;/strong&gt;: browse all available categories&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The MCP server includes &lt;code&gt;sample_request&lt;/code&gt; and &lt;code&gt;sample_response&lt;/code&gt; in its output so the agent sees the exact parameter format, no guessing.&lt;/p&gt;

&lt;h3&gt;
  
  
  Option 2: TypeScript SDK
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; @entroute/sdk-agent-ts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;EntRouteClient&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@entroute/sdk-agent-ts&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;EntRouteClient&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;baseUrl&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://api.entroute.com&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="c1"&gt;// Discover endpoints&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;discover&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;intent&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;get ETH token price&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;constraints&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;max_price&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.01&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="c1"&gt;// Or discover + call with automatic fallback&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;discoverAndCall&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;capability_id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;defi.token_price&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;buildRequest&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;endpoint&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;endpoint&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;method&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Content-Type&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;application/json&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The SDK handles x402 v1 and v2, automatic payment signing, and fallback to the next-ranked endpoint if the first one fails.&lt;/p&gt;

&lt;h3&gt;
  
  
  Option 3: Raw API
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# List all capabilities&lt;/span&gt;
curl https://api.entroute.com/capabilities

&lt;span class="c"&gt;# Discover with constraints&lt;/span&gt;
curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST https://api.entroute.com/discover &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&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;'{
    "capability_id": "web.search",
    "constraints": {
      "max_price": 0.005,
      "verified_only": true
    }
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No auth required for discovery. Rate limits are generous (60 req/min anonymous, 600 authenticated).&lt;/p&gt;

&lt;h2&gt;
  
  
  What's in the Catalog
&lt;/h2&gt;

&lt;p&gt;EntRoute currently indexes &lt;strong&gt;1,000+ endpoints&lt;/strong&gt; across &lt;strong&gt;37 capabilities&lt;/strong&gt; from &lt;strong&gt;500+ providers&lt;/strong&gt;. Categories include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;DeFi&lt;/strong&gt;: token prices, swap quotes, portfolio analytics, staking&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Web&lt;/strong&gt;: search, scraping, content extraction&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data&lt;/strong&gt;: weather, stocks, knowledge graphs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI&lt;/strong&gt;: text generation, translation, sentiment analysis, image description&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Social&lt;/strong&gt;: Twitter/Farcaster data, social analytics&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Infrastructure&lt;/strong&gt;: QR codes, DNS lookups, URL shortening&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We sync from the Coinbase Bazaar daily and run keyword-based mapping to categorize endpoints. New endpoints are automatically queued for 402 verification.&lt;/p&gt;

&lt;p&gt;Browse the full catalog: &lt;a href="https://entroute.com/capabilities" rel="noopener noreferrer"&gt;entroute.com/capabilities&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Honest Parts
&lt;/h2&gt;

&lt;p&gt;A few things we're upfront about:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fulfillment verification is still early.&lt;/strong&gt; We've confirmed end-to-end payment-to-data for 31 endpoints across 7 capabilities. The rest are 402-verified (they return the right headers) but we haven't confirmed they deliver good data after payment. This is the active frontier.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The x402 ecosystem is young.&lt;/strong&gt; Many endpoints are flaky, some are outright broken, and a non-trivial number accept payment but return errors. That's exactly why we think the verification layer matters, but it also means agent builders should set expectations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;We filter out unpayable endpoints.&lt;/strong&gt; Solana, Tron, and testnet endpoints are excluded from discovery results because most agents can't pay on those networks today.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try It
&lt;/h2&gt;

&lt;p&gt;The fastest way to see if EntRoute is useful for your agent:&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="c"&gt;# See what's available&lt;/span&gt;
curl https://api.entroute.com/capabilities | jq &lt;span class="s1"&gt;'.capabilities | length'&lt;/span&gt;

&lt;span class="c"&gt;# Try a discovery query&lt;/span&gt;
curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST https://api.entroute.com/discover &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&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;'{"intent": "search the web"}'&lt;/span&gt; | jq &lt;span class="s1"&gt;'.ranked_endpoints[0]'&lt;/span&gt;

&lt;span class="c"&gt;# Install the MCP server&lt;/span&gt;
claude mcp add entroute &lt;span class="nt"&gt;--&lt;/span&gt; npx @entroute/mcp-server
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Site: &lt;a href="https://entroute.com" rel="noopener noreferrer"&gt;entroute.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Docs: &lt;a href="https://entroute.com/docs/quickstart" rel="noopener noreferrer"&gt;entroute.com/docs/quickstart&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;SDK: &lt;code&gt;npm install @entroute/sdk-agent-ts&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Stats dashboard: &lt;a href="https://entroute.com/stats" rel="noopener noreferrer"&gt;entroute.com/stats&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We're looking for agent builders to try the integration and API providers who want to monetize without building billing infrastructure. If you have an API and want to list it, the &lt;a href="https://entroute.com/providers" rel="noopener noreferrer"&gt;provider guide&lt;/a&gt; walks through the process.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;EntRoute is open-source and free to query. Built on Cloudflare Workers, D1, and SvelteKit.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>api</category>
      <category>x402</category>
    </item>
  </channel>
</rss>
