
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/">
    <channel>
        <title><![CDATA[ The Cloudflare Blog ]]></title>
        <description><![CDATA[ Get the latest news on how products at Cloudflare are built, technologies used, and join the teams helping to build a better Internet. ]]></description>
        <link>https://blog.cloudflare.com</link>
        <atom:link href="https://blog.cloudflare.com/" rel="self" type="application/rss+xml"/>
        <language>en-us</language>
        <image>
            <url>https://blog.cloudflare.com/favicon.png</url>
            <title>The Cloudflare Blog</title>
            <link>https://blog.cloudflare.com</link>
        </image>
        <lastBuildDate>Thu, 09 Apr 2026 14:40:24 GMT</lastBuildDate>
        <item>
            <title><![CDATA[Launching the x402 Foundation with Coinbase, and support for x402 transactions]]></title>
            <link>https://blog.cloudflare.com/x402/</link>
            <pubDate>Tue, 23 Sep 2025 13:00:00 GMT</pubDate>
            <description><![CDATA[ Cloudflare is partnering with Coinbase to create the x402 Foundation and adding x402 support to the Agents SDK & MCP Servers.  ]]></description>
            <content:encoded><![CDATA[ <p>Cloudflare is partnering with Coinbase to create the x402 Foundation. This foundation’s mission will be to encourage the adoption of the <a href="https://github.com/coinbase/x402">x402 protocol</a>, an updated framework that allows clients and services to exchange value on the web using a common language. In addition to today’s partnership, we are shipping a set of features to allow developers to use x402 in the <a href="https://developers.cloudflare.com/agents/x402/"><u>Agents SDK</u></a> and our <a href="https://developers.cloudflare.com/agents/model-context-protocol/"><u>MCP</u></a> integrations, as well as proposing a new deferred payment scheme.</p>
    <div>
      <h3>Payments in the age of agents</h3>
      <a href="#payments-in-the-age-of-agents">
        
      </a>
    </div>
    <p>Payments on the web have historically been designed for humans. We browse a merchant’s website, show intent by adding items to a cart, and confirm our intent to purchase by inputting our credit card information and clicking “Pay.” But what if you want to enable direct transactions between digital services? We need protocols to allow machine-to-machine transactions. </p><p>Every day, sites on Cloudflare send out over a billion HTTP 402 response codes to bots and crawlers trying to access their content and e-commerce stores. This response code comes with a simple message: “Payment Required.”</p><p>Yet these 402 responses too often go unheard. One reason is a lack of standardization. Without a specification for how to format and respond to those response codes, content creators, publishers, and website operators lack adequate tools to convey their payment requests. x402 can give developers a clear, open protocol for websites and automated agents to negotiate payments across the globe. </p>
    <div>
      <h3>A Primer on x402</h3>
      <a href="#a-primer-on-x402">
        
      </a>
    </div>
    <p>Coinbase authored the x402 transaction flow, outlined below, to help machines pay directly for resources over HTTP:</p><ol><li><p>A client attempts to access a resource gated by x402. </p></li><li><p>The server responds with the status code 402 Payment Required. The response body contains payment instructions including the payment amount and recipient.</p></li><li><p>The client requests the x402-gated resource with the payment authorization header.</p></li><li><p>The payment facilitator verifies the client’s payment payload and settles the transaction.</p></li><li><p>The server responds with the requested resource in the response, along with the payment response header that confirms the payment outcome. </p></li></ol><p>This flow creates programmatic access to resources across the Internet. Clients and servers capable of interpreting the x402 protocol are able to transact without the need for accounts, subscriptions, or API keys.</p><p>x402 can be used to monetize traditional use cases, but also enables monetization of a new class of use cases. For example:</p><ul><li><p>An assistant that is able to purchase accessories for your Halloween costume from multiple merchants.</p></li><li><p>An AI agent that pays per browser rendering session, instead of committing to a monthly subscription fee.</p></li><li><p>An autonomous stock trader that makes micropayments for a high quality real-time data feed to drive decisions.</p></li></ul><p>Future versions of x402 could be agnostic of the payment rails, accommodating credit cards and bank accounts in addition to stablecoins. </p>
    <div>
      <h3>Cloudflare’s pay per crawl: proposing the x402 deferred payment scheme </h3>
      <a href="#cloudflares-pay-per-crawl-proposing-the-x402-deferred-payment-scheme">
        
      </a>
    </div>
    <p>Agents and crawlers often require two important functions that already exist in much of today's financial infrastructure: delayed settlement to account for disputes; and a single, aggregated payment to make their accounting simpler. For example, crawlers participating in our <a href="https://blog.cloudflare.com/introducing-pay-per-crawl/"><u>private beta of pay per crawl</u></a> are able to crawl a vast number of pages easily, generate audit logs, and then be charged a single fee via a connected credit card or bank account at the end of each day. </p><p>To account for these types of payment scenarios, we're proposing a new deferred payment scheme for the x402 protocol. This new scheme is specifically designed for agentic payments that don't need immediate settlement and can be handled either through traditional payment methods or stablecoins. By proposing this addition, we're helping to ensure that any compliant server can optionally decouple the cryptographic handshake from the payment settlement itself, giving agents and servers the ability to use pre-negotiated licensing agreements, batch settlements, or subscriptions.</p><p>We will be bringing this new deferred payment scheme to pay per crawl as we expand and evolve the private beta. </p>
    <div>
      <h4>The Handshake Explained</h4>
      <a href="#the-handshake-explained">
        
      </a>
    </div>
    <p>Here’s our initial proposal for the handshake that could be released in the next major version of x402:</p>
    <div>
      <h5>1. The Server’s Offer</h5>
      <a href="#1-the-servers-offer">
        
      </a>
    </div>
    <p>Today, an unauthenticated or unauthorized client attempts to access a resource and receives a <code>402 Payment Required</code> response. The server provides a payment commitment payload that the client can use to construct a re-request. This response is a machine-readable offer, and our proposal includes a new scheme of <b>deferred</b>.</p>
            <pre><code>HTTP/1.1 402 Payment Required
Content-Type: application/json

{
  "accepts": [
    {
      "scheme": "deferred",
      "network": "example-network-provider",
      "resource": "https://example.com/page",
      "...": "...",
      "extras": {
        "id": "abc123",
        "termsUrl": "https://example.com/terms"
      },
    }
  ]
}</code></pre>
            
    <div>
      <h5>2. The Client's Signed Commitment</h5>
      <a href="#2-the-clients-signed-commitment">
        
      </a>
    </div>
    <p>Next, the client re-sends the request with a signed payload containing their payment commitment. The <b>deferred </b>scheme uses HTTP Message Signatures where a <a href="https://datatracker.ietf.org/doc/html/rfc7517?cf_target_id=D4770F028006FD3F2FEE26B65F35A502"><u>JWK-formatted public key</u></a> is available in a hosted directory. The <code>Signature-Input</code> header clearly explains which parts of the request are included in the <code>Signature</code> to serve as cryptographic proof of the client's intent, verifiable by the service provider without an on-chain transaction. </p>
            <pre><code>GET /path/to/resource HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 Chrome/113.0.0 MyBotCrawler/1.1
Payment:
    scheme="deferred",
    network="example-network-provider",
    id="abc123"
Signature-Agent: signer.example.com
Signature-Input:
    sig=("payment" "signature-agent");
    created=1700000000;
    expires=1700011111;
    keyid="ba3e64==";
    tag="web-bot-auth"
Signature: sig=abc==</code></pre>
            
    <div>
      <h5>3. Successful Response</h5>
      <a href="#3-successful-response">
        
      </a>
    </div>
    <p>The resource server validates the signature and returns the content with a confirmation header. The server is responsible for attributing the payment to the account associated with the <b>HTTP message signature</b>, verifying the client's identity and then delivering the content. In this scenario, there is no blockchain associated with the payments. </p>
            <pre><code>HTTP/1.1 200 OK
Content-Type: text/html
Payment-Response:
    scheme="deferred",
    network="example-network-provider",
    id="abc123",
    timestamp=1730872968</code></pre>
            
    <div>
      <h5>4. Payment Settlement</h5>
      <a href="#4-payment-settlement">
        
      </a>
    </div>
    <p>The server can now handle the settlement flexibly. The validated id from the handshake acts as a reference for the transaction. This approach enables a flexible use model without per-request overhead, allowing the server to roll up payments on a subscription, daily, or even batch basis. This creates a flexible framework where the cryptographic trust is established immediately, while the financial settlement can use traditional payment rails or stablecoins. </p>
    <div>
      <h3>Cloudflare’s MCP servers, Agents SDK, and x402 payments</h3>
      <a href="#cloudflares-mcp-servers-agents-sdk-and-x402-payments">
        
      </a>
    </div>
    <p>Running code is what moves an open convention from the theoretical to truly useful, and eventually to a recognized standard. Agents built using Cloudflare’s <a href="https://developers.cloudflare.com/agents/x402/"><u>Agent SDK</u></a> can now pay for resources with x402, and MCP servers can expose tools to be paid for via x402. To show how this works, we created the <a href="https://playground.x402.cloudflare.com/"><u>x402 playground</u></a>, a live demo employing x402. The x402 playground is powered by the <a href="https://developers.cloudflare.com/agents/"><u>Agents SDK</u></a> and has access to tools from <a href="https://developers.cloudflare.com/agents/guides/remote-mcp-server/"><u>MCP servers</u></a> deployed on Cloudflare.</p>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/5Hhey00HlGPmIO76xbR0qi/0bfd542c222bc6ae8bacb71345dc49d3/image1.png" />
          </figure><p>When you open the x402 playground, a new wallet is created and funded with Testnet USDC on a <a href="https://docs.base.org/learn/deployment-to-testnet/test-networks"><u>Base blockchain testnet</u></a>. The agent, built with Agents SDK, has access to an MCP server with both free and paid tools.</p>
            <pre><code>import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { McpAgent } from "agents/mcp";
import { withX402 } from "agents/x402";

export class PayMCP extends McpAgent {
  server = withX402(
    new McpServer({ name: "PayMCP", version: "1.0.0" }),
    X402_CONFIG
  );

  async init() {
    // Paid tool
    this.server.paidTool(
      "square",
      "Squares a number",
      0.01, // Tool price
      {
        a: z.number()
      },
      {},
      async ({ number }) =&gt; {
        return { content: [{ type: "text", text: String(a ** 2) }] };
      }
    );

    // Free tool
    this.server.tool(
      "add-two-numbers",
      "Adds two numbers",
      {
        a: z.number(),
        b: z.number(),
      },
      async ({ a, b }) =&gt; {
        return { content: [{ type: 'text', text: String(a + b) }] };
      }
    );
  }
}</code></pre>
            <p>When the agent attempts to use a paid tool, the MCP server responds with a 402 Payment Required. The agent is able to interpret the payment instructions and prompt the human whether they want to proceed with the transaction. Building an x402-compatible client requires a basic wrapper on the tool call:</p>
            <pre><code>import { Agent } from "agents";
import { withX402Client } from "agents/x402";

export class MyAgent extends Agent {
  // Your Agent definitions...

  async onToolCall() {

    // Build the x402 client
    const x402Client = withX402Client(
      myMcpClient,
      { network: "base-sepolia", account: this.account }
    );

    // The first parameter becomes the confirmation callback.
    // We can set it to `null` if we want the agent to pay automatically.
    const res = await x402Client.callTool(
      this.onPaymentRequired,
      {
        name: toolName,
        arguments: toolArgs
    });
  }
}</code></pre>
            <p>This test agent draws down the funds from the wallet and sends the payment payload to the MCP server, which settles the transaction. The transactions can be specified to execute with or without human confirmation, allowing you to design the interface best suited for your application.</p>
    <div>
      <h3>What’s next? </h3>
      <a href="#whats-next">
        
      </a>
    </div>
    <p>You can get started today by using the <a href="https://developers.cloudflare.com/agents/x402/"><u>Agents SDK</u></a> or by deploying your own <a href="https://developers.cloudflare.com/agents/guides/remote-mcp-server/"><u>MCP server</u></a>.</p><p>We’ll continue to work closely with Coinbase to establish the x402 Foundation. Stay tuned for more announcements on the specifics of the structure very soon.</p><p>We believe in the value of open and interoperable protocols – which is why we are encouraging everyone to contribute to the <a href="https://github.com/coinbase/x402"><u>x402 protocol directly</u></a>. To get in touch with the team at Cloudflare working on x402, email us at <a><u>x402@cloudflare.com</u></a>.</p> ]]></content:encoded>
            <category><![CDATA[Birthday Week]]></category>
            <category><![CDATA[Partners]]></category>
            <category><![CDATA[Coinbase]]></category>
            <category><![CDATA[x402]]></category>
            <guid isPermaLink="false">blhpo3poPntnuPzSzX29s</guid>
            <dc:creator>Will Allen</dc:creator>
            <dc:creator>Cam Whiteside</dc:creator>
            <dc:creator>Rohin Lohe</dc:creator>
            <dc:creator>Steve James</dc:creator>
        </item>
        <item>
            <title><![CDATA[The next step for content creators in working with AI bots: Introducing AI Crawl Control]]></title>
            <link>https://blog.cloudflare.com/introducing-ai-crawl-control/</link>
            <pubDate>Thu, 28 Aug 2025 14:00:00 GMT</pubDate>
            <description><![CDATA[ Cloudflare launches AI Crawl Control (formerly AI Audit) and introduces easily customizable 402 HTTP responses. ]]></description>
            <content:encoded><![CDATA[ <p><i>Empowering content creators in the age of AI with smarter crawling controls and direct communication channels</i></p><p>Imagine you run a regional news site. Last month an AI bot scraped 3 years of archives in minutes — with no payment and little to no referral traffic. As a small company, you may struggle to get the AI company's attention for a licensing deal. Do you block all crawler traffic, or do you let them in and settle for the few referrals they send? </p><p>It’s picking between two bad options.</p><p>Cloudflare wants to help break that stalemate. On July 1st of this year, we declared <a href="https://www.cloudflare.com/press-releases/2025/cloudflare-just-changed-how-ai-crawlers-scrape-the-internet-at-large/"><u>Content Independence Day</u></a> based on a simple premise: creators deserve control of how their content is accessed and used. Today, we're taking the next step in that journey by releasing AI Crawl Control to general availability — giving content creators and AI crawlers an important new way to communicate.</p>
    <div>
      <h2>AI Crawl Control goes GA</h2>
      <a href="#ai-crawl-control-goes-ga">
        
      </a>
    </div>
    <p>Today, we're rebranding our AI Audit tool as <b>AI Crawl Control</b> and moving it from beta to <b>general availability</b>. This reflects the tool's evolution from simple monitoring to detailed insights and <a href="https://www.cloudflare.com/learning/ai/how-to-block-ai-crawlers/">control over how AI systems can access your content</a>. </p><p>The market response has been overwhelming: content creators across industries needed real agency, not just visibility. AI Crawl Control delivers that control.</p>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/pIAbmCR0tTK71umann3w0/e570c5f898e3d399babf6d1f82c2f3d8/image3.png" />
          </figure>
    <div>
      <h2>Using HTTP 402 to help publishers license content to AI crawlers</h2>
      <a href="#using-http-402-to-help-publishers-license-content-to-ai-crawlers">
        
      </a>
    </div>
    <p>Many content creators have faced a binary choice: either they block all AI crawlers and miss potential licensing opportunities and referral traffic; or allow them through without any compensation. Many content creators had no practical way to say "we're open for business, but let's talk terms first."</p><p>Our customers are telling us:</p><ul><li><p>We want to license our content, but crawlers don't know how to reach us. </p></li><li><p>Blanket blocking feels like we're closing doors on potential revenue and referral traffic. </p></li><li><p>We need a way to communicate our terms before crawling begins. </p></li></ul><p>To address these needs, we are making it easier than ever to send customizable<b> </b><a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/402">402 HTTP status codes</a>. </p><p>Our <a href="https://blog.cloudflare.com/introducing-pay-per-crawl/#what-if-i-could-charge-a-crawler"><u>private beta launch of Pay Per Crawl</u></a> put the HTTP 402 (“Payment Required”) response codes to use, working in tandem with Web Bot Auth to enable direct payments between agents and content creators. Today, we’re making customizable 402 response codes available to every paid Cloudflare customer — not just pay per crawl users.</p><p>Here's how it works: in AI Crawl Control, paying Cloudflare customers will be able to select individual bots to block with a configurable message parameter and send 402 payment required responses. Think: "To access this content, email partnerships@yoursite.com or call 1-800-LICENSE" or "Premium content available via API at api.yoursite.com/pricing."</p><p>On an average day, Cloudflare customers are already sending over one billion 402 response codes. This shows a deep desire to move beyond blocking to open communication channels and new monetization models. With the 402 HTTP status code, content creators can tell crawlers exactly how to properly license their content, creating a direct path from crawling to a commercial agreement. We are excited to make this easier than ever in the AI Crawl Control dashboard. </p>
    <div>
      <h2>How to customize your 402 status code with AI Crawl Control: </h2>
      <a href="#how-to-customize-your-402-status-code-with-ai-crawl-control">
        
      </a>
    </div>
    <p><b>For Paid Plan Users:</b></p><ul><li><p>When you block individual crawlers from the AI Crawl Control dashboard, you can now choose to send 402 Payment Required status codes and customize your message. For example: <b>To access this content, email partnerships@yoursite.com or call 1-800-LICENSE</b>.</p></li></ul><p>The response will look like this:</p>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/5v5x41azcAK14DBhXjXPEX/8c0960b4bb556d62e88d19c9dd544f12/image4.png" />
          </figure><p>The message can be configured from Settings in the AI Crawl Control Dashboard:</p>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/2KMdRYwoey9RdYIxmzmFO1/7b39fd82d43349ee1cc4832cb602eb56/image1.png" />
          </figure>
    <div>
      <h2>Beyond just blocking AI bots</h2>
      <a href="#beyond-just-blocking-ai-bots">
        
      </a>
    </div>
    <p>This is just the beginning. We're planning to add additional parameters that will let crawlers understand the content's value, freshness, and licensing terms directly in the 402 response. Imagine crawlers receiving structured data about content quality and update frequency, for example, in addition to contact information.</p><p>Meanwhile, <a href="https://blog.cloudflare.com/introducing-pay-per-crawl/">pay per crawl</a> continues advancing through beta, giving content creators the infrastructure to automatically monetize crawler access with transparent, usage-based pricing.</p><p>What excites us most is the market shift we're seeing. We're moving to a world where content creators have clear monetization paths to become active participants in the development of rich AI experiences. </p><p>The 402 response is a bridge between two industries that want to work together: content creators whose work fuels AI development, and AI companies who need high-quality data. Cloudflare’s AI Crawl Control creates the infrastructure for these partnerships to flourish.</p>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/31Np3qX2ssbeGaJnZHQodA/92246d3618778715c2e8b295b7acaa29/image5.png" />
          </figure><div>
  
</div><p></p> ]]></content:encoded>
            <category><![CDATA[AI Week]]></category>
            <category><![CDATA[Pay Per Crawl]]></category>
            <category><![CDATA[AI]]></category>
            <category><![CDATA[Bots]]></category>
            <category><![CDATA[AI Bots]]></category>
            <category><![CDATA[Bot Management]]></category>
            <guid isPermaLink="false">3UcNgGUfIUIm0EEtNwgLAT</guid>
            <dc:creator>Will Allen</dc:creator>
            <dc:creator>Pulkita Kini</dc:creator>
            <dc:creator>Cam Whiteside</dc:creator>
        </item>
    </channel>
</rss>