<?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: Leo tim</title>
    <description>The latest articles on DEV Community by Leo tim (@leo_tim_773032e9e5e0036b1).</description>
    <link>https://dev.to/leo_tim_773032e9e5e0036b1</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%2F4227231%2F14c6c5cf-c123-4237-9f20-3d7e585158f6.png</url>
      <title>DEV Community: Leo tim</title>
      <link>https://dev.to/leo_tim_773032e9e5e0036b1</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/leo_tim_773032e9e5e0036b1"/>
    <language>en</language>
    <item>
      <title>Weekly PR Digest: Celebrate Your Contributors (Without Writing a Bot)</title>
      <dc:creator>Leo tim</dc:creator>
      <pubDate>Wed, 04 Nov 2026 22:27:47 +0000</pubDate>
      <link>https://dev.to/leo_tim_773032e9e5e0036b1/weekly-pr-digest-celebrate-your-contributors-without-writing-a-bot-1b5i</link>
      <guid>https://dev.to/leo_tim_773032e9e5e0036b1/weekly-pr-digest-celebrate-your-contributors-without-writing-a-bot-1b5i</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3xey5q7vq6d58b7jqib8.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3xey5q7vq6d58b7jqib8.jpg" alt=" " width="800" height="1067"&gt;&lt;/a&gt;## The Problem: Your Contributors Deserve Recognition&lt;/p&gt;

&lt;p&gt;Running an open source project means PRs are flying in. Maintainers and contributors churn through reviews, merges, rebases—and by Friday, nobody remembers the small wins from Monday or Tuesday. A weekly digest that highlights what shipped and thanks the humans who made it happen sounds nice, but hand-writing it every week burns out fast.&lt;/p&gt;

&lt;p&gt;What if your coding agent could build that for you in two minutes?&lt;/p&gt;

&lt;h2&gt;
  
  
  The Workflow
&lt;/h2&gt;

&lt;p&gt;You give your agent a single instruction:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Connect to GitHub and every Monday morning, fetch all PRs merged in my repo since last week. For each one, write a two-line summary of what it does and who merged it. Combine them into a friendly digest and email it to my team.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Your agent wires it up in WebArm24. Here's what the pipeline looks like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Runs on a weekly cron schedule (Monday 8 AM UTC, or whenever you like)&lt;/li&gt;
&lt;li&gt;Makes an HTTP call to the GitHub API to fetch merged PRs with a date filter&lt;/li&gt;
&lt;li&gt;Loops through each PR and calls Claude (via MCP) to generate a one-paragraph summary&lt;/li&gt;
&lt;li&gt;Uses a simple if/else to skip bot PRs or auto-generated commits&lt;/li&gt;
&lt;li&gt;Bundles all summaries into a formatted email body&lt;/li&gt;
&lt;li&gt;Sends the email via your mail provider&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You open the WebArm24 canvas, see the pipeline cards laid out in a clean flow, run a test to see a sample digest, then tweak the email template by asking the agent: &lt;em&gt;Make it friendlier and add a line thanking all contributors at the end.&lt;/em&gt; The agent adjusts the step, you preview again, and when it looks right, you flip the schedule on.&lt;/p&gt;

&lt;p&gt;Every Monday morning your inbox has a ready-to-read digest you can post in Slack or forward to your team.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Matters
&lt;/h2&gt;

&lt;p&gt;Contributor retention is quietly the hardest part of open source. A small, regular acknowledgment—especially one that doesn't feel mass-produced—keeps people motivated. Automating it means you actually &lt;em&gt;do&lt;/em&gt; it, week after week, instead of letting it slide for months and then writing a guilt-driven thanks post.&lt;/p&gt;

&lt;p&gt;And because the pipeline lives in your WebArm24 workspace, you can tweak it anytime. Want to add a contributor count? Ask the agent to add it. Want to call out the review count, not just merges? Change the filter. The version history means you never lose a working version.&lt;/p&gt;

&lt;h2&gt;
  
  
  Remix Ideas
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Daily stand-up prep:&lt;/strong&gt; Fetch PRs merged yesterday, open issues added, and GitHub discussions started. Format as a quick morning briefing for your team.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Contributor leaderboard:&lt;/strong&gt; Once a month, rank contributors by merged PR count and email a fun &lt;em&gt;Hall of Fame&lt;/em&gt; summary. The agent can add a playful tone without you lifting a finger.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stale PR alert:&lt;/strong&gt; Use the GitHub API to find PRs waiting for review longer than 7 days. Run this on a Tuesday morning and ping reviewers who marked themselves as available.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Build It
&lt;/h2&gt;

&lt;p&gt;Head to &lt;a href="https://webarm24.online" rel="noopener noreferrer"&gt;WebArm24&lt;/a&gt;, sign up for free credits, and connect your coding agent:&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 &lt;span class="nt"&gt;--transport&lt;/span&gt; http webarm24 https://webarm24.online/mcp &lt;span class="nt"&gt;--api-key&lt;/span&gt; YOUR_KEY
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Paste the workflow idea into your agent, and it will create the whole pipeline for you. You'll get a canvas with every step visible, the ability to test it right away, and fine-grained control over the schedule. No backend hosting, no cron daemon, no Zapier tabs open all day.&lt;/p&gt;

&lt;p&gt;The best part? It takes about five minutes from idea to running pipeline. Go build it and let your contributors know they're seen.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>automation</category>
      <category>opensource</category>
      <category>agents</category>
    </item>
    <item>
      <title>AI Agents + Browser Automation: Extract Web Data Without Writing Scrapers</title>
      <dc:creator>Leo tim</dc:creator>
      <pubDate>Wed, 04 Nov 2026 22:08:21 +0000</pubDate>
      <link>https://dev.to/leo_tim_773032e9e5e0036b1/ai-agents-browser-automation-extract-web-data-without-writing-scrapers-5bmi</link>
      <guid>https://dev.to/leo_tim_773032e9e5e0036b1/ai-agents-browser-automation-extract-web-data-without-writing-scrapers-5bmi</guid>
      <description>&lt;h2&gt;
  
  
  The Problem: Manual Data Extraction Eats Hours
&lt;/h2&gt;

&lt;p&gt;You need to pull pricing data from three competitor sites. Extract user feedback from a web forum. Monitor job listings. Combine data from multiple sources into a spreadsheet. These tasks feel simple—click here, copy that, paste there—but they're mind-numbing and error-prone.&lt;/p&gt;

&lt;p&gt;Traditionally, you'd write a web scraper. You'd parse HTML, handle pagination, deal with JavaScript rendering, debug when the site layout changes. It works, but it's slow to build and brittle to maintain.&lt;/p&gt;

&lt;p&gt;There's a better way: let an &lt;strong&gt;AI agent control your browser&lt;/strong&gt; and extract the data by following plain-English instructions. You describe &lt;em&gt;what&lt;/em&gt; you want; the agent figures out &lt;em&gt;how&lt;/em&gt; to get it.&lt;/p&gt;

&lt;h2&gt;
  
  
  How AI Agents + Browser Automation Work Together
&lt;/h2&gt;

&lt;p&gt;Browser automation tools (like Playwright, Selenium, or Puppeteer) let programs click buttons, scroll pages, and read text just like a human would. AI agents—powered by large language models—can interpret natural language instructions and decide which actions to take.&lt;/p&gt;

&lt;p&gt;When you combine them:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;You tell the agent what to do in plain English&lt;/li&gt;
&lt;li&gt;The agent sees the current page (via screenshot or DOM structure)&lt;/li&gt;
&lt;li&gt;The agent decides what to click, type, or read next&lt;/li&gt;
&lt;li&gt;The browser executes those actions&lt;/li&gt;
&lt;li&gt;The agent repeats until the task is done&lt;/li&gt;
&lt;li&gt;Data is extracted and formatted for you&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The result? You get a working data extraction pipeline &lt;strong&gt;without writing a single scraper line&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Real Example: Extracting Competitor Pricing
&lt;/h2&gt;

&lt;p&gt;Let's say you want to track three competitor prices weekly. Here's the plain-English instruction you'd give an AI agent:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Visit each of these URLs: example.com/products, competitor-a.com/shop, competitor-b.com/pricing. On each page, find all products that match the category "Project Management Tools". For each product, extract the name, price, and any discount badge. Return the results as a CSV where each row is: product_name, price, discount, source_url.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The agent would:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Navigate to each URL&lt;/li&gt;
&lt;li&gt;Take a screenshot to see the layout&lt;/li&gt;
&lt;li&gt;Identify product listings (even if the HTML structure differs between sites)&lt;/li&gt;
&lt;li&gt;Click through pagination or load-more buttons if needed&lt;/li&gt;
&lt;li&gt;Extract text and prices&lt;/li&gt;
&lt;li&gt;Format and return the CSV&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No regex. No DOM selectors. No fragile CSS parsing. The agent understands context.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Beats Traditional Scraping
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Resilience:&lt;/strong&gt; When a site redesigns its layout, your scraper breaks. An AI agent adapts—it doesn't rely on specific HTML structures. It understands "find the price on this product card" regardless of whether it's in a &lt;code&gt;&amp;lt;span&amp;gt;&lt;/code&gt; or a &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Speed to value:&lt;/strong&gt; Building and testing a scraper takes hours or days. Describing your task to an AI agent takes minutes. You don't need to learn XPath or debug CSS selectors.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Flexibility:&lt;/strong&gt; Extracting data was task A. Now you need to extract &lt;em&gt;and filter&lt;/em&gt; by price range, and group by brand. Modify your English instruction; the agent adapts. A scraper would need rewriting.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Handling dynamic content:&lt;/strong&gt; Many modern sites load data via JavaScript. Scrapers struggle; they see placeholder HTML. Browser automation sees the final rendered page, so dynamic content is automatically captured.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tools and Platforms to Try
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Browser automation libraries:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Playwright&lt;/strong&gt; (Python, Node.js, C#) — reliable, fast, great for AI integration&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Selenium&lt;/strong&gt; — older, but widely compatible&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Puppeteer&lt;/strong&gt; (Node.js) — excellent for headless Chrome control&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;AI agent frameworks:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Claude (Anthropic)&lt;/strong&gt; — can be integrated with Playwright via custom tools&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OpenAI's function calling&lt;/strong&gt; — similar approach; define actions, let GPT-4 choose which to call&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Anthropic's Computer Use API&lt;/strong&gt; — high-level tool; the model can take screenshots and click&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;No-code platforms:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you don't want to write code at all, platforms like &lt;a href="https://webarm24.online" rel="noopener noreferrer"&gt;WebArm24&lt;/a&gt; let you describe a workflow in plain English—"extract this data from these sites, check for changes weekly"—and the platform's AI builds and runs it. You schedule it, get results in your inbox, done. It's an n8n or Zapier alternative, but powered by AI agents that understand your instructions and can control a browser to extract data.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Practical Workflow
&lt;/h2&gt;

&lt;p&gt;Here's how a real team might implement this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Define the task clearly.&lt;/strong&gt; What data? From where? Any filters or transformations? Write it down in a Slack message or document—that's your instruction.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Set up a browser automation script&lt;/strong&gt; that connects to an AI agent (Claude or GPT-4). Provide the instruction and the starting URLs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Let it run.&lt;/strong&gt; The agent sees each page, extracts data, moves to the next.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Format output.&lt;/strong&gt; Tell the agent to return a CSV, JSON, or Google Sheets update.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Schedule it.&lt;/strong&gt; Use a cron job or a platform like WebArm24 to run the extraction weekly, daily, or on-demand.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Add a human loop if needed.&lt;/strong&gt; If the extracted data looks odd, the agent should flag it or pause for review.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Common Gotchas
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;AI can hallucinate.&lt;/strong&gt; If a product isn't on the page, the agent might make up a price. Mitigate by asking the agent to cite the text it's reading ("extract the price from the text you see, not from your knowledge base") and by spot-checking results.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rate limiting and detection.&lt;/strong&gt; Sites may block rapid requests or bot traffic. Use delays between clicks, rotate user agents, and respect robots.txt. An ethical approach: if you need frequent updates, talk to the site owner about an API.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Complex UX.&lt;/strong&gt; Some sites require CAPTCHA, login, or unusual interactions. Browser automation shines here because it's human-like, but an AI agent might need help. You can annotate: "If you see a login form, stop and alert the user."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cost.&lt;/strong&gt; Calling an AI API for every click adds up. For high-volume tasks, batch your requests. Run the extraction overnight when it's cheapest, or use cheaper models for simple tasks.&lt;/p&gt;

&lt;h2&gt;
  
  
  When to Use This Approach
&lt;/h2&gt;

&lt;p&gt;Use AI + browser automation for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;One-time or low-frequency extractions&lt;/strong&gt; (weekly reports, quarterly research)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multiple sites with different layouts&lt;/strong&gt; (AI adapts; scrapers don't)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tasks involving UX judgment&lt;/strong&gt; ("click only the items on sale", "find the 'Contact Us' link")&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rapid prototyping&lt;/strong&gt; (you need data fast, maintainability is secondary)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Stick with a scraper for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;High-volume, real-time extraction&lt;/strong&gt; (millions of rows per day; cost matters)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Simple, stable targets&lt;/strong&gt; (one site, consistent HTML, you control the endpoint)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Offline-first workflows&lt;/strong&gt; (you need zero latency)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Getting Started Today
&lt;/h2&gt;

&lt;p&gt;If you're new to this, start small:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Pick one website you want to extract data from.&lt;/li&gt;
&lt;li&gt;Install Playwright: &lt;code&gt;pip install playwright&lt;/code&gt; (Python) or &lt;code&gt;npm install playwright&lt;/code&gt; (Node.js).&lt;/li&gt;
&lt;li&gt;Write a five-line script that navigates to the site and takes a screenshot.&lt;/li&gt;
&lt;li&gt;Describe what you want extracted in plain English.&lt;/li&gt;
&lt;li&gt;Use an AI API (Claude, GPT-4) with a prompt that includes the screenshot, your instruction, and a list of possible actions (click, type, scroll, extract text).&lt;/li&gt;
&lt;li&gt;Let it run. Iterate on your instruction based on what it does.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Within an hour, you'll have extracted your first dataset without writing scraper code.&lt;/p&gt;

&lt;p&gt;Or, if you prefer a fully managed experience, platforms like WebArm24 handle the browser, the AI agent, and the scheduling for you. Describe your task, set it on a schedule, and results land in your inbox.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Future: Agents as Data Pipelines
&lt;/h2&gt;

&lt;p&gt;As AI gets smarter and faster, browser automation becomes the new ETL. Instead of building pipelines in code, you'll describe them in English. "Update my pricing dashboard by extracting from these five competitors, transform prices to USD, flag anything that moved &amp;gt;10%, and email me a summary."&lt;/p&gt;

&lt;p&gt;The agent does it all. No code, no maintenance, no fragility.&lt;/p&gt;

&lt;p&gt;Start experimenting today. Your next data extraction task doesn't need a scraper.&lt;/p&gt;

</description>
      <category>automation</category>
      <category>ai</category>
      <category>productivity</category>
      <category>nocode</category>
    </item>
    <item>
      <title>I gave my coding agent an n8n/Zapier-style automation platform over MCP</title>
      <dc:creator>Leo tim</dc:creator>
      <pubDate>Wed, 04 Nov 2026 21:52:55 +0000</pubDate>
      <link>https://dev.to/leo_tim_773032e9e5e0036b1/i-gave-my-coding-agent-an-n8nzapier-style-automation-platform-over-mcp-53ko</link>
      <guid>https://dev.to/leo_tim_773032e9e5e0036b1/i-gave-my-coding-agent-an-n8nzapier-style-automation-platform-over-mcp-53ko</guid>
      <description>&lt;p&gt;Most MCP servers get used one tool call at a time, inside a chat. When the chat closes, the work stops.&lt;/p&gt;

&lt;p&gt;I wanted something else: tell my coding agent &lt;em&gt;"every weekday at 9am, do X and email me"&lt;/em&gt; and have it &lt;strong&gt;build a real workflow that keeps running on its own&lt;/strong&gt;. So I built &lt;strong&gt;&lt;a href="https://webarm24.online" rel="noopener noreferrer"&gt;WebArm24&lt;/a&gt;&lt;/strong&gt;. It's a hosted automation platform in the same space as n8n, Zapier and Make, except it's designed to be driven by an agent over MCP instead of dragged together on a canvas.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it looks like
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2616wazh8o4jxo392phd.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2616wazh8o4jxo392phd.gif" alt="Claude Code building and running a WebArm24 pipeline" width="760" height="475"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The prompt in Claude Code was:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Every weekday at 9am, fetch USD rates for EUR, GBP and JPY, have AI summarize them and email me.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The agent drafted the pipeline, created it, ran it once to check, and the email arrived &lt;strong&gt;15.5 seconds&lt;/strong&gt; later. After that it runs on its cron schedule with no chat open.&lt;/p&gt;

&lt;h2&gt;
  
  
  Connect it in one line
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude mcp add &lt;span class="nt"&gt;--transport&lt;/span&gt; http webarm24 https://webarm24.online/mcp &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--header&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer wak_..."&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Create the &lt;code&gt;wak_...&lt;/code&gt; key with the &lt;strong&gt;MCP&lt;/strong&gt; button at &lt;a href="https://webarm24.online" rel="noopener noreferrer"&gt;webarm24.online&lt;/a&gt;. New accounts get free credits. It's a plain streamable-HTTP endpoint, so Cursor, Windsurf, VS Code and other MCP clients work too.&lt;/p&gt;

&lt;p&gt;Discovery (&lt;code&gt;initialize&lt;/code&gt;, &lt;code&gt;tools/list&lt;/code&gt;) doesn't need a key, so you can inspect all the tools before signing up.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the agent can do
&lt;/h2&gt;

&lt;p&gt;The server exposes about 60 tools, grouped like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pipelines:&lt;/strong&gt; &lt;code&gt;pipeline_create&lt;/code&gt;, &lt;code&gt;pipeline_update&lt;/code&gt;, &lt;code&gt;pipeline_run&lt;/code&gt;, &lt;code&gt;pipeline_run_wait&lt;/code&gt;, &lt;code&gt;pipeline_test_step&lt;/code&gt;, &lt;code&gt;pipeline_debug_chat&lt;/code&gt;, plus groups, version history and restore of deleted pipelines.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI builder:&lt;/strong&gt; &lt;code&gt;pipeline_builder_chat&lt;/code&gt; drafts a pipeline from a plain-English description.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Triggers:&lt;/strong&gt; cron, a one-shot &lt;code&gt;run_at&lt;/code&gt; time, an inbound webhook URL, or a manual run.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Storage:&lt;/strong&gt; persistent per-user JSON/text stores and files that pipelines can read and write.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Direct tools:&lt;/strong&gt; email, JSON analysis, and a browser for sites that have no API.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A pipeline is a list of steps, and each step can use the earlier ones' output through templates like &lt;code&gt;{{prev_output}}&lt;/code&gt;, &lt;code&gt;{{step_2_output}}&lt;/code&gt; or &lt;code&gt;{{step_1.json.items}}&lt;/code&gt;. The step types are:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Step&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;agent&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;An LLM step, which can also drive a browser&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;http_request&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Calls any REST API&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;mcp&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Calls a tool on &lt;strong&gt;any third-party MCP server&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;js&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;JavaScript in V8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;python&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Python in a bubblewrap sandbox (ffmpeg and Pillow available)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;email&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Sends an email&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;if_else&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Branches&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;data_storage&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Persistent stores and files&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  MCP servers as building blocks
&lt;/h2&gt;

&lt;p&gt;The &lt;code&gt;mcp&lt;/code&gt; step is my favorite part. Your pipeline can call other people's MCP servers on a schedule, in parallel, and feed one server's output into another's input.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ft13y662kzue83djsb32d.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ft13y662kzue83djsb32d.gif" alt="TidyData MCP to rows.page MCP pipeline" width="760" height="475"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Every Monday, this pipeline:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Calls &lt;strong&gt;TidyData MCP&lt;/strong&gt; &lt;code&gt;public_holidays&lt;/code&gt; three times in parallel (US, UK, DE)&lt;/li&gt;
&lt;li&gt;Merges the results into 33 rows sorted by date in a JS step&lt;/li&gt;
&lt;li&gt;Publishes them as a shared table through &lt;strong&gt;rows.page MCP&lt;/strong&gt; &lt;code&gt;push&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Emails the team the link&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The whole run takes &lt;strong&gt;5.3 seconds&lt;/strong&gt;, and the step config is just:&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;"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;"mcp"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcp_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://rows.page/mcp"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcp_tool"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"push"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcp_arguments"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"{&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;rows&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: {{prev_output}}, &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;title&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;2027 public holidays&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&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;For servers that need auth, headers can come from pipeline variables: &lt;code&gt;"Authorization": "Bearer {{TOKEN}}"&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I learned building it
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Agents are better at editing workflows than at drawing them.&lt;/strong&gt; Making failures readable was the hard part. Per-step outputs, a "test one step" tool and a debug chat let the agent find and fix its own mistakes instead of guessing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Undo stops being optional once agents edit things unattended.&lt;/strong&gt; Every change, whether it comes from the UI, the AI builder or an agent over MCP, is saved as a revision tagged with its source. Deleted pipelines can be restored too.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use LLMs at build time and keep run time deterministic.&lt;/strong&gt; The &lt;code&gt;mcp&lt;/code&gt; step has an &lt;code&gt;agent&lt;/code&gt; mode where an LLM chains a server's tools itself. For scheduled jobs, though, fixed &lt;code&gt;call_tool&lt;/code&gt; steps were far more predictable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MCP servers: please return &lt;code&gt;structuredContent&lt;/code&gt;.&lt;/strong&gt; A friendly sentence plus JSON in one text block reads well in chat but is painful to use downstream. Clear &lt;code&gt;inputSchema&lt;/code&gt; descriptions with examples (like &lt;code&gt;"year (e.g. 2027)"&lt;/code&gt;) also save agents a lot of wrong guesses.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pricing
&lt;/h2&gt;

&lt;p&gt;WebArm24 uses pay-as-you-go credits with no subscription. Creating and editing pipelines is free. Runs, AI builder calls and direct browser or email tool calls cost credits, and new accounts start with free ones.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Website: &lt;a href="https://webarm24.online" rel="noopener noreferrer"&gt;webarm24.online&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;MCP endpoint: &lt;code&gt;https://webarm24.online/mcp&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Install docs and demos: &lt;a href="https://github.com/leovegas/webarm24-mcp" rel="noopener noreferrer"&gt;github.com/leovegas/webarm24-mcp&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Also on the &lt;a href="https://registry.modelcontextprotocol.io" rel="noopener noreferrer"&gt;official MCP registry&lt;/a&gt; as &lt;code&gt;online.webarm24/webarm24&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I'd love feedback, especially if you run n8n or Zapier in production: &lt;strong&gt;what would stop you from letting an agent maintain your workflows?&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>ai</category>
      <category>automation</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
