<?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: Toolstem Team</title>
    <description>The latest articles on DEV Community by Toolstem Team (@toolstem).</description>
    <link>https://dev.to/toolstem</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%2F3898109%2F2087ea2b-5806-42bb-8ede-56ecef4bfbce.png</url>
      <title>DEV Community: Toolstem Team</title>
      <link>https://dev.to/toolstem</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/toolstem"/>
    <language>en</language>
    <item>
      <title>How an AI Agent Pays $0.01 for Live SEC Data — Without an API Key</title>
      <dc:creator>Toolstem Team</dc:creator>
      <pubDate>Mon, 22 Jun 2026 18:21:51 +0000</pubDate>
      <link>https://dev.to/toolstem/how-an-ai-agent-pays-001-for-live-sec-data-without-an-api-key-153l</link>
      <guid>https://dev.to/toolstem/how-an-ai-agent-pays-001-for-live-sec-data-without-an-api-key-153l</guid>
      <description>&lt;h1&gt;
  
  
  How an AI Agent Pays $0.01 for Live SEC Data — Without an API Key
&lt;/h1&gt;

&lt;p&gt;AI agents need real-world data to be useful. The problem: most data providers require API keys, monthly billing accounts, and rate-limit agreements negotiated by a human. That model breaks down when agents are autonomous — no human to sign up, no process to rotate keys, no budget owner to approve a subscription. There's a better pattern.&lt;/p&gt;




&lt;h2&gt;
  
  
  What x402 Is
&lt;/h2&gt;

&lt;p&gt;x402 is an HTTP-native micropayment protocol built on Base mainnet. Instead of an API key in a header, a client sends a signed USDC authorization using &lt;a href="https://eips.ethereum.org/EIPS/eip-3009" rel="noopener noreferrer"&gt;EIP-3009&lt;/a&gt; &lt;code&gt;transferWithAuthorization&lt;/code&gt;. The server verifies the signature on-chain, releases the data, and the payment settles — all within a single HTTP round-trip.&lt;/p&gt;

&lt;p&gt;The key detail: &lt;strong&gt;the agent's own wallet pays&lt;/strong&gt;, not a developer's credit card. The agent holds a small USDC balance, signs a one-time authorization scoped to that exact call, and the data arrives. No API key. No subscription. No human involved.&lt;/p&gt;

&lt;p&gt;This is what "pay-per-call" actually means at the protocol level.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Toolstem SEC EDGAR MCP Server
&lt;/h2&gt;

&lt;p&gt;Toolstem runs an MCP server at &lt;code&gt;https://mcp.toolstem.com/mcp/sec&lt;/code&gt; that exposes five SEC EDGAR tools over x402. Pricing is tiered by data richness:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;What it returns&lt;/th&gt;
&lt;th&gt;Price per call&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;get_company_filings_summary&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Filing counts, types, recency for a ticker&lt;/td&gt;
&lt;td&gt;$0.005&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;get_insider_signal&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Insider buy/sell activity with net direction&lt;/td&gt;
&lt;td&gt;$0.05&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;get_institutional_signal&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;13F institutional ownership changes&lt;/td&gt;
&lt;td&gt;$0.05&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;get_material_events_digest&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;8-K material event summaries, last 90 days&lt;/td&gt;
&lt;td&gt;$0.50&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;compare_disclosure_signals&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Side-by-side disclosure comparison across tickers&lt;/td&gt;
&lt;td&gt;$0.50&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The server speaks standard MCP protocol — any MCP-compatible client connects without modification. Payment is handled transparently by the client library; the agent sees a normal tool call.&lt;/p&gt;

&lt;p&gt;The server is also listed in the &lt;a href="https://bazaar.x402.org" rel="noopener noreferrer"&gt;Coinbase x402 Bazaar&lt;/a&gt; under &lt;code&gt;payTo&lt;/code&gt; wallet &lt;code&gt;0xB009DA692cF3EFF7567bF727b8B2F3b5BFc3383E&lt;/code&gt;, which matters for autonomous discovery (more on that below).&lt;/p&gt;




&lt;h2&gt;
  
  
  Code Walkthrough
&lt;/h2&gt;

&lt;p&gt;Install the package:&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;# TypeScript / Node&lt;/span&gt;
npm &lt;span class="nb"&gt;install &lt;/span&gt;langchain-toolstem

&lt;span class="c"&gt;# Python&lt;/span&gt;
pip &lt;span class="nb"&gt;install &lt;/span&gt;langchain-toolstem
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here's a complete working agent in TypeScript that calls &lt;code&gt;get_insider_signal&lt;/code&gt; for NVDA. The agent pays automatically — no API key anywhere in the code.&lt;br&gt;
&lt;/p&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;ChatOpenAI&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="s2"&gt;@langchain/openai&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;AgentExecutor&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;createOpenAIToolsAgent&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="s2"&gt;langchain/agents&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;ChatPromptTemplate&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="s2"&gt;@langchain/core/prompts&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;createSecTools&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="s2"&gt;langchain-toolstem&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// Your agent's wallet — holds a small USDC balance on Base mainnet&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;walletPrivateKey&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;AGENT_WALLET_PRIVATE_KEY&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="c1"&gt;// Initialize the SEC EDGAR tools&lt;/span&gt;
  &lt;span class="c1"&gt;// Payment is handled by the x402 client internally — no API key needed&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;tools&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;createSecTools&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;privateKey&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;walletPrivateKey&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;mcpEndpoint&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://mcp.toolstem.com/mcp/sec&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="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;llm&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;ChatOpenAI&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;gpt-4o&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;temperature&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&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;prompt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;ChatPromptTemplate&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;fromMessages&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="s2"&gt;system&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="s2"&gt;You are a financial research agent. Use the available tools to answer questions about SEC filings.&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="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;human&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="s2"&gt;{input}&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="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;placeholder&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="s2"&gt;{agent_scratchpad}&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="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;agent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;createOpenAIToolsAgent&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;llm&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;tools&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;prompt&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;executor&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;AgentExecutor&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;agent&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;tools&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;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;executor&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;invoke&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;input&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;What is the insider trading signal for NVDA over the last 30 days?&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="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;output&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="c1"&gt;// Payment: ~$0.05 USDC deducted from agent wallet, settled on Base mainnet&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What happens under the hood when &lt;code&gt;get_insider_signal&lt;/code&gt; is called:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;langchain-toolstem&lt;/code&gt; constructs an HTTP request to the MCP server&lt;/li&gt;
&lt;li&gt;The x402 client signs a &lt;code&gt;transferWithAuthorization&lt;/code&gt; using EIP-3009 — a one-time USDC transfer authorization scoped to &lt;code&gt;$0.05&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;The authorization is attached to the request header&lt;/li&gt;
&lt;li&gt;The server verifies the signature, fetches the SEC data, and returns the result&lt;/li&gt;
&lt;li&gt;The $0.05 settles on Base mainnet&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The Python equivalent uses &lt;code&gt;createsectools&lt;/code&gt; from the same package (v0.1.0 on PyPI). The pattern is identical — wallet key in, tools out, payment automatic.&lt;/p&gt;




&lt;h2&gt;
  
  
  How Agent Discovery Works
&lt;/h2&gt;

&lt;p&gt;The x402 Bazaar is a registry where x402-compatible servers list their endpoints, pricing, and &lt;code&gt;payTo&lt;/code&gt; addresses. An autonomous agent can query the Bazaar to discover available data providers without any human configuration — the same way a browser discovers a webpage.&lt;/p&gt;

&lt;p&gt;For Toolstem specifically: an agent searching the Bazaar for SEC or financial disclosure tools will find the Toolstem entry, read the tool manifest, fund its wallet with a few dollars of USDC, and start making paid calls — end-to-end autonomous, no developer intervention.&lt;/p&gt;

&lt;p&gt;This closes the loop. The agent's wallet is its identity and payment method. The Bazaar is its service registry. No API keys, no SaaS accounts, no human standing in the middle.&lt;/p&gt;




&lt;h2&gt;
  
  
  Where to Go Next
&lt;/h2&gt;

&lt;p&gt;Try the tools interactively at the &lt;a href="https://www.toolstem.com/playground/" rel="noopener noreferrer"&gt;Toolstem playground&lt;/a&gt; before writing any code. The npm package (&lt;code&gt;langchain-toolstem@0.1.4&lt;/code&gt;) is on npm; the Python package (&lt;code&gt;langchain-toolstem@0.1.0&lt;/code&gt;) is on PyPI. Both connect to the same MCP endpoints at &lt;code&gt;https://mcp.toolstem.com/mcp/finance&lt;/code&gt; and &lt;code&gt;https://mcp.toolstem.com/mcp/sec&lt;/code&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>langchain</category>
      <category>web3</category>
      <category>typescript</category>
    </item>
    <item>
      <title>I built an MCP server that charges AI agents per call using x402 micropayments</title>
      <dc:creator>Toolstem Team</dc:creator>
      <pubDate>Tue, 16 Jun 2026 03:43:35 +0000</pubDate>
      <link>https://dev.to/toolstem/i-built-an-mcp-server-that-charges-ai-agents-per-call-using-x402-micropayments-1lpn</link>
      <guid>https://dev.to/toolstem/i-built-an-mcp-server-that-charges-ai-agents-per-call-using-x402-micropayments-1lpn</guid>
      <description>&lt;h1&gt;
  
  
  I built an MCP server that charges AI agents per call using x402 micropayments
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;By Toolstem&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;You built an MCP server. Agents call it. You pay the API costs. They pay nothing. Every &lt;code&gt;tools/call&lt;/code&gt; invocation burns a few cents of your budget while the agent that triggered it has no idea — and no incentive to care. The standard answer is "wrap it in a SaaS subscription," but that requires a human in the loop to sign up, enter a card, and manage a billing relationship. Most agents don't have humans watching every call. What if the agent just paid for its own data, automatically, without a human anywhere in the loop?&lt;/p&gt;

&lt;p&gt;That's what I built. Here's what I learned.&lt;/p&gt;




&lt;h2&gt;
  
  
  What x402 actually is
&lt;/h2&gt;

&lt;p&gt;HTTP 402 — "Payment Required" — has existed since 1996. It was reserved for future use and then essentially forgotten for 28 years. The &lt;a href="https://x402.org" rel="noopener noreferrer"&gt;x402 protocol&lt;/a&gt; revives it as a machine-to-machine payment standard built on EIP-3009.&lt;/p&gt;

&lt;p&gt;The flow looks like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Agent hits your endpoint with a normal request&lt;/li&gt;
&lt;li&gt;Server returns &lt;strong&gt;HTTP 402&lt;/strong&gt; with a JSON body: payment amount, recipient address, network, token, nonce&lt;/li&gt;
&lt;li&gt;Agent signs an EIP-3009 &lt;code&gt;transferWithAuthorization&lt;/code&gt; — a pre-authorized USDC transfer that the server can submit on behalf of the agent&lt;/li&gt;
&lt;li&gt;Agent retries the request with an &lt;code&gt;X-Payment&lt;/code&gt; header containing the signed authorization&lt;/li&gt;
&lt;li&gt;Server verifies the signature on-chain, submits the transfer, and responds with data&lt;/li&gt;
&lt;li&gt;Settlement confirmed in under 2 seconds on Base mainnet; gas is roughly $0.001&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;No Stripe account. No OAuth flow. No human sign-up. No waiting for a monthly invoice. The agent pays exactly what it used, settled atomically, without ever needing ETH for gas (the server submits the transfer, so only the server needs a small ETH float for gas — the agent only needs USDC).&lt;/p&gt;

&lt;p&gt;This is the "HTTP + payment" primitive that should have existed all along. It's pre-product-market-fit, but the underlying mechanic is sound.&lt;/p&gt;




&lt;h2&gt;
  
  
  The architecture
&lt;/h2&gt;

&lt;p&gt;The core infrastructure is a &lt;strong&gt;Cloudflare Worker acting as a paywall proxy&lt;/strong&gt;. It sits between the public internet and your upstream MCP server, intercepting every request before forwarding it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Agent → Cloudflare Worker (x402 paywall) → Upstream MCP Server → Data sources
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The Worker handles the payment lifecycle:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Receives request&lt;/li&gt;
&lt;li&gt;Checks for a valid &lt;code&gt;X-Payment&lt;/code&gt; header&lt;/li&gt;
&lt;li&gt;If absent: returns 402 with payment details&lt;/li&gt;
&lt;li&gt;If present: verifies the EIP-3009 signature, checks nonce freshness and amount, submits the on-chain transfer&lt;/li&gt;
&lt;li&gt;Forwards to upstream MCP only on successful verification&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One non-obvious constraint: &lt;strong&gt;&lt;code&gt;initialize&lt;/code&gt; and &lt;code&gt;tools/list&lt;/code&gt; must be free.&lt;/strong&gt; Agents need to discover your tool surface before they can decide whether to pay. If you charge for discovery, you never get called at all. Any directory health-check probe (Glama, mcp.so, PulseMCP) also expects a free &lt;code&gt;tools/list&lt;/code&gt; response — paywall those and you fall off the listings. The Cloudflare Worker routes those two MCP message types to an unmetered path.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Per-tool pricing&lt;/strong&gt; is where the model gets interesting. Our SEC EDGAR server runs three tiers:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Tier&lt;/th&gt;
&lt;th&gt;Per call&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;getCompanyFilingsSummary&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Cheap&lt;/td&gt;
&lt;td&gt;$0.005&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;getInsiderSignal&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Standard&lt;/td&gt;
&lt;td&gt;$0.05&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;getInstitutionalSignal&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Standard&lt;/td&gt;
&lt;td&gt;$0.05&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;getMaterialEventsDigest&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Premium&lt;/td&gt;
&lt;td&gt;$0.50&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;compareDisclosureSignals&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Premium&lt;/td&gt;
&lt;td&gt;$0.50&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A filings summary is one EDGAR lookup. &lt;code&gt;compareDisclosureSignals&lt;/code&gt; cross-references insider trades, 13F institutional moves, and 8-K clusters across multiple companies. The compute difference is roughly 100x — so the price difference is 100x. Flat pricing treats them identically, which means you're subsidizing every expensive call with revenue from cheap ones.&lt;/p&gt;

&lt;p&gt;The Finance MCP server (our first server) launched at a flat $0.005 across all tools. Six weeks in, we had $0 revenue. That table above is the lesson.&lt;/p&gt;




&lt;h2&gt;
  
  
  Code: agent side
&lt;/h2&gt;

&lt;p&gt;The LangChain integration wraps the payment layer into a custom fetch function. Everything else is standard agent code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TypeScript / LangChain.js:&lt;/strong&gt;&lt;br&gt;
&lt;/p&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;createReactAgent&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="s2"&gt;@langchain/langgraph/prebuilt&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;createFinanceTools&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="s2"&gt;langchain-toolstem/finance&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;createX402Fetch&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="s2"&gt;langchain-toolstem/x402&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// fetch that auto-signs USDC payments on HTTP 402&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;fetchPay&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;createX402Fetch&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;privateKey&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;X402_PRIVATE_KEY&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;maxPaymentUsd&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.05&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// per-call safety cap&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="c1"&gt;// discovers tools live via MCP tools/list (free)&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;tools&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;createFinanceTools&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;fetchPay&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;agent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;createReactAgent&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;llm&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;tools&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="c1"&gt;// each tools/call costs $0.01 USDC, settled on Base mainnet&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;createX402Fetch&lt;/code&gt; wrapper intercepts any 402 response, signs the EIP-3009 authorization using the agent's private key, and retries transparently. The &lt;code&gt;maxPaymentUsd&lt;/code&gt; cap is a safety rail — the agent refuses to sign any authorization above that threshold, protecting against a misconfigured or malicious server quoting an unexpected price.&lt;/p&gt;

&lt;p&gt;Tools are discovered live via &lt;code&gt;tools/list&lt;/code&gt; on startup (free, not metered), so the agent always sees the current tool surface without anything hardcoded into the package.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Python / LangChain:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;langchain_toolstem&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;create_finance_tools&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;create_x402_httpx_client&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;create_x402_httpx_client&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;0xYOUR_PRIVATE_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;tools&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;create_finance_tools&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;# same pattern — agent signs payments, settles on Base
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For environments where you need a plain &lt;code&gt;http://&lt;/code&gt; URL rather than a custom fetch (e.g., &lt;code&gt;MultiServerMCPClient&lt;/code&gt;), &lt;code&gt;createX402Proxy&lt;/code&gt; spawns a local reverse proxy at &lt;code&gt;localhost:4021&lt;/code&gt; that handles payment signing, so you can point any standard MCP client at it directly.&lt;/p&gt;

&lt;p&gt;The package is &lt;a href="https://www.npmjs.com/package/langchain-toolstem" rel="noopener noreferrer"&gt;&lt;code&gt;langchain-toolstem&lt;/code&gt;&lt;/a&gt; on npm (~1,400 installs/month) and &lt;a href="https://pypi.org/project/langchain-toolstem/" rel="noopener noreferrer"&gt;&lt;code&gt;langchain-toolstem&lt;/code&gt;&lt;/a&gt; on PyPI.&lt;/p&gt;




&lt;h2&gt;
  
  
  What we learned shipping this
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Flat pricing was wrong.&lt;/strong&gt; The Finance server ran flat $0.005 per call for six weeks. Zero meaningful revenue. The math is brutal: even if you hit the plateau of ~1,400 monthly active users typical for popular Apify actors, $0.005 flat yields ~$7/month. The ceiling is too low for a server with real API costs underneath it. Tiered pricing maps price to actual compute — it was the right call, and we should have done it from day one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The free discovery layer is non-negotiable.&lt;/strong&gt; Agents must be able to call &lt;code&gt;tools/list&lt;/code&gt; without triggering a payment. This isn't just good UX — it's a technical requirement for every MCP directory that health-checks your listing. We had one bug early on where an unbilled discovery path was missing, and the server briefly vanished from Glama's listings because the probe got a 402 instead of a tools manifest.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The heartbeat problem is real.&lt;/strong&gt; Coinbase's x402 Bazaar delists your endpoint if it goes 30 days without a confirmed paid call. For a server that's still building an audience, that's a serious risk — you could drop off the directory just as someone is about to discover you. We solved this with a GitHub Actions cron that runs every 6 hours, makes a real paid call from a funded heartbeat wallet, and posts the result to a log. Cost: roughly $0.06/day in USDC. Insurance against delisting: worth it.&lt;/p&gt;

&lt;p&gt;The heartbeat revealed another bug: our initial implementation was calling &lt;code&gt;tools/call&lt;/code&gt; without first completing the MCP &lt;code&gt;initialize&lt;/code&gt; handshake. The server was rejecting the call silently. Fixing it required tracing the raw MCP message sequence. A reminder that the protocol has state — it's not a stateless REST API.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One external paying customer. $0.01.&lt;/strong&gt; I want to be direct about this. The payment rail works end-to-end — 49 self-test transactions confirmed on Base mainnet, and one external payment from wallet &lt;code&gt;0x9CC4&lt;/code&gt; on 2026-06-03 for $0.01. That's the full external revenue picture. The mechanism is proven; adoption is the open question.&lt;/p&gt;

&lt;p&gt;We're self-audited on the security side (no third-party audit yet), and we've run independent AI reviewer passes on the codebase. The x402 verification logic, nonce handling, and private key isolation are the parts that matter most and got the most scrutiny.&lt;/p&gt;




&lt;h2&gt;
  
  
  Where this is going
&lt;/h2&gt;

&lt;p&gt;x402 is a protocol looking for a distribution moment. The primitive is correct: HTTP-native, cryptographic, machine-to-machine, no humans required. What it lacks is the agent wallet layer becoming standard.&lt;/p&gt;

&lt;p&gt;That moment is approaching. Coinbase AgentKit and CDP wallets are building the infrastructure for agents to hold and spend funds natively. When agent wallets are as common as agent LLM clients, x402 becomes the obvious way to monetize any agent-facing API — a single fetch wrapper is all the integration a developer needs.&lt;/p&gt;

&lt;p&gt;Until then, the pattern is in early-adopter territory. The agents that can use it today are ones whose operators have explicitly provisioned a funded wallet and a private key in their environment. That's not zero — it's the population of developers actively building agentic systems who care about cost attribution.&lt;/p&gt;

&lt;p&gt;The server is live at &lt;strong&gt;mcp.toolstem.com&lt;/strong&gt;. Try it with a funded Base wallet. &lt;code&gt;initialize&lt;/code&gt; and &lt;code&gt;tools/list&lt;/code&gt; are always free — you can inspect the full tool surface before committing a cent.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;The Finance and SEC EDGAR MCP servers are listed in &lt;a href="https://x402.org/bazaar" rel="noopener noreferrer"&gt;Coinbase's x402 Bazaar&lt;/a&gt;. Source: &lt;a href="https://github.com/toolstem/toolstem-mcp-server" rel="noopener noreferrer"&gt;github.com/toolstem/toolstem-mcp-server&lt;/a&gt; and &lt;a href="https://github.com/toolstem/toolstem-sec-mcp-server" rel="noopener noreferrer"&gt;github.com/toolstem/toolstem-sec-mcp-server&lt;/a&gt;. Walletless demo at &lt;a href="https://www.toolstem.com/playground/" rel="noopener noreferrer"&gt;toolstem.com/playground&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>webmonetization</category>
      <category>typescript</category>
      <category>ai</category>
    </item>
    <item>
      <title>I built the MCP server Greg Isenberg recommends in his 2026 distribution playbook. Here's day 7.</title>
      <dc:creator>Toolstem Team</dc:creator>
      <pubDate>Mon, 27 Apr 2026 23:32:52 +0000</pubDate>
      <link>https://dev.to/toolstem/i-built-the-mcp-server-greg-isenberg-recommends-in-his-2026-distribution-playbook-heres-day-7-3c33</link>
      <guid>https://dev.to/toolstem/i-built-the-mcp-server-greg-isenberg-recommends-in-his-2026-distribution-playbook-heres-day-7-3c33</guid>
      <description>&lt;p&gt;Last week Greg Isenberg dropped an &lt;a href="https://podcasts.apple.com/us/podcast/making-with-ai-marketing/id1593424985?i=1000758276448" rel="noopener noreferrer"&gt;episode of The Startup Ideas Podcast&lt;/a&gt; about distribution in 2026. The thesis: AI commoditized code; the moat is now distribution. His Strategy #1 — out of seven — was &lt;strong&gt;"MCP servers as your sales team."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I'd started building one a week before the episode dropped. So instead of theorizing, here's the worked example: what a finished commercial-grade MCP server looks like, what shipping one costs, and what's actually happening on day 7.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I built
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://apify.com/toolstem/toolstem-mcp-server" rel="noopener noreferrer"&gt;Toolstem&lt;/a&gt; is a financial-data MCP server. It exposes three tools to AI agents:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;get_stock_snapshot(ticker)&lt;/code&gt; — current quote, key ratios, recent performance&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;dcf_analysis(ticker, assumptions)&lt;/code&gt; — discounted cash flow with full assumption transparency&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;compare_stocks(tickers[])&lt;/code&gt; — side-by-side valuation across N tickers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It's hosted as a paid actor on &lt;a href="https://apify.com/toolstem/toolstem-mcp-server" rel="noopener noreferrer"&gt;Apify Store&lt;/a&gt; at $0.005 per tool call. No subscription. No contracts. No human sales calls. An agent discovers it, calls it, gets billed per call. The agent's caller (a human or another agent) eventually pays the agent's pass-through.&lt;/p&gt;

&lt;p&gt;The whole thing is faceless. There is no founder photo. There is no founder LinkedIn. The brand is a deep-blue mark and a stock typeface. This is the operating model: AI buys from AI.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why MCP is the real distribution play
&lt;/h2&gt;

&lt;p&gt;Here's the part Greg got exactly right and most takes don't.&lt;/p&gt;

&lt;p&gt;A typical SaaS company spends a third or more of revenue on go-to-market — sales reps, content marketing, conferences, paid ads. That's the cost of fighting for human attention.&lt;/p&gt;

&lt;p&gt;When the buyer is an AI agent, you don't fight for attention. The agent's framework points to a directory. The directory exposes a list of tools. The tool description and schema are the entire pitch. There is no awareness funnel, no SDR, no demo, no email sequence. It is among the most frictionless distribution surfaces ever built for software — &lt;em&gt;if&lt;/em&gt; you can actually be in those directories with a clean spec.&lt;/p&gt;

&lt;p&gt;Greg's framing in &lt;a href="https://x.com/startupideaspod/status/2038697353855787133" rel="noopener noreferrer"&gt;the episode&lt;/a&gt;: building an MCP server in 2026 is like building for mobile in 2010 — early movers own the directory real estate.&lt;/p&gt;

&lt;p&gt;This is correct, with two caveats.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Caveat 1: Many MCP directories exist; the directory game is real.&lt;/strong&gt; Smithery, Glama, mcp.so, PulseMCP, the official &lt;code&gt;modelcontextprotocol/servers&lt;/code&gt; registry, awesome-mcp-servers, the Apify Store. Each has different submission requirements, different ranking signals, different audiences. Listing your server in 6 of them takes a week. This is a real cost.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Caveat 2: The "vibe coded in a weekend" ad copy is misleading.&lt;/strong&gt; A &lt;em&gt;demo&lt;/em&gt; MCP can be vibe-coded in a weekend. A &lt;em&gt;commercial&lt;/em&gt; one — with PPE billing wired correctly, a smoke test that actually catches regressions against the live deploy, a release pipeline that doesn't ship broken builds, a default-demo for the empty-input probes that directory health-checks fire at you — takes longer. Not weeks. But not a weekend either.&lt;/p&gt;

&lt;h2&gt;
  
  
  Architecture in three sentences
&lt;/h2&gt;

&lt;p&gt;The MCP server is a TypeScript actor running on Apify. Tools wrap &lt;a href="https://financialmodelingprep.com/" rel="noopener noreferrer"&gt;Financial Modeling Prep's&lt;/a&gt; free API tier (250 calls/day cap, 512MB/30d bandwidth). Apify's Pay-Per-Event billing fires on every successful tool call; the platform handles billing, charges the caller, and pays out monthly.&lt;/p&gt;

&lt;p&gt;Source: &lt;a href="https://github.com/toolstem/toolstem-mcp-server" rel="noopener noreferrer"&gt;github.com/toolstem/toolstem-mcp-server&lt;/a&gt;. Examples: &lt;a href="https://github.com/toolstem/toolstem-mcp-examples" rel="noopener noreferrer"&gt;github.com/toolstem/toolstem-mcp-examples&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Day-7 numbers, honestly
&lt;/h2&gt;

&lt;p&gt;This is the section every launch post conveniently skips.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Day 7&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Apify Store users&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Apify Store MAU&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Apify revenue&lt;/td&gt;
&lt;td&gt;$0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;npm downloads&lt;/td&gt;
&lt;td&gt;1,084 (mostly registry indexers — collapsing now)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GitHub stars / forks&lt;/td&gt;
&lt;td&gt;0 / 0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GitHub unique views&lt;/td&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;External Apify runs&lt;/td&gt;
&lt;td&gt;2 (both confirmed Microsoft Azure datacenter probes from directory health checks — not real users)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Greg's episode uses an example of a fintech MCP that hit "150 installs in 30 days, $0 ad spend, vibe coded." If that's true, the creator did something right that I have not done yet. I'm spending this week trying to figure out what.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I think the gap is
&lt;/h2&gt;

&lt;p&gt;Distribution is exactly what Greg said it is: the work. Building was the easy part. The build took ~2 days of vibe-coding plus ~5 days of hardening (smoke tests, release pipeline, OIDC publishing, default-demo for probes). Distribution is going to take longer than the build did.&lt;/p&gt;

&lt;p&gt;Here's the work, ranked by what I think will move the needle most:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Be in every directory.&lt;/strong&gt; Smithery and Glama are live. mcp.so, PulseMCP, modelcontextprotocol/servers, awesome-mcp-servers all in flight this week. This is mostly clerical.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Answer-engine-optimize the README.&lt;/strong&gt; The episode mentions this as Strategy #4. AI agents reading the README to decide whether to call the tool need clear, structured, citation-ready prose. Not marketing copy. Direct semantics.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Programmatic SEO on the docs.&lt;/strong&gt; Episode Strategy #2. Each tool gets a dedicated page targeting &lt;code&gt;[tool name] for AI agents&lt;/code&gt;. Each ticker comparison gets a page. Build once, compounds forever. (Peter Levels, per the same &lt;a href="https://podcasts.apple.com/us/podcast/making-with-ai-marketing/id1593424985?i=1000758276448" rel="noopener noreferrer"&gt;episode&lt;/a&gt;: AI referrals went from 4% to 20% in one month.)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Ship the second vertical fast.&lt;/strong&gt; First-mover advantage in directories is per-vertical. SEC filings MCP next; weather and sports odds after that.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Karma in the right communities.&lt;/strong&gt; r/mcp, r/LocalLLaMA, the Anthropic Discord. Not posting links — answering questions substantively over weeks. This is slow distribution. It's also the most durable.&lt;/p&gt;

&lt;p&gt;I'm not paying for ads. I'm not buying a newsletter (yet — that's Strategy #6 from the episode and I'll revisit at $1K MRR). I'm not running a viral artifact play. The plan is directories + AEO + community presence + shipping a second vertical.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I'd tell anyone building one this week
&lt;/h2&gt;

&lt;p&gt;Three things.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One: Build for the agent reader, not the human reader.&lt;/strong&gt; Tool names, descriptions, parameter schemas — the agent has to decide whether to call your tool from text alone. No marketing. No cleverness. Direct functional language. Read it back as if you were Claude trying to pick between three tools that all look similar.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Two: Get billing right or it doesn't matter.&lt;/strong&gt; Apify's PPE event ID in your config has to match the eventName in your &lt;code&gt;Actor.charge()&lt;/code&gt; call exactly. I shipped a version where these mismatched and discovered it via smoke test, not user complaint. Test the billing path before you market the listing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Three: Default-demo on empty input.&lt;/strong&gt; Directory health-checks fire empty-input runs at your actor. If those produce no useful output, every directory probe is a wasted conversion opportunity. Make empty input run a representative tool call (cached so probes don't hammer your upstream API) and you've turned the probes into demos.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where this goes
&lt;/h2&gt;

&lt;p&gt;If Greg is right — and I think he is — the next 12 months are when the MCP directory landscape solidifies. Whoever has clean, monetized, multi-vertical MCPs in every directory by mid-2027 owns a tollbooth.&lt;/p&gt;

&lt;p&gt;I'm going to keep posting actual numbers. If you're building something similar, the Github repos are public and the issues are open. The whole point is AI-to-AI distribution; I don't have a sales team, just a scoreboard.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Toolstem&lt;/strong&gt;: &lt;a href="https://apify.com/toolstem/toolstem-mcp-server" rel="noopener noreferrer"&gt;apify.com/toolstem/toolstem-mcp-server&lt;/a&gt; · &lt;a href="https://github.com/toolstem" rel="noopener noreferrer"&gt;github.com/toolstem&lt;/a&gt; · &lt;a href="https://bsky.app/profile/toolstem.bsky.social" rel="noopener noreferrer"&gt;@toolstem on Bluesky&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Source for the strategy framing: Greg Isenberg, &lt;a href="https://x.com/startupideaspod/status/2038697353855787133" rel="noopener noreferrer"&gt;The Startup Ideas Podcast — "Making $$ with AI Marketing"&lt;/a&gt;, Mar 30 2026.&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>ai</category>
      <category>startup</category>
      <category>distribution</category>
    </item>
  </channel>
</rss>
