<?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: Developer Harsh</title>
    <description>The latest articles on DEV Community by Developer Harsh (@developer_harsh).</description>
    <link>https://dev.to/developer_harsh</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%2F2924015%2F5bfc3142-aa86-4ba7-b393-41368fe2dc5a.jpg</url>
      <title>DEV Community: Developer Harsh</title>
      <link>https://dev.to/developer_harsh</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/developer_harsh"/>
    <language>en</language>
    <item>
      <title>Top Skills &amp; Plugins to use with Grok Build 2026</title>
      <dc:creator>Developer Harsh</dc:creator>
      <pubDate>Thu, 30 Jul 2026 13:39:35 +0000</pubDate>
      <link>https://dev.to/composiodev/top-skills-plugins-to-use-with-grok-build-2026-39a0</link>
      <guid>https://dev.to/composiodev/top-skills-plugins-to-use-with-grok-build-2026-39a0</guid>
      <description>&lt;p&gt;xAI released Grok Build in May, and it’s been improving steadily since then.&lt;/p&gt;

&lt;p&gt;With support for spawning up to 8 parallel subagents and a recently added system for skills and plugins, Grok is now a full-fledged ecosystem that rivals contenders like Claude Code and Codex.&lt;/p&gt;

&lt;p&gt;However, unlike Claude or Codex, Grok comes with a superpower - it can scrape X data, the real-time engine behind every major announcement, quality content, trends and conspiracies, all with your X subscription.&lt;/p&gt;

&lt;p&gt;This gives Grok Build a unique edge for research-heavy workflows. You can track launches as they happen, pull insights from real conversations, spot emerging trends, and turn that live context into apps, agents, or automated workflows.&lt;/p&gt;

&lt;p&gt;Access to real-time data is only one part of the equation, though. To make that information useful, Grok needs the right tools to search, process, design, code, and take action across different platforms.&lt;/p&gt;

&lt;p&gt;But with so many options in place for a single need, it's hard to find the right one.&lt;/p&gt;

&lt;p&gt;This guide aims to cover which ones are worth installing on your first install, why to install them, and how to install them.&lt;/p&gt;

&lt;p&gt;Let’s begin with a quick refresher on what skills and plugins are and why you should install them.&lt;/p&gt;




&lt;h2&gt;
  
  
  What are Skills &amp;amp; Plugins &amp;amp; Why They Matter
&lt;/h2&gt;

&lt;p&gt;The concept of skills and plugins is not new, yet people still often interchange them. Both extend the capabilities of Grok Build and are related but not the same.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Skills&lt;/strong&gt; are small, reusable instruction packs (usually a SKILL.md plus optional scripts) that turn Grok into a consistent specialist.&lt;/p&gt;

&lt;p&gt;They eliminate repetitive, long prompts, enforce high-quality practices such as TDD or careful planning, reduce token waste through focused behaviour, and deliver the same reliable results across projects.&lt;/p&gt;

&lt;p&gt;On the other hand;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Plugins&lt;/strong&gt; are larger, one-command packages that bundle one or more skills with MCP servers, automation hooks, sub-agents, and platform integrations, giving Grok real superpowers.&lt;/p&gt;

&lt;p&gt;With plugins, Grok Build can do live web research, control browsers, perform database operations, analyse production errors, and enable seamless deployments.&lt;/p&gt;

&lt;p&gt;This is essential for complex agentic workflows and is easy to install, adopt, and share.&lt;/p&gt;

&lt;p&gt;With that clarification done, let’s look at how to install skills and plugins in Grok Build before looking at some of the best skills and plugins you should check out/install first.&lt;/p&gt;

&lt;p&gt;Related: Best OpenCode Skills&lt;/p&gt;




&lt;h2&gt;
  
  
  How to install Skills &amp;amp; Plugins in Grok Build
&lt;/h2&gt;

&lt;h3&gt;
  
  
  kills
&lt;/h3&gt;

&lt;p&gt;The Official ones listed on the marketplace can be accessed using &lt;code&gt;/marketplace&lt;/code&gt; inside Grok Build itself.&lt;/p&gt;

&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%2Finisf53vsh7yzg843q13.png" 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%2Finisf53vsh7yzg843q13.png" alt="Way 1" width="799" height="454"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Or you can try manual placement&lt;/p&gt;

&lt;p&gt;Put skills in &lt;code&gt;./.grok/skills/&lt;/code&gt; or &lt;code&gt;~/.grok/skills/&lt;/code&gt;&lt;/p&gt;

&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%2Fs38thr6bsizslal6e7y3.png" 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%2Fs38thr6bsizslal6e7y3.png" alt="Way 2" width="351" height="292"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;or add an extra path in the ~/.grok/config.toml under [skills] .&lt;/p&gt;

&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%2Fhse4pcvta4hw8rq1y7el.png" 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%2Fhse4pcvta4hw8rq1y7el.png" alt="Way 3" width="800" height="528"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Plugins
&lt;/h3&gt;

&lt;p&gt;Grok Plugins can be installed using:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; grok plugin install &amp;lt;name&amp;gt; --trust
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and then verify the plugin by doing &lt;code&gt;/plugin&lt;/code&gt; . &lt;/p&gt;

&lt;p&gt;If it fails, use the Grok Build Marketplace to add it as a plugin.&lt;/p&gt;

&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%2Fgaug1ab1lgmf91by97ik.png" 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%2Fgaug1ab1lgmf91by97ik.png" alt="Way 1" width="800" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Or you can add extra paths in ~/.grok/config.toml under  [plugins] &lt;/p&gt;

&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%2Fpr6u70a4dh36gzjc6rik.png" 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%2Fpr6u70a4dh36gzjc6rik.png" alt="Way 2" width="800" height="521"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;For both skills and marketplace,  Grok Build comes with automatic compatibility support for &lt;code&gt;.claude/skills&lt;/code&gt; and &lt;code&gt;agent/skills&lt;/code&gt;.  Just put skills there and let grok build pick it up.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Alternative
&lt;/h3&gt;

&lt;p&gt;For non-official skills packs like skills.sh use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npx skills@latest add &amp;lt;skill&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We will use any one of the methods listed going forward. Now time to look at top skills and plugins.&lt;/p&gt;




&lt;h2&gt;
  
  
  Top Skills to Use with Grok Build CLI in 2026
&lt;/h2&gt;

&lt;p&gt;These are the top skills I would install if I reinstall Grok Build. Most of them still live in my workspace.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Composio CLI: Power Grok with 1000+ apps from GitHub, Linear, to Figma, Canva.
&lt;/h3&gt;

&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%2Fmjosnvdd5nhisf0wrcgp.png" 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%2Fmjosnvdd5nhisf0wrcgp.png" alt="Compsio" width="800" height="419"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Composio provides Grok Build with access to more than 1,000 applications via a single remote MCP connection. Instead of loading every integration action into the model’s context, it exposes seven meta-tools that let the agent find tools, initiate authorisation, and execute actions when needed.&lt;/p&gt;

&lt;p&gt;This makes it useful for workflows involving applications such as  GitHub, Linear, Jira, Figma, and other external services. When an application has not been connected, Composio can generate an OAuth authorisation link for the user.&lt;/p&gt;

&lt;p&gt;You can install Composio using:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;grok mcp add &lt;span class="nt"&gt;--transport&lt;/span&gt; http composio https://connect.composio.dev/mcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then type &lt;code&gt;/mcp&lt;/code&gt; , select Composio and complete the OAuth flow.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note: In WSL you can’t access the browser directly, so copy-paste the produced URL and configure it.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Alternatively; &lt;/p&gt;

&lt;p&gt;You can type &lt;code&gt;/mcp&lt;/code&gt;  inside Grok Build, in the mcp window press a to add a new mcp. Add the  &lt;code&gt;https://connect.composio.dev/mcp&lt;/code&gt;  and initiate the OAuth flow&lt;/p&gt;

&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%2Fgq9mo0uigg01wvf4yoin.png" 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%2Fgq9mo0uigg01wvf4yoin.png" alt="Step 1" width="799" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&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%2Fdrpztur8uewbs6e55vg4.png" 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%2Fdrpztur8uewbs6e55vg4.png" alt="Step 2" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Or install the Composio CLI directly. It's a CLI for everything Composio&amp;nbsp;that can handle authentication management, tool calling, bash scripting and everything in-between.&lt;/p&gt;

&lt;p&gt;This gives a more composable way for Grok CLI to work with Composio toolkits.&lt;/p&gt;

&lt;p&gt;You can install it with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl -fsSL https://composio.dev/install | bash
composio login
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Complete the OAuth flow and then add the composio-cli skill&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;composio --install-skill composio-cli claude
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This ensures that composio-cli, used by Grok Build, follows the correct instructions and doesn’t hallucinate.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The reason I put this one at the top is because , it offers the skill, plugins and mcp all bundled together under one ecosystem, so one time config is all you need.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  2. Matt Pocock Skills: Add disciplined planning, TDD, debugging, and handoff workflows.
&lt;/h3&gt;

&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%2Fek4knyhxmgvui4ny8hlt.png" 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%2Fek4knyhxmgvui4ny8hlt.png" alt="Matt Pocock" width="738" height="388"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Matt Pocock Skills adds proper engineering discipline to Grok Build. &lt;/p&gt;

&lt;p&gt;Similar to superpowers, it helps the agent plan more effectively, avoid common failure modes, and follow structured processes rather than jumping straight into code.&lt;/p&gt;

&lt;p&gt;It includes practical skills like &lt;code&gt;/grill-me&lt;/code&gt; for questioning plans, &lt;code&gt;/tdd&lt;/code&gt; for test-first development, &lt;code&gt;/diagnosing-bugs&lt;/code&gt; for testing hypotheses before fixing, and handoff for clean session transfers. &lt;/p&gt;

&lt;p&gt;This is still one of the highest-signal skill packs available across coding agents and one of my favourites.&lt;/p&gt;

&lt;p&gt;You can install Matt Pocock Skills using:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx skills@latest add mattpocock/skills
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then run &lt;code&gt;/setup-matt-pocock-skills&lt;/code&gt; once inside Grok Build so it learns your project conventions.&lt;/p&gt;

&lt;p&gt;Related: &lt;a href="https://composio.dev/content/top-codex-skills" rel="noopener noreferrer"&gt;Top Codex Skills&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  3. Caveman: Cut token waste with terse, high-signal agent responses.
&lt;/h3&gt;

&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%2F44wc63rhsrf1jfh1fd1f.png" 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%2F44wc63rhsrf1jfh1fd1f.png" alt="Caveman" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Caveman is an answer for those who want to reduce token waste on long sessions. It forces Grok to drop the unnecessary politeness and over-explanation that usually appears in agent responses like Claude Code, Codex, and so on. &lt;/p&gt;

&lt;p&gt;In practice, it can cut output length by roughly 65% on average (ranging from ~22–87% depending on the task) while keeping the useful content intact. It's a small skill but one worth keeping enabled almost all the time.&lt;/p&gt;

&lt;p&gt;You can install Caveman using:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx skills@latest add JuliusBrussee/skills &lt;span class="nt"&gt;--skill&lt;/span&gt; caveman
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once installed, toggle it with:  &lt;code&gt;/caveman&lt;/code&gt; or by saying "talk like caveman"; turn it off with "normal mode." &lt;/p&gt;

&lt;p&gt;Companion commands include &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;/caveman-commit&lt;/code&gt; (terse commit messages),&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/caveman-review&lt;/code&gt; (one-line PR comments), and&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/caveman-stats&lt;/code&gt; (session savings).&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  4. Whathappened: Turn real-time X conversations into structured briefings.
&lt;/h3&gt;

&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%2Fx3c7qtfsfz2i3hbc31ml.png" 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%2Fx3c7qtfsfz2i3hbc31ml.png" alt="WhatHappened" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you are X-savvy or want real-time information about X in a structured way, what happened is the answer.&lt;/p&gt;

&lt;p&gt;WhatHappened&amp;nbsp;turns real-time X data into clean, structured briefings rather than raw noise, summarises what happened, maps public opinion, surfaces live debates, and pulls key receipts,&amp;nbsp;all using Grok’s built-in X tools. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note : This skill only works properly inside Grok Build.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You can install whathappened using:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx skills add kunchenguid/whathappened
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and then use: &lt;code&gt;/whathappened &amp;lt;query&amp;gt;&lt;/code&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  5. XActions Skills: Scrape, monitor, and automate X workflows without the official API.
&lt;/h3&gt;

&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%2Fb4n3yxcqhjmyjy72ioay.png" 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%2Fb4n3yxcqhjmyjy72ioay.png" alt="XActions" width="799" height="359"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;XActions takes whathappend ability to the next level by doing more than just reading X. It packages scraping, monitoring, and automation capabilities into ready-to-use agent skills.&lt;/p&gt;

&lt;p&gt;You can scrape profiles, followers, threads, monitor accounts, or run simple automation tasks without needing the official X API. This is one of the cleaner ways people have begun to package Grok’s X advantage.&lt;/p&gt;

&lt;p&gt;You can install XActions Skills by cloning the repository and placing the skills you want under your skills folder:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone &amp;lt;https://github.com/nirholas/XActions
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then copy the relevant skill folders into ~/.grok/skills/ or your project’s .grok/skills/.&lt;/p&gt;




&lt;h3&gt;
  
  
  6. Wangnov/grok-skills: Combine web/X research with image, video, and ffmpeg workflows.
&lt;/h3&gt;

&lt;p&gt;Haven’t tried it yet, but on my to-do list. &lt;/p&gt;

&lt;p&gt;&lt;code&gt;Wangnov/grok-skills&lt;/code&gt; is especially useful when your workflow needs both research and media generation. It combines web and X research with image generation, video generation, and basic ffmpeg post-processing.&lt;/p&gt;

&lt;p&gt;Everything runs through a logged-in Grok session, so you avoid extra API costs for media tasks. It’s a practical all-in-one skill for research-plus-assets work.&lt;/p&gt;

&lt;p&gt;You can install Wangnov/grok-skills using:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx skills add Wangnov/grok-skills
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can learn more at: &lt;a href="https://github.com/Wangnov/grok-skills" rel="noopener noreferrer"&gt;https://github.com/Wangnov/grok-skills&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  7. Agentic-Code-Review &amp;amp; Repo-Health-Check: Review code and understand unfamiliar repos safely.
&lt;/h3&gt;

&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%2Fkfbp4t9k4lcl0t6m6q56.png" 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%2Fkfbp4t9k4lcl0t6m6q56.png" alt="Agentic Code Review" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These two skills from the &lt;code&gt;awesome-grok-build&lt;/code&gt; starter kits are especially useful for properly reviewing code and getting oriented in unfamiliar repositories.&lt;/p&gt;

&lt;p&gt;agentic-code-review focuses on correctness, security, tests and regression risk. repo-health-check helps you quickly understand a new codebase and propose the smallest, safe-first change. Both work well with Plan Mode.&lt;/p&gt;

&lt;p&gt;You can install them by cloning the community kit and copying the skill folders:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone &amp;lt;https://github.com/DominikTobureto/awesome-grok-build&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then place the skill folders into your &lt;code&gt;.grok/skills/&lt;/code&gt; directory. Learn more at: &lt;a href="https://github.com/DominikTobureto/awesome-grok-build" rel="noopener noreferrer"&gt;https://github.com/DominikTobureto/awesome-grok-build&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  ### 8. GodotPrompter: Give Grok better Godot, GDScript, scenes, and signal context.
&lt;/h3&gt;

&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%2Ft63d5cgphmbnik831vel.png" 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%2Ft63d5cgphmbnik831vel.png" alt="GoDotPrompter" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you are building games with Godot and want Grok Build to understand Godot-specific patterns, project structure, and common workflows.&lt;/p&gt;

&lt;p&gt;It gives the Grok/Cursor agent better context around GDScript, scenes, signals, and Godot conventions so the suggestions stay more accurate and less generic. &lt;/p&gt;

&lt;p&gt;This is one of the cleanest game-engine-focused plugins currently available for Grok Build.&lt;/p&gt;

&lt;p&gt;You can install GodotPrompter using:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;grok plugin install jame581/GodotPrompter --trust
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then enable it with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;grok plugin enable godot-prompter
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Learn more at: &lt;a href="https://github.com/jame581/GodotPrompter" rel="noopener noreferrer"&gt;https://github.com/jame581/GodotPrompter&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  9. Hyperframes: Create and edit programmatic videos with HTML, CSS, and JavaScript.
&lt;/h3&gt;

&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%2Fh0u2rltq2b9bcmkctkhn.png" 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%2Fh0u2rltq2b9bcmkctkhn.png" alt="Hyperframes" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hyperframes is for those who want a Grok Build or similar agent to create and edit videos using HTML, CSS, and JavaScript rather than traditional timeline editors.&lt;/p&gt;

&lt;p&gt;It ships a full set of agent skills that teach the correct patterns for planning compositions, writing valid HyperFrames HTML, adding animations, linting, previewing and rendering. &lt;/p&gt;

&lt;p&gt;The main entry skill is &lt;code&gt;/hyperframes&lt;/code&gt;, which routes “make me a video” requests to the right workflow.&lt;/p&gt;

&lt;p&gt;You can install Hyperframes skills using:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx skills add heygen-com/hyperframes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and use it with &lt;code&gt;/hyperframes&lt;/code&gt;  in grok build. Learn more at: &lt;a href="https://hyperframes.heygen.com/" rel="noopener noreferrer"&gt;https://hyperframes.heygen.com/&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  10. Remotion Skills: Build production-ready motion graphics and videos with React and TypeScript.
&lt;/h3&gt;

&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%2F6mankrz86yy6exayq2mv.png" 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%2F6mankrz86yy6exayq2mv.png" alt="Remotion" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Remotion is similar to Hyperframes in that it allows you to create motion graphics and programmatic videos using React and TypeScript.&lt;/p&gt;

&lt;p&gt;It teaches the agent Remotion best practices like compositions, animations, sequencing, rendering and project structure &lt;/p&gt;

&lt;p&gt;This makes the output clean and production-ready, rather than generic React code that happens to render video.&lt;/p&gt;

&lt;p&gt;You can install Remotion Skills using:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npx skills add remotion-dev/skills
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can learn more at: &lt;a href="https://www.remotion.dev/docs/ai/skills" rel="noopener noreferrer"&gt;https://www.remotion.dev/docs/ai/skills&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note: Remotion skill work best inside an existing Remotion project, so better first create it.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Related: &lt;a href="https://composio.dev/content/top-design-skills" rel="noopener noreferrer"&gt;Top Design Skills&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Top Plugins to Use with Grok Build
&lt;/h2&gt;

&lt;p&gt;Skills are great; some even perform tasks, but for a seamless experience, plugins are mandatory. These are the ones that still reside directly in my skills.&lt;/p&gt;

&lt;h3&gt;
  
  
  11. Firecrawl: Search, scrape, crawl, and extract clean data from websites.
&lt;/h3&gt;

&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%2Fokkzf5n1gf1p08bz2w29.png" 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%2Fokkzf5n1gf1p08bz2w29.png" alt="Firecrawl" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Firecrawl is especially useful for research, document retrieval, competitive analysis, and data collection from websites.&lt;/p&gt;

&lt;p&gt;It gives Grok Build live access to the web through search, scraping, crawling, website mapping, structured extraction, and browser interaction. &lt;/p&gt;

&lt;p&gt;It can render JavaScript-heavy pages, handle common anti-bot restrictions, and return content as clean Markdown or structured data.&lt;/p&gt;

&lt;p&gt;You can install Firecrawl using:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/marketplace
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then search for &lt;code&gt;firecrawl&lt;/code&gt; and press &lt;code&gt;i&lt;/code&gt; to install it.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note: Firecrawl may request authentication when you first use its hosted MCP server.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  12. Superpowers: Add structured engineering workflows for planning, TDD, and debugging.
&lt;/h3&gt;

&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%2F05b5x39z0eui2zu58bpg.png" 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%2F05b5x39z0eui2zu58bpg.png" alt="Superpowers" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Superpowers is for those who want their agent to plan carefully, validate its work, and follow a more disciplined development process instead of immediately generating code.&lt;/p&gt;

&lt;p&gt;It adds structured software engineering workflows to Grok Build, and the current implementation includes test-driven development, systematic debugging, collaboration patterns, and repeatable engineering processes.&lt;/p&gt;

&lt;p&gt;I personally use this before switching to Matt Pocock's skills.&lt;/p&gt;

&lt;p&gt;You can install it with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;grok plugin install superpowers --trust
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Note: Review the plugin before using --trust, since that option skips the interactive trust prompt.&lt;/p&gt;




&lt;h3&gt;
  
  
  13. Exa: Get fast, high-quality agent-oriented web search results.
&lt;/h3&gt;

&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%2Fmuf5phugkpywbnvg2kmp.png" 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%2Fmuf5phugkpywbnvg2kmp.png" alt="EXA" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Exa provides fast, high-quality agent-oriented search. It works particularly well as a complement to Firecrawl.&lt;/p&gt;

&lt;p&gt;Exa's API is purpose-built for LLMs, so results come back structured and filtered rather than cluttered with ads and navigation, fast enough for an agent to search mid-task without breaking flow. &lt;/p&gt;

&lt;p&gt;For teams, that means less time and token spend per lookup, so search-heavy steps (competitor checks, source verification, quick fact lookups) stop being a bottleneck inside the coding session itself&lt;/p&gt;

&lt;p&gt;Use Exa for quick, accurate retrieval, and switch to Firecrawl for full-page scraping or site crawling.&lt;/p&gt;

&lt;p&gt;You can install the Exa plugin using:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/plugin
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then search for &lt;code&gt;exa&lt;/code&gt; and press &lt;code&gt;i&lt;/code&gt;to install it.&lt;/p&gt;




&lt;h3&gt;
  
  
  14. Vercel: Let Grok manage deployments, environment variables, logs, and domains.
&lt;/h3&gt;

&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%2Fvkz9b384mj9wslorypn1.png" 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%2Fvkz9b384mj9wslorypn1.png" alt="Vercel" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Vercel is for those who want their agents to deploy their projects on the Vercel platform. It gives Grok direct control over deployments, environment variables, build logs, and domains.&lt;/p&gt;

&lt;p&gt;It also keeps Grok aware of current Vercel features, which reduces outdated suggestions.&lt;/p&gt;

&lt;p&gt;For teams, this pairing of live platform knowledge with real deploy/env/log access leads to fewer review cycles spent catching agent suggestions that no longer reflect how Vercel actually works. &lt;/p&gt;

&lt;p&gt;This fixes a common issue with agent integrations: context drift.&lt;/p&gt;

&lt;p&gt;You can install the Vercel plugin using:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/plugin
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then search for &lt;code&gt;vercel&lt;/code&gt; and install it using &lt;code&gt;i&lt;/code&gt; .&lt;/p&gt;




&lt;h3&gt;
  
  
  15. Cloudflare: Build and deploy Workers, Durable Objects, and edge apps with platform-aware guidance.
&lt;/h3&gt;

&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%2F2p5fg7rhbddg31w9fklh.png" 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%2F2p5fg7rhbddg31w9fklh.png" alt="Cloudflare" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Cloudflare is for those scenarios when part of your stack lives on the other side of the world. It provides skills for Workers, Durable Objects, and related Cloudflare tooling.&lt;/p&gt;

&lt;p&gt;The plugin covers the entire Cloudflare developer platform: Workers, Durable Objects, the Agents SDK, MCP servers, Wrangler CLI, and web performance, functioning as a skill library that maps Cloudflare concepts directly to prompts.&lt;/p&gt;

&lt;p&gt;This makes scaffolding and deploying edge projects noticeably smoother inside Grok Build for business and working with it easier.&lt;/p&gt;

&lt;p&gt;You can install Cloudflare skills or plugins using:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/plugin
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then search for &lt;code&gt;cloudflare&lt;/code&gt; and install it using &lt;code&gt;i&lt;/code&gt; &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note: Don’t get confused by the name, if you go to official repo , its given as a plugins.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  16. Chrome DevTools: Debug frontend issues through live browser inspection, traces, and network data.
&lt;/h3&gt;

&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%2Fwwfnd6ja836poqc6sys8.png" 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%2Fwwfnd6ja836poqc6sys8.png" alt="Chrome Dev Tools" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Chrome DevTools is useful for frontend debugging and performance work. It lets Grok control a live browser session. (not on WSL)&lt;/p&gt;

&lt;p&gt;You can record performance traces, inspect network requests, evaluate JavaScript, and take DOM snapshots without leaving the agent workflow.&lt;/p&gt;

&lt;p&gt;Under the hood, this runs on the official Chrome DevTools MCP server, which lets a coding agent control and inspect a live Chrome browser and acts as a Model Context Protocol server, giving the assistant access to the full power of Chrome DevTools for reliable automation, in-depth debugging, and performance analysis.&lt;/p&gt;

&lt;p&gt;This means that instead of an engineer manually opening DevTools, reproducing the issue, and reporting back what they saw, Grok can drive the same browser session directly and return a trace, a failing request, or a DOM state as evidence.&lt;/p&gt;

&lt;p&gt;You can install the Chrome DevTools plugin using:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/plugin
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then search for &lt;code&gt;chrome-devtools&lt;/code&gt; and install it using &lt;code&gt;i&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Related: &lt;a href="https://composio.dev/content/top-claude-code-plugins" rel="noopener noreferrer"&gt;Top Claude Code Plugins&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  17. Sentry: Pull production errors and stack traces into Grok for faster fixes.
&lt;/h3&gt;

&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%2Fyyqplpwldngo1f3tan1l.png" 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%2Fyyqplpwldngo1f3tan1l.png" alt="Sentry" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sentry closes the loop between local development and production. &lt;/p&gt;

&lt;p&gt;It lets Grok pull real error data and stack traces. Combined with Seer-powered analysis, it helps turn production issues into concrete fixes faster.&lt;/p&gt;

&lt;p&gt;This works through Sentry's official Grok plugin, which connects Grok to Sentry via the Sentry MCP server, providing real production issue-debugging context, code review with Sentry data, and monitoring configuration- on top of SDK setup for any platform.&lt;/p&gt;

&lt;p&gt;This means less engineer time spent context-switching between logs, code, and chat to reconstruct what broke, and a shorter gap between an alert firing and a fix landing.&lt;/p&gt;

&lt;p&gt;You can install the Sentry plugin using:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/plugin
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then search for &lt;code&gt;sentry&lt;/code&gt; and install it. Part of the official Grok Build Marketplace.&lt;/p&gt;




&lt;h3&gt;
  
  
  18. Unity MCP + CLI: Drive the Unity editor and iterate on game projects from Grok.
&lt;/h3&gt;

&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%2Fb2434044nlqzo01whd8y.png" 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%2Fb2434044nlqzo01whd8y.png" alt=" Unity MCP " width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you are like me and like to build games in Unity and want Grok Build to actually drive the editor and project instead of just writing C# in isolation.&lt;/p&gt;

&lt;p&gt;People are already using this combination to let Grok open scenes, modify GameObjects, work with the Asset Store, and iterate on playable prototypes much faster. It is currently one of the most practical ways to pair Grok Build with Unity.&lt;/p&gt;

&lt;p&gt;You can set it up by installing the Unity MCP server and connecting it through Grok’s MCP system, then pairing it with a simple Unity-focused skill that teaches the agent your project conventions.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. In Unity, open Package Manager → Add package from git URL
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/CoderGamester/mcp-unity.git" rel="noopener noreferrer"&gt;https://github.com/CoderGamester/mcp-unity.git&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After the package is installed, open Tools → MCP Unity → Server Window and click Force Install Server.&lt;/p&gt;

&lt;p&gt;Then connect it to Grok Build with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;grok mcp add unity
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Note: There is no single official marketplace plugin yet. Most people combine the Unity MCP with grok build and a lightweight custom skill for best results.&lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Skills give Grok better judgment and consistency. Plugins give Grok real tools and reach, but don’t install them all at once.&lt;/p&gt;

&lt;p&gt;Start with a solid foundation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cross-app workflows: Composio CLI or MCP&lt;/li&gt;
&lt;li&gt;Engineering discipline → Matt Pocock Skills + Superpowers&lt;/li&gt;
&lt;li&gt;Token control → Caveman&lt;/li&gt;
&lt;li&gt;X advantage → what happened or XActions&lt;/li&gt;
&lt;li&gt;Web power → Firecrawl + Exa&lt;/li&gt;
&lt;li&gt;Game development → GodotPrompter or Unity MCP setup&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then add the platform plugins that match the work you actually do (Vercel, Cloudflare, Sentry, etc.).&lt;/p&gt;

&lt;p&gt;Use both skills and plugins, but do it with a clear understanding of the use case. Only then does Grok Build start to feel like a real system instead of just another coding agent.&lt;/p&gt;





&lt;p&gt;&lt;/p&gt;&lt;br&gt;
  Sources&lt;br&gt;
  &lt;ul&gt;

&lt;li&gt;Official docs: &lt;a href="https://docs.x.ai/build/features/skills-plugins-marketplaces" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;a href="https://docs.x.ai/build/features/skills-plugins-marketplaces" rel="noopener noreferrer"&gt;https://docs.x.ai/build/features/skills-plugins-marketplaces&lt;/a&gt;
&lt;/li&gt;

&lt;li&gt;Plugin Marketplace announcement: &lt;a href="https://x.ai/news/grok-plugin-marketplace" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;a href="https://x.ai/news/grok-plugin-marketplace" rel="noopener noreferrer"&gt;https://x.ai/news/grok-plugin-marketplace&lt;/a&gt;
&lt;/li&gt;

&lt;li&gt;Firecrawl roundup: &lt;a href="https://www.firecrawl.dev/blog/best-grok-plugins" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;a href="https://www.firecrawl.dev/blog/best-grok-plugins" rel="noopener noreferrer"&gt;https://www.firecrawl.dev/blog/best-grok-plugins&lt;/a&gt;
&lt;/li&gt;

&lt;li&gt;Matt Pocock Skills: &lt;a href="https://github.com/mattpocock/skills" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;a href="https://github.com/mattpocock/skills" rel="noopener noreferrer"&gt;https://github.com/mattpocock/skills&lt;/a&gt;
&lt;/li&gt;

&lt;li&gt;Superpowers: &lt;a href="https://github.com/obra/superpowers" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;a href="https://github.com/obra/superpowers" rel="noopener noreferrer"&gt;https://github.com/obra/superpowers&lt;/a&gt;
&lt;/li&gt;

&lt;li&gt;whathappened: &lt;a href="https://github.com/kunchenguid/whathappened" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;a href="https://github.com/kunchenguid/whathappened" rel="noopener noreferrer"&gt;https://github.com/kunchenguid/whathappened&lt;/a&gt;
&lt;/li&gt;

&lt;li&gt;XActions: &lt;a href="https://github.com/nirholas/XActions" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;a href="https://github.com/nirholas/XActions" rel="noopener noreferrer"&gt;https://github.com/nirholas/XActions&lt;/a&gt;
&lt;/li&gt;

&lt;li&gt;Wangnov/grok-skills: &lt;a href="https://github.com/Wangnov/grok-skills" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;a href="https://github.com/Wangnov/grok-skills" rel="noopener noreferrer"&gt;https://github.com/Wangnov/grok-skills&lt;/a&gt;
&lt;/li&gt;

&lt;li&gt;awesome-grok-build: &lt;a href="https://github.com/DominikTobureto/awesome-grok-build" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;a href="https://github.com/DominikTobureto/awesome-grok-build" rel="noopener noreferrer"&gt;https://github.com/DominikTobureto/awesome-grok-build&lt;/a&gt;
&lt;/li&gt;

&lt;/ul&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;p&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Kimi K3 vs GLM-5.2: What a practical test between 2 taught me</title>
      <dc:creator>Developer Harsh</dc:creator>
      <pubDate>Tue, 28 Jul 2026 13:36:28 +0000</pubDate>
      <link>https://dev.to/composiodev/kimi-k3-vs-glm-52-what-a-practical-test-between-2-taught-me-1ii8</link>
      <guid>https://dev.to/composiodev/kimi-k3-vs-glm-52-what-a-practical-test-between-2-taught-me-1ii8</guid>
      <description>&lt;p&gt;Moonshot AI released Kimi K3 on July 16, 2026, and it landed with a statement: 2.8 trillion parameters, 1 million token context, and open weights by July 27. The previous month, GLM-5.2 was released and is already in production&lt;/p&gt;

&lt;p&gt;This proves that open-source models aren't just catching up to closed ones; they're reshaping what developers and businesses expect.&lt;/p&gt;

&lt;p&gt;This is a comparison built for people who are &lt;em&gt;building things&lt;/em&gt;. No benchmark chasing. No marketing narratives. &lt;/p&gt;

&lt;p&gt;Just what each model does, where it shines, and what matters when you're shipping.&lt;/p&gt;

&lt;h3&gt;
  
  
  TLDR
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Kimi K3&lt;/strong&gt;: 2.8T params, 1M context, always-on reasoning, native multimodal. Best for long agent loops that need sustained reasoning and visual understanding. Frontier pricing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GLM-5.2&lt;/strong&gt;: 744B params (40B active via MoE), 1M context, flexible reasoning effort. Best for coding, math, and cost-efficient throughput. Open weights (MIT) available now.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pick K3&lt;/strong&gt; if: agents need to reason for hours, handle images/UI, cost isn't the bottleneck.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pick GLM-5.2&lt;/strong&gt; if: you want open weights today, need cheap high-volume inference, or your work leans coding/math.&lt;/li&gt;
&lt;li&gt;Few personal builds like games, physics-driven simulation, coding, and behavioral tasks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bottom line&lt;/strong&gt;: Both close the gap with closed models fast. Choice comes down to workload, not hype.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Architecture: Two Very Different Paths to Scale
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Aspect&lt;/th&gt;
&lt;th&gt;Kimi K3&lt;/th&gt;
&lt;th&gt;GLM-5.2&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Total Parameters&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;2.8 trillion&lt;/td&gt;
&lt;td&gt;744 billion total&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Active Parameters&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Not yet disclosed&lt;/td&gt;
&lt;td&gt;~40 billion active (MoE)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Context Window&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;1 million tokens&lt;/td&gt;
&lt;td&gt;1 million tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Key Architecture&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Kimi Delta Attention (KDA) + Attention Residuals&lt;/td&gt;
&lt;td&gt;Mixture-of-Experts (MoE)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;License&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Not yet published&lt;/td&gt;
&lt;td&gt;MIT (no regional limits)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Release Date&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;July 16, 2026&lt;/td&gt;
&lt;td&gt;June 13, 2026&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Kimi K3: Raw Scale Meets Long-Horizon Design with KDA
&lt;/h3&gt;

&lt;p&gt;Kimi K3 is built on Kimi Delta Attention (KDA), a hybrid linear attention mechanism, and Attention Residuals. Moonshot engineered this for &lt;em&gt;sustained&lt;/em&gt; agent workloads, not just bigger benchmarks.&lt;/p&gt;

&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%2Fe6rb40x0g554aroo886l.png" 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%2Fe6rb40x0g554aroo886l.png" alt="Kimi K3 Architecture" width="800" height="748"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The move from K2's 1 trillion parameters to K3's 2.8 trillion is deliberate. Moonshot is charging frontier rates to make the price-to-capability tradeoff hard to ignore. &lt;/p&gt;

&lt;p&gt;You're not getting a discount model trying to go above its weight. Instead, you're getting brute-force capability with specialised attention for long reasoning chains.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note: The full model weights will be released by July 27, 2026, but the technical report with full sparsity ratios and active parameter counts is still pending. You can build on K3 API today, but deep architectural details aren't locked in yet.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  GLM-5.2: Efficiency First, Capability Everywhere with MOE &amp;amp; Index Share
&lt;/h3&gt;

&lt;p&gt;GLM-5.2 is a 744-billion-parameter Mixture-of-Experts model with approximately 40 billion active parameters per token. &lt;/p&gt;

&lt;p&gt;That MoE design means only a fraction of the model activates per token.  This enables throughput that larger dense models can't match.&lt;/p&gt;

&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%2Fwuaf0rsoatwfwne9gw6q.png" 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%2Fwuaf0rsoatwfwne9gw6q.png" alt="GLM 5.2 Architecture" width="799" height="514"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The standout innovation of GLM is its IndexShare, which reuses the same indexer across every four sparse attention layers, reducing per-token FLOPs by 2.9× at a 1M context length. For you, this means GLM-5.2 makes the 1M context practical, not theoretical.&lt;/p&gt;

&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%2F8xhaxkmee51pq5g7cp0w.png" 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%2F8xhaxkmee51pq5g7cp0w.png" alt="Index Share" width="800" height="483"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note :  GLM-5.2 is released under an unrestricted MIT license, which matters if you're deploying locally or need no-strings-attached weights. Deploy on your own hardware, fine-tune, fork with no regional restrictions.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Kimi K3 vs GLM 5.2: Composio Golden Eval
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What does the bench look like?
&lt;/h3&gt;

&lt;p&gt;Composio Golden Eval is a real-account tool-use benchmark. Claude Code drives multi-step SaaS tasks through the hosted Composio MCP router against live accounts, then the final state is checked by reading the actual account back through APIs.&lt;/p&gt;

&lt;p&gt;The grader checks what changed in the account, which is why I care. The verifier reads the account state: labels, Sheets rows, Salesforce or HubSpot records, calendar edits, access lists. There is no transcript-only judgment that the agent basically got it.&lt;/p&gt;

&lt;p&gt;The accounts stay safe because writes are tag-scoped and cleaned up afterwards. Every run leaves tagged artefacts that can be removed after grading, which is the only sane way to run this kind of thing on live Gmail, Google Calendar, Google Drive, Google Sheets, Salesforce, HubSpot, GitHub, Linear, and Slack accounts.&lt;/p&gt;

&lt;p&gt;The run covered 12 scenarios across 24 trials. Seven are historical cases that a competent tool-use model should clear: CRM identity dedup, calendar free/busy checks, recurring-event repair, Drive external-share audits, Gmail label batches, GitHub access audits, and GitHub/Linear reconciliation. &lt;/p&gt;

&lt;p&gt;Five are the harder frontier-kill stress cases: cross-app “sync and reconcile” workflows where the agent has to read Gmail threads, apply exclusion rules, append exact rows to a Sheet ledger, send per-item replies, and write one ops-thread tally.&lt;/p&gt;

&lt;p&gt;The pass condition is an exact final state. These tasks mix exact-set reconciliation, dedup, cross-app joins, and audits with negative constraints. If the agent gets 90% of the rows right but includes one disqualified item, the run still fails. Failed runs can show partial-credit check counts like 8/13, but the outcome metric is still pass, fail, or DNF (did not finish).&lt;/p&gt;

&lt;h3&gt;
  
  
  How I ran it
&lt;/h3&gt;

&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%2Fyy5l5dda1odrft3luhr0.png" 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%2Fyy5l5dda1odrft3luhr0.png" alt="Eval Chain" width="800" height="605"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I ran both models through the same 12 Golden Eval cases against the same live accounts. The readback checks were identical, with the same check names and denominators. There is one harness caveat: Kimi K3 ran under the pi agent harness, while GLM 5.2 ran under Claude Code pointed at OpenRouter. I treat the pass/fail result as a same-task, same-grader comparison, and effort numbers as harness-dependent.&lt;/p&gt;

&lt;p&gt;Grading used real-account API readback, tag-scoped cleanup, pass/fail/dnf per trial, with partial-credit check counts on failures.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Frontier-kill task&lt;/th&gt;
&lt;th&gt;Kimi K3 checks&lt;/th&gt;
&lt;th&gt;GLM 5.2 checks&lt;/th&gt;
&lt;th&gt;Kimi tool calls&lt;/th&gt;
&lt;th&gt;GLM tool calls&lt;/th&gt;
&lt;th&gt;Kimi runtime tokens&lt;/th&gt;
&lt;th&gt;GLM input tokens&lt;/th&gt;
&lt;th&gt;Kimi agent time&lt;/th&gt;
&lt;th&gt;GLM agent time&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Invoice sync&lt;/td&gt;
&lt;td&gt;8/13&lt;/td&gt;
&lt;td&gt;8/13&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;17&lt;/td&gt;
&lt;td&gt;896,094&lt;/td&gt;
&lt;td&gt;1,020,844&lt;/td&gt;
&lt;td&gt;389.8s&lt;/td&gt;
&lt;td&gt;507.4s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Refund ledger&lt;/td&gt;
&lt;td&gt;8/13&lt;/td&gt;
&lt;td&gt;8/13&lt;/td&gt;
&lt;td&gt;21&lt;/td&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;td&gt;1,309,483&lt;/td&gt;
&lt;td&gt;1,334,127&lt;/td&gt;
&lt;td&gt;685.8s&lt;/td&gt;
&lt;td&gt;458.9s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Roster sync&lt;/td&gt;
&lt;td&gt;8/13&lt;/td&gt;
&lt;td&gt;7/13&lt;/td&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;td&gt;609,233&lt;/td&gt;
&lt;td&gt;1,058,024&lt;/td&gt;
&lt;td&gt;505.1s&lt;/td&gt;
&lt;td&gt;418.9s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vendor directory&lt;/td&gt;
&lt;td&gt;11/13&lt;/td&gt;
&lt;td&gt;11/13&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;23&lt;/td&gt;
&lt;td&gt;820,613&lt;/td&gt;
&lt;td&gt;1,683,579&lt;/td&gt;
&lt;td&gt;788.5s&lt;/td&gt;
&lt;td&gt;803.7s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ticket sync&lt;/td&gt;
&lt;td&gt;17/24&lt;/td&gt;
&lt;td&gt;dnf&lt;/td&gt;
&lt;td&gt;23&lt;/td&gt;
&lt;td&gt;dnf&lt;/td&gt;
&lt;td&gt;1,745,612&lt;/td&gt;
&lt;td&gt;dnf&lt;/td&gt;
&lt;td&gt;713.5s&lt;/td&gt;
&lt;td&gt;dnf&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;Runs used the hosted Composio MCP router. Kimi ran under the pi agent harness; GLM ran under Claude Code pointed at OpenRouter. Kimi token counts are total runtime tokens (input + output); GLM's column is input tokens, with another 18K to 46K output tokens per task. Ticket sync is the one task GLM 5.2 did not finish inside the 30-minute cap.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Pass rate was flat: Kimi K3 solved 7 of 12, and GLM 5.2 solved 7 of 12. That is 58% each.&lt;/p&gt;

&lt;p&gt;With the harness caveat above, effort favored Kimi on several finished frontier-kill runs. &lt;/p&gt;

&lt;p&gt;On the four frontier-kill tasks both models finished, Kimi used fewer tool calls on invoice, roster, and vendor, while GLM used one fewer on refund. Kimi also finished Ticket sync in 713.5s with 23 tool calls and 1,745,612 runtime tokens; GLM hit dnf inside the 30-minute cap. &lt;/p&gt;

&lt;p&gt;Time did not point one way: GLM was faster on refund ledger and roster sync, while Kimi was faster on invoice sync and slightly faster on vendor directory.&lt;/p&gt;




&lt;h3&gt;
  
  
  Findings
&lt;/h3&gt;

&lt;p&gt;Here is the task-for-task result on the same 12 cases.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Task&lt;/th&gt;
&lt;th&gt;Band&lt;/th&gt;
&lt;th&gt;Kimi K3&lt;/th&gt;
&lt;th&gt;GLM 5.2&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;CRM identity dedup&lt;/td&gt;
&lt;td&gt;Historical&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Calendar free/busy&lt;/td&gt;
&lt;td&gt;Historical&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Recurring instance repair&lt;/td&gt;
&lt;td&gt;Historical&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Drive external-share audit&lt;/td&gt;
&lt;td&gt;Historical&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gmail label batch&lt;/td&gt;
&lt;td&gt;Historical&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GitHub access audit&lt;/td&gt;
&lt;td&gt;Historical&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GitHub / Linear reconciliation&lt;/td&gt;
&lt;td&gt;Historical&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Invoice sync&lt;/td&gt;
&lt;td&gt;Frontier kill&lt;/td&gt;
&lt;td&gt;❌ 8/13&lt;/td&gt;
&lt;td&gt;❌ 8/13&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Refund ledger&lt;/td&gt;
&lt;td&gt;Frontier kill&lt;/td&gt;
&lt;td&gt;❌ 8/13&lt;/td&gt;
&lt;td&gt;❌ 8/13&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Roster sync&lt;/td&gt;
&lt;td&gt;Frontier kill&lt;/td&gt;
&lt;td&gt;❌ 8/13&lt;/td&gt;
&lt;td&gt;❌ 7/13&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ticket sync&lt;/td&gt;
&lt;td&gt;Frontier kill&lt;/td&gt;
&lt;td&gt;❌ 17/24&lt;/td&gt;
&lt;td&gt;❌ dnf&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vendor directory&lt;/td&gt;
&lt;td&gt;Frontier kill&lt;/td&gt;
&lt;td&gt;❌ 11/13&lt;/td&gt;
&lt;td&gt;❌ 11/13&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Solved&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;7/12&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;7/12&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;Fractions on the failed rows are partial-credit verifier checks: how many graded assertions the model got right before missing the exact-final-state bar. &lt;code&gt;dnf&lt;/code&gt; means GLM 5.2 did not finish Ticket sync inside the 30-minute per-task cap, so no partial score was recorded.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Kimi K3 and GLM 5.2 both cleared the historical seven, both fell on all five frontier-kill workflows, and both ended at 7/12, 58%. The only score gap in the entire suite is one verifier check on Roster sync: Kimi got 8/13, GLM got 7/13.&lt;/p&gt;

&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%2F9erh9bpavwich0pqn8s5.png" 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%2F9erh9bpavwich0pqn8s5.png" alt="Task Results" width="800" height="641"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The historical band did not separate them. Both passed all seven cleanly, including CRM identity dedup, which spans Salesforce, HubSpot, and Gmail. Calendar free/busy, recurring instance repair, Drive external-share audit, Gmail label batch, GitHub access audit, and GitHub / Linear reconciliation all landed green for both models.&lt;/p&gt;

&lt;h3&gt;
  
  
  What it costs
&lt;/h3&gt;

&lt;p&gt;I priced the finished runs from their token counts against current OpenRouter list rates, before cache discounts. The dollar amounts are estimates, but the price gap is wide enough that the direction is clear.&lt;/p&gt;

&lt;p&gt;OpenRouter currently lists Kimi K3 at $3/M input and $15/M output. (openrouter.ai) For GLM 5.2, I used OpenRouter’s current model API rate of about $0.82/M input and $2.59/M output.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Tokens on the finished frontier-kill cases&lt;/th&gt;
&lt;th&gt;Estimated cost per case&lt;/th&gt;
&lt;th&gt;Four-case estimate&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Kimi K3&lt;/td&gt;
&lt;td&gt;~609K to 1.75M runtime tokens&lt;/td&gt;
&lt;td&gt;~$1.83 to $5.25&lt;/td&gt;
&lt;td&gt;~$7.31 to $21.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GLM 5.2&lt;/td&gt;
&lt;td&gt;~1.02M to 1.68M input, plus 18K to 46K output&lt;/td&gt;
&lt;td&gt;~$0.89 to $1.50&lt;/td&gt;
&lt;td&gt;~$3.55 to $6.02&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;GLM sometimes spent more tokens. Its finished cases ran ~1.02M to 1.68M input tokens, while Kimi’s runtime-token band started lower at ~609K. But Kimi’s input rate is about 3.6x GLM’s, so the extra GLM context still comes out cheaper in this estimate.&lt;/p&gt;

&lt;p&gt;Tool calls landed in similar ranges, 13 to 23 per case for both. So the extra GLM tokens on roster and vendor work did not buy extra passes. The scores tied, with GLM carrying the cheaper bill.&lt;/p&gt;

&lt;p&gt;At 1,000 four-case batches, that envelope turns into roughly $7.3K to $21K for Kimi and $3.6K to $6.0K for GLM before cache discounts.&lt;/p&gt;

&lt;h3&gt;
  
  
  Verdict
&lt;/h3&gt;

&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%2Fobu4unmeg9dib78b2nc1.png" 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%2Fobu4unmeg9dib78b2nc1.png" alt="Conclusion" width="800" height="414"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Kimi K3 and GLM 5.2 tied on pass rate, 7/12 each, 58%. I’d give the practical win to Kimi because it finished the biggest frontier case at 17/24 while GLM hit the 30-minute cap, and GLM spent more tokens on roster and vendor for the same or worse result.&lt;/p&gt;

&lt;p&gt;I would pick Kimi K3 when finishing the long tool workflow matters more than the cheaper rate. Ticket sync shows why: Kimi got through 24 turns, posted 17/24, and burned 1.75M runtime tokens. GLM did not finish inside the 30-minute cap. On Roster sync, Kimi also scored 8/13 while GLM scored 7/13, because Kimi posted the cover replies GLM dropped. It did that with 13 tool calls and 609K runtime tokens, while GLM used 19 tool calls and 1.06M input tokens.&lt;/p&gt;

&lt;p&gt;GLM 5.2 makes sense if your workload looks more like the easier historical band, or if you already want the Claude Code via OpenRouter setup and can live with the frontier misses. It matched Kimi’s top-line score, cleared the same 7/7 historical cases, and tied Kimi on Invoice sync, Refund ledger, and Vendor directory by score. Refund ledger is the one frontier case where GLM was cleaner on latency: 458.9s versus Kimi’s 685.8s, with both landing at 8/13.&lt;/p&gt;




&lt;h2&gt;
  
  
  Kimi K3 vs GLM 5.2: On personal builds
&lt;/h2&gt;

&lt;p&gt;So let me share some of the builds I tried with GLM and Kimi K3, along with prompt, time, cost, and builds. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;For all builds I have used open router chatroom&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Meteor City (revival)
&lt;/h3&gt;

&lt;p&gt;Used Kimi K3 + GLM 5.2 to build Meteor City Revival, a game where you race to destroy the entire city before it can regenerate itself. &lt;/p&gt;

&lt;p&gt;The task was initially given to GLM 5.2, but for some reason it stopped mid-session, so I took all the code and asked Kimi to refine and recreate the entire build.&lt;/p&gt;

&lt;p&gt;Cost was approx. $4.3, used around 18.1M Tokens, Time: 1 hr 45 min. This is justified cause without explicitly mentioning it, it generated 10K procedural buildings, the engine, and figured out the lighting, ray tracing, shaders, and optimized the game for mobile as well as web. &lt;/p&gt;

&lt;p&gt;You can play the game at: &lt;a href="https://meteor-city-revival.vercel.app/" rel="noopener noreferrer"&gt;https://meteor-city-revival.vercel.app/&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;/p&gt;
  Prompt Used
  &lt;br&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Create a complete, self-contained, single HTML file using Three.js (via CDN only — no other external dependencies or files) that implements a large-scale 3D photorealistic procedural meteor impact city destruction game/simulation.

**Core Gameplay (must be fully implemented and preserved exactly):**
- Procedural city with buildings that can be damaged and destroyed.
- Clickable "Launch Meteor" button that fires a meteor. User can launch multiple times.
- Buildings regenerate over time.
- **Push-and-wait mechanic**: Holding/clicking the Launch Meteor button charges a larger, more powerful meteor (powerup style).
- **Infinity powerup**: When activated, launches 5 big meteors in quick succession that deal massive damage (enough to push the destruction bar to ~95%).
- Powerups (larger meteor charge and Infinity) drop from meteor impacts and are automatically collected when the player is near them.
- Destruction progress bar that tracks overall city damage.
- At 100% destruction, display the text: "Now I am become Death, the destroyer of worlds."
- UI sliders for meteor size, speed, angle, time of day, and destruction intensity.
- Meteor and impact sounds using Web Audio API.
- Playable simulation/game with smooth performance.

**Visual &amp;amp; Technical Polish Requirements (focus here for realism and quality):**
- Highly realistic procedural city at night: varied building heights (low-rises to skyscrapers), realistic facades with window grids using InstancedMesh (windows have individual emissive colors that flicker or turn off when damaged), different roof styles, subtle material variation (concrete, glass, brick), minor architectural details like ledges.
- Use seed-based procedural variation so the city feels organic. Add roads, paths, and scattered green areas/parks between building clusters.
- Heavy use of InstancedMesh and LOD (Level of Detail) for performance.
- Realistic ground/terrain with subtle height variation, road networks, and support for crater formation on impact.
- Rich night sky: procedural starfield with twinkling stars, subtle moon glow, gradient sky with horizon haze and light pollution from the city. Add very subtle atmospheric effects.
- High-quality meteor: glowing fiery body with long dynamic particle trail (fire, sparks, smoke) that intensifies on entry.
- Realistic impact sequence: bright flash, expanding shockwave (particles + ground ripple), crater, layered particle systems for fire/explosions, dense rising dust/smoke plumes, and flying debris with gravity and tumbling.
- Improved building destruction: pieces break off with dust, structures partially crumble or lean, and damaged areas show reduced lighting/exposed sections.
- Dynamic lighting: moonlight + hemisphere light, multiple flickering point lights from fires and impact, emissive building windows, and fire effects. City lights progressively dim or extinguish with damage.
- Materials: Use MeshStandardMaterial where appropriate. Add subtle specular/roughness variation and rim lighting for depth.
- Special effects: Performant particle systems, screen shake on impact, bloom-like glow on bright elements, subtle motion blur during fast movement or camera fly-through, atmospheric perspective, and fog for depth.
- Overall cinematic yet realistic look with balanced night-time color grading (cool tones with warm fire accents).

**Camera, Controls &amp;amp; Performance Polish:**
- Smooth OrbitControls-style camera (mouse drag to orbit/pan, scroll to zoom) with optional free-fly mode (WASD + mouse look).
- Smooth camera interpolation and gentle auto-orbit when idle.
- Refined slow-motion replay with smooth timeScale control.
- Aggressive performance optimizations for stable 60+ FPS: InstancedMesh, LOD, frustum culling, efficient particle pooling, minimal draw calls.
- Subtle ambient animations (random window flickering, gentle dust movement).

**Technical Requirements:**
- Output ONLY the complete single HTML file (nothing else before or after).
- Must be immediately runnable in a modern browser with no errors.
- Include helpful inline comments explaining key visual, lighting, particle, and optimization techniques.
- Prioritize photorealistic visuals, cinematic quality, smoothness, and immersion while keeping all gameplay mechanics fully functional and unchanged.

Generate the full polished HTML code now.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;




&lt;p&gt;&lt;/p&gt;

&lt;p&gt;Output&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/RSDQZWeAP8E"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  Plane Currents
&lt;/h3&gt;

&lt;p&gt;I always wanted to try low-poly 3D graphics, so I tried it with Kimi K3. &lt;/p&gt;

&lt;p&gt;Use Kimi K3 to build a paper plane simulator where the player passes through rings to gather points and complete the course. All while having a relaxing scene and music going in the background. (no 3d assets)&lt;/p&gt;

&lt;p&gt;This took around 16 minutes to generate, cost me approx $0.45, and used 30K tokens.&lt;/p&gt;

&lt;p&gt;You can play the game by opening the &lt;a href="https://gist.github.com/DevloperHS/0512038a0e1d21a8e854e4a771db8fa7" rel="noopener noreferrer"&gt;game file&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;
  Prompt Used
  &lt;br&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Build me a self contained  Relaxed 3D paper-plane flying gameplay where you launch and steer a customizable plane through glowing rings and floating islands over an ocean, collecting score multipliers in short, physics-light runs with easy controls (hold to launch, mouse/keyboard steering) with stylized low-poly 3D with clean cel-shaded visuals and a sleek, colorful indie-game UI featuring customizable paper planes, glowing rings, floating islands, and simple HUD element graphics. Output a single HTML file.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;




&lt;p&gt;&lt;/p&gt;

&lt;p&gt;And the output generated by the above prompt.&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/F6zLuzzFbGk"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;




&lt;h2&gt;
  
  
  Gargantua Black Hole Geodesic Ray Tracer (Complex Physics Game/Sim) - inspo from X
&lt;/h2&gt;

&lt;p&gt;I was scrolling X and found this massive black hole geodesic ray tracer simulation made by someone. Being the space nerd I am, I wanted to make this too.&lt;/p&gt;

&lt;p&gt;So I did a bit of research and constructed a prompt that requires the model to think through the actual light-bending physics and math that happens near the event horizon of a black hole.&lt;/p&gt;

&lt;p&gt;I was completely hopeless cause fable and GLM 5.3 gave up on the calculation task earlier, but anyway I entered the prompt.  To my surprise, Kimi K3 actually went through the maths and solved it in its thinking traces. &lt;/p&gt;

&lt;p&gt;After approx 14 minutes and burning through 33K tokens, which costed around $0.51 (operouter), it handed me the complete code. &lt;/p&gt;

&lt;p&gt;I ran it, and here are the results&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/oidzFPtpU28"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;
  Prompt Used
  &lt;p&gt;Create a complete, self-contained single HTML file (no external libraries like Three.js) that implements a real-time geodesic raytracer for a Schwarzschild black hole inspired by Gargantua.&lt;/p&gt;

&lt;p&gt;Use raw WebGL2 with GLSL ES 3.00 in a single fragment shader. Implement accurate physics: null geodesic integration with 4th-order Runge-Kutta solver, event horizon, photon sphere, accretion disk with proper rendering, gravitational lensing, Doppler beaming, and gravitational redshift effects. Target stable 60 FPS performance.&lt;/p&gt;

&lt;p&gt;Include mouse-controlled camera orbiting/zooming, and a cyberpunk-style control panel with sliders for parameters (mass, spin, disk density, view angle, etc.). Add subtle particle effects for matter falling in and dynamic lighting/shadows.&lt;/p&gt;

&lt;p&gt;The output must be 100% complete, immediately runnable in a modern browser, with no black screen, NaNs, errors, or missing features. Prioritize numerical correctness, boundary handling, solver discipline, and physical accuracy above all. Verify and comment key physics equations in the code. Make it visually stunning and interactive like a premium physics demo/game.&lt;/p&gt;



&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://gist.github.com/DevloperHS/0ca2efb20b16dd8497026b77a7d5dbba" rel="noopener noreferrer"&gt;Game File&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Yup, the code, math, and physics engine are all built by Kimi K3, and Fable failed to build the simulation with such a level of detail, which makes its claim worth the hype.&lt;/p&gt;

&lt;p&gt;I also tried 2 more tests to verify my doubts, sharing them as a bonus.&lt;/p&gt;




&lt;h3&gt;
  
  
  Bonus Test 1 (Held Karp Problem Solution (NP-Hard)
&lt;/h3&gt;

&lt;p&gt;It's not a surprise to me that Kimi K3 and GLM 5.2 were both able to solve this in no time, but I ran the test to check just raw coding + reasoning ability.&lt;/p&gt;

&lt;p&gt;The task was simple: fix the bug, create an optimal path, load env, run code, and give an answer to the buggy Held-Karp problem. Yup, the task has multiple steps for testing instruction following&lt;/p&gt;

&lt;p&gt;The test cost 0.03 cents, used 82K tokens (most on reasoning), and the result was out in 5 minutes. You can check the buggy code and fixed code from the attached files.&lt;/p&gt;

&lt;p&gt;Game File: &lt;a href="https://gist.github.com/DevloperHS/81d56857c2cee7b8cdd3b84e1d219d9f#file-problem-py" rel="noopener noreferrer"&gt;problems.py&lt;/a&gt; , &lt;a href="https://gist.github.com/DevloperHS/81d56857c2cee7b8cdd3b84e1d219d9f#file-solution-py" rel="noopener noreferrer"&gt;solution.py&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The prompt I used:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Fix all bugs in the Held-Karp code in @file:problem.py so it correctly computes the minimum-cost tour for this 12-city TSP instance. Make the DP, base cases, transitions, and path reconstruction fully correct in  @file:fixed.py. Then create a new environment (.env) inside @file:held-karp-problem, install the dependencies, activate the environment, and run it to output the optimal cost and the tour as a list of cities starting and ending at 0.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Result&lt;/p&gt;

&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%2Fmpfxq3xm0pjgn347td3i.png" 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%2Fmpfxq3xm0pjgn347td3i.png" alt="output" width="799" height="208"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I even validated it with one of my code geek friends and Grok 4.5 (expert)&lt;/p&gt;

&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%2Fd4wyeonlqc8t0vptd9iz.png" 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%2Fd4wyeonlqc8t0vptd9iz.png" alt="grok val" width="799" height="184"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Models don’t just need to output code; they also need to maintain behavioural constraints, so I tested both with a behavioural question. The result was similar.&lt;/p&gt;

&lt;p&gt;The task was simple: to resolve a conflict between team and stakeholder using the STAR Method &lt;/p&gt;

&lt;p&gt;Prompt&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Act as an experienced tech interview coach. Answer the following behavioral interview question using the STAR method (Situation, Task, Action, Result). Make the answer concise, professional, and impactful for a software engineering or tech role. Include quantifiable results where possible and highlight leadership or collaboration skills.

Question: Tell me about a time when you had to resolve a conflict within your team or with a stakeholder.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Both models thought for a very short time and delivered the result in almost the same time. &lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model Name&lt;/th&gt;
&lt;th&gt;Token Count&lt;/th&gt;
&lt;th&gt;Cost&lt;/th&gt;
&lt;th&gt;Duration&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;GLM 5.2&lt;/td&gt;
&lt;td&gt;592&lt;/td&gt;
&lt;td&gt;$0.00162095856&lt;/td&gt;
&lt;td&gt;25.0 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Kimi K3&lt;/td&gt;
&lt;td&gt;763&lt;/td&gt;
&lt;td&gt;$0.012987&lt;/td&gt;
&lt;td&gt;18.3 s&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;However, Kimi K3 won as it delivered a more credible, business-aligned conflict story with quantified stakeholder impact ($200K ARR, measurable failure reduction).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;A product manager and backend engineer clashed over shipping a checkout feature on deadline versus fixing payment failures (affecting 3% of transactions). The tech lead reframed both concerns as "reliable payments delivered fast," then proposed shipping the feature behind a flag while hotfixing the top failure points. The plan shipped on time, cut failures from 3% to 0.4%, retained a $200K client, and became a team standard practice.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;On the other hand, GLM&amp;nbsp;tells a technically impressive but somewhat predictable "engineering debate resolved by benchmarking" narrative.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Two senior engineers deadlocked over GraphQL vs REST for an API redesign, stalling the team for two weeks. The tech lead ran a proof-of-concept benchmark showing GraphQL won on performance (35% payload reduction), then added REST endpoints for backward compatibility to honor both perspectives. Development resumed in 3 days; the API improved response times 30% and maintained support for 12 existing clients.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Simple table for understanding&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Criterion&lt;/th&gt;
&lt;th&gt;GLM 2.5&lt;/th&gt;
&lt;th&gt;Kimi K3&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Stakeholder Range&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Two engineers only&lt;/td&gt;
&lt;td&gt;PM + Engineer (broader influence)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Business Context&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Process improvement&lt;/td&gt;
&lt;td&gt;Revenue at risk ($200K)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Conflict Complexity&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Technical disagreement&lt;/td&gt;
&lt;td&gt;Business vs. tech risk trade-off&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Resolution Approach&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Proof-of-concept (predictable)&lt;/td&gt;
&lt;td&gt;Phased delivery + data compromise (creative)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Lasting Impact&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Team velocity restored&lt;/td&gt;
&lt;td&gt;Process adoption + trust rebuilt + client retained&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Interviewer Appeal&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Shows technical leadership&lt;/td&gt;
&lt;td&gt;Shows &lt;strong&gt;business acumen&lt;/strong&gt; + technical leadership&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This shows Kimi K3 is more aligned with the workspace and can provide factual answers when needed. Really impressive.&lt;/p&gt;

&lt;p&gt;With this, we have come to the end of this deep dive, but here is what I have to say at the end.&lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusion: The Gap is Closing
&lt;/h2&gt;

&lt;p&gt;Six months ago, comparing open-source models to Claude and GPT meant accepting tradeoffs with performance, quality, builds, and output.&lt;/p&gt;

&lt;p&gt;Today, models like Kimi K3 are extremely competitive across coding, agentic, and multimodal tasks.&lt;/p&gt;

&lt;p&gt;Also, GLM-5.2 shows competitive performance across industry-standard evaluations, frequently rivalling or approaching proprietary models such as GPT-5.5 and Claude Opus 4.8.&lt;/p&gt;

&lt;p&gt;Here is what most people are missing.&lt;/p&gt;

&lt;p&gt;The talk is no longer about closed vs open source;&amp;nbsp; It's about&amp;nbsp;&lt;em&gt;specialised&lt;/em&gt;&amp;nbsp;vs general, and&amp;nbsp;&lt;em&gt;long-context practical&lt;/em&gt;&amp;nbsp;vs theoretical.&lt;/p&gt;

&lt;p&gt;Both K3 and GLM-5.2 are proving that open-source can own specific workloads better than models 10x the marketing budget.&lt;/p&gt;

&lt;p&gt;For builders:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Choose Kimi K3&lt;/strong&gt; if you're building agents that reason for hours, need multimodal perception, or can absorb frontier pricing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Choose GLM-5.2&lt;/strong&gt; if you want open weights today, need fast inference on a GPU, or are optimizing for math and code.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Either way, you're not choosing good models. You're choosing the right model for the right task, and that matters.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>gamedev</category>
      <category>programming</category>
    </item>
    <item>
      <title>Cursor Vs Claude Code: Which one you should pick (or both)</title>
      <dc:creator>Developer Harsh</dc:creator>
      <pubDate>Thu, 16 Jul 2026 17:10:26 +0000</pubDate>
      <link>https://dev.to/composiodev/cursor-vs-claude-code-which-one-you-should-pick-or-both-8o7</link>
      <guid>https://dev.to/composiodev/cursor-vs-claude-code-which-one-you-should-pick-or-both-8o7</guid>
      <description>&lt;p&gt;Cursor and Claude Code are 2 leading products that engineers reach out for nowadays. &lt;/p&gt;

&lt;p&gt;Both can refactor whole codebases, hunt for bugs, run spec-driven builds, and handle vibe coding needs, in the same ecosystem (skills, mcps, plugins, hooks ) and harness that ties the agent loop together. Same rig, yet both cater to a different workflow.&lt;/p&gt;

&lt;p&gt;And Cursor had recently become hard to ignore as SpaceX&amp;nbsp;signed a $60 billion all-stock deal to buy its parent company,&amp;nbsp;Anysphere&amp;nbsp;(closes Q3 2026), and around the same time, it shipped&amp;nbsp;Origin, its own githost for agents, plus&amp;nbsp;cloud agents,&amp;nbsp; Composer 2.5,&amp;nbsp;and Grok 4.5.&lt;/p&gt;

&lt;p&gt;As for me, I use both every single day. I even rewrote my X bio in their honor: &lt;em&gt;I touch Claude Code, Cursor for a living.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;None of this is free, though. For 6 months, I have happily paid&amp;nbsp;&lt;strong&gt;$20/mo for Cursor&lt;/strong&gt;&amp;nbsp;and&amp;nbsp;&lt;strong&gt;$100/mo for Claude Code&lt;/strong&gt;&amp;nbsp;because neither tool excels at everything in my workflow.&lt;/p&gt;

&lt;p&gt;However, not everyone needs both, and not everyone wants to spend $120 a month to find out. If that is you, the question shifts to what you actually get for each dollar. &lt;/p&gt;

&lt;p&gt;This is what this guide answers. Let’s begin&lt;/p&gt;




&lt;h4&gt;
  
  
  TLDR
&lt;/h4&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Section&lt;/th&gt;
&lt;th&gt;Which to pick&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Models and tooling&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Claude Code&lt;/strong&gt; for depth on one model;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;Cursor&lt;/strong&gt; for option across many&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Billing cost's real story&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Claude Code&lt;/strong&gt; on focused tasks (pay per fetch, ~5.5x fewer tokens);&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;Cursor&lt;/strong&gt; for huge monorepos, but you pay to keep the index fresh&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Task delegation (async agents)&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Cursor&lt;/strong&gt; for supervised and visual;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;Claude Code&lt;/strong&gt; for raw delegated horsepower&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The harness&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Cursor&lt;/strong&gt; for UI-heavy work you want to watch and control;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;Claude Code&lt;/strong&gt; for repeatable, version-controlled instructions that run themselves&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Everyday usage&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Cursor&lt;/strong&gt; for hands-on control over every edit;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;Claude Code&lt;/strong&gt; for reviewing finished work instead of keystrokes&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pricing&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Cursor&lt;/strong&gt; for simple, predictable flat pricing;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;Claude Code&lt;/strong&gt;'s $100 only pays off on token-heavy work&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Extensibility (MCP, Skills, plugins)&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Cursor&lt;/strong&gt; to distribute a governed toolset to a large team;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;Claude Code&lt;/strong&gt; for reproducible agent behavior that lives in the repo&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Data privacy&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Claude Code&lt;/strong&gt; for a narrower footprint;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;Cursor&lt;/strong&gt; will soon route your whole stack through one owner (SpaceX)&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;But before moving forward, I would like to clear up a common paradox people get caught up in.&lt;/p&gt;




&lt;h2&gt;
  
  
  The common paradox
&lt;/h2&gt;

&lt;p&gt;Most people think Cursor is an AI editor with tools, while Claude Code is an AI agent you hand tasks to. That is not their fault tbh. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;But my friend, that framing died twice.&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;First, the interfaces merged:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Claude Code now runs in VS Code, as a desktop app, and in the browser.&lt;/li&gt;
&lt;li&gt;Cursor runs as a desktop app, in a terminal, in the cloud, on iOS, and on the web.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I even run Claude Code &lt;em&gt;inside&lt;/em&gt; Cursor most days now.&lt;/p&gt;

&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%2Fp7277g03008gltdp7ojx.png" 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%2Fp7277g03008gltdp7ojx.png" alt="Cursor Image" width="800" height="472"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Second, Cursor stopped being a code editing tool and became a platform.&lt;/strong&gt; It now owns the full software factory, top to bottom:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Write your code in Cursor,&lt;/li&gt;
&lt;li&gt;Review it with Bugbot,&lt;/li&gt;
&lt;li&gt;Host it on Origin (new release),&lt;/li&gt;
&lt;li&gt;Run it on models trained by its own group.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Look at the last seven months alone:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Date&lt;/th&gt;
&lt;th&gt;Move&lt;/th&gt;
&lt;th&gt;What it means&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Dec 2025&lt;/td&gt;
&lt;td&gt;Acquired &lt;strong&gt;Graphite&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Owns code review: stacked PRs, merge queues&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Feb 2026&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Bugbot&lt;/strong&gt; went reviewer to &lt;em&gt;fixer&lt;/em&gt;
&lt;/td&gt;
&lt;td&gt;Spots a bug, spins its own agent, tests a fix, proposes it&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Jun 2026&lt;/td&gt;
&lt;td&gt;Announced &lt;strong&gt;Origin&lt;/strong&gt;, a GitHub rival&lt;/td&gt;
&lt;td&gt;Git hosting for the agentic era, AI merge-conflict resolution. Waitlist, ships fall 2026&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Jun 16, 2026&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;SpaceX agreed to acquire Cursor&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$60B all-stock per an SEC 8-K filing, close expected Q3 2026, into the xAI group&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This tells you that the platform is no longer what it was 6 months ago; the cursor now owns the entire integrated software factory stack. More about it on the Product Hunt discussion.&lt;/p&gt;

&lt;p&gt;So if the interfaces are roughly the same now, what actually separates these two tools? Read on.&lt;/p&gt;




&lt;p&gt;Two years ago, the model was the moat. In 2026, it hardly is.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Claude Code&lt;/strong&gt; runs on Claude, currently Opus 4.8. The tool and the model are tuned for each other, and you feel it in how confidently it plans multi-step work.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cursor&lt;/strong&gt; lets you select your own brains: GPT-5.5, Claude Opus 4.8, Gemini 3.1 Pro, Grok 4.5, and its own Kimi K2.5 finetuned Composer 2.5. Pick the right model per task, pay Cursor to route.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;On my 12-file NASA JPL refactor, Claude Code read most of the tree before writing a line, and the first pass barely needed correction. &lt;/p&gt;

&lt;p&gt;As for the cursor, it also handled things smoothly with a one-time correction with a function. It was because a model API call failed and was partially completed.&lt;/p&gt;

&lt;p&gt;This has also been a concern for the cursor teams, and they aim to be the lab, rather than a model router.  Also, it aims to invent a new kind of programming where any idea can just be represented in English.&lt;/p&gt;

&lt;p&gt;Truell’s June 16 Compile keynote &amp;amp; later in Lenny’s podcast addresses this nicely:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Our goal with Cursor is to invent a new type of programming. It looks like a world where you have a representation of the logic of your software that does look more like English. You can imagine kind of an evolution of programming language towards pseudocode. You have written down the logic of the software, and you can edit that at a high level. It won't be the impenetrable millions of lines of code, it'll instead be something that's much terser and easier to understand and easier to navigate."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Now that’s training its first frontier model from scratch, 1.5 trillion parameters, on xAI's Colossus cluster, under SpaceX's $60 billion deal. It seems the company is heading into its next phase and aims to become the model developer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Who wins?&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If you want a model tuned straight into the tool, go to Claude Code.&lt;/li&gt;
&lt;li&gt;If you want model variety today and a bet on Cursor's own lab tomorrow, go with Cursor.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  2. Pricing: Cursor vs Claude Code
&lt;/h2&gt;

&lt;p&gt;Most of us stop at the sticker price.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cursor&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tier&lt;/th&gt;
&lt;th&gt;Price&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Hobby&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;Limited&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pro&lt;/td&gt;
&lt;td&gt;$20/mo&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pro+&lt;/td&gt;
&lt;td&gt;$60/mo&lt;/td&gt;
&lt;td&gt;3x usage&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ultra&lt;/td&gt;
&lt;td&gt;$200/mo&lt;/td&gt;
&lt;td&gt;20x usage&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Teams&lt;/td&gt;
&lt;td&gt;$40/user ($120 Premium seat)&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Enterprise&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;Every paid plan runs on usage credits, with on-demand billing past your allotment. Turn on spend limits the day you start.&lt;/li&gt;
&lt;li&gt;Auto mode is the cheap lever: it runs Composer 2.5 or routes to a capable model automatically, and it is unlimited on paid plans.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Claude Code&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tier&lt;/th&gt;
&lt;th&gt;Price&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;No free tier&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pro&lt;/td&gt;
&lt;td&gt;$20/mo&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Max&lt;/td&gt;
&lt;td&gt;$100/mo ($200 for 20x)&lt;/td&gt;
&lt;td&gt;Unlocks Opus, up-to-1M context&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Teams&lt;/td&gt;
&lt;td&gt;$25/seat ($20 annual)&lt;/td&gt;
&lt;td&gt;Caps at 150 seats&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Enterprise&lt;/td&gt;
&lt;td&gt;Base seat + API usage&lt;/td&gt;
&lt;td&gt;Cheaper light, pricier heavy&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;No free tier; the cheapest door is Pro at $20.&lt;/li&gt;
&lt;li&gt;Limits run on two clocks at once: a 5-hour rolling window plus a weekly cap, so an all-day session can hit the wall mid-task.&lt;/li&gt;
&lt;li&gt;To trim spend, route routine edits to Sonnet or Haiku, save Opus for hard refactors.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;On paper, both start at $20, and the offerings look even. It isn’t!&lt;/p&gt;

&lt;p&gt;The sticker price hides what it actually costs to run a task.&lt;/p&gt;

&lt;p&gt;On a widely repeated refactor test, the same job cost wildly different amounts of compute:&lt;/p&gt;

&lt;p&gt;Tokens used on the same refactor  (lower is better)&lt;/p&gt;

&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%2Fy1c36ikwdq4vggbdq8vl.png" 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%2Fy1c36ikwdq4vggbdq8vl.png" alt="comaprison" width="799" height="174"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://medium.com/@gvelosa/claude-code-vs-cursor-in-2026-the-token-efficiency-gap-befd0864e0a5" rel="noopener noreferrer"&gt;Source&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That is a &lt;strong&gt;5.5x gap&lt;/strong&gt; for identical output. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;One honest note: this is a single community benchmark; the two agents ran different models under the hood, and at least one prints the numbers flipped. Treat it as a strong signal, not a law. It also does not hold everywhere.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This happens because each tool loads the context differently:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cursor retrieves using a hybrid stack: a semantic index, grep, and an Explore subagent. Index-backed and targeted, strong on huge monorepos, but the index carries a standing cost to build and keep fresh. You pay for it.&lt;/li&gt;
&lt;li&gt;Claude Code skips the index and greps, globs, and reads on demand. Index-free and just-in-time, so you pay only for what it pulls into context.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;One caveat&lt;/strong&gt;: both start to degrade beyond roughly 150k tokens of genuinely relevant context, so neither truly wins at extreme scale.&lt;/p&gt;

&lt;p&gt;So, who wins?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cursor:&lt;/strong&gt; Use it if you want simple, predictable flat pricing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Claude Code:&lt;/strong&gt; the $100 only pays off on token-heavy work.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pro tip:&lt;/strong&gt; Model both against your own usage, then decide.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  3. Task Delegation with Async agents
&lt;/h2&gt;

&lt;p&gt;The refactor task I gave to Claude and the bug hunt task to Cursor were not from the terminal/app UI; they were through my mobile phone. In fact, I barely touch my pc while traveling.&lt;/p&gt;

&lt;p&gt;Essence is simple.&lt;/p&gt;

&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%2F10e3f5sq7mohu5pw95ts.png" 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%2F10e3f5sq7mohu5pw95ts.png" alt="Task Delegation" width="800" height="84"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In short, task delegation is here, but both Claude Code and cursor build around this differently.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cursor&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cursor&lt;/strong&gt; builds this around cloud agents and Automations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Launches cloud dev environment in under 10 minutes, snapshot it, reuse it.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/in-cloud&lt;/code&gt; spins a subagent on its own VM and branch, while your laptop stays unaffected.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/automate&lt;/code&gt; creates jobs in plain language, with GitHub and Slack triggers.&lt;/li&gt;
&lt;li&gt;Bugbot review runs ~3x faster, roughly 90 seconds a pass, and can be called with &lt;code&gt;/review&lt;/code&gt; before you push.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Claude Code&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Claude Code&lt;/strong&gt; builds this around agent teams and background sessions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cloud dev environment for remote sessions, spun up automatically the first time you run a remote feature, no manual web setup.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/agents&lt;/code&gt; launches a coordinated team where one session leads and others execute, viewable and steerable in the &lt;code&gt;claude agents&lt;/code&gt; view.&lt;/li&gt;
&lt;li&gt;Background agents run on separate git worktrees; kick one off from &lt;code&gt;claude agents&lt;/code&gt;, then steer it from your phone via Remote Control in the mobile app.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/code-review&lt;/code&gt; runs a review pass on your changes, improved on Opus 4.8 across effort levels, and &lt;code&gt;/security-review&lt;/code&gt; scans for vulnerabilities before you push.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Who wins?&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Supervised and visual, go for Cursor.&lt;/li&gt;
&lt;li&gt;Raw delegated horsepower, go for Claude Code.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  4. The Harness
&lt;/h2&gt;

&lt;p&gt;Strip as an agent down to its core, and that is a model in a loop with tools. &lt;/p&gt;

&lt;p&gt;Everything wrapped around that loop: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The memory,&lt;/li&gt;
&lt;li&gt;The standing instructions (system prompt),&lt;/li&gt;
&lt;li&gt;The automatic hooks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;decides whether the loop is reliable and works. Some people call this layer the rig, but it's commonly called a harness.&lt;/p&gt;

&lt;p&gt;Both Claude code and cursor ships with this harness, but are targeted for different workflows:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Claude Code&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ships the harness native and documented:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;CLAUDE.md&lt;/code&gt;: standing instructions, the agent reads every session.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Skills&lt;/strong&gt;: packaged workflows you invoke like &lt;code&gt;/review-pr&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hooks&lt;/strong&gt;: shell commands that fire on lifecycle events, so a formatter runs after every edit.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Artifacts&lt;/strong&gt;: session work captured as a live web page (a PR walkthrough, a dashboard), a non-terminal teammate can read, with private org sharing and version history.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cursor&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Its harness version exists too, and it is growing fast:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A single &lt;strong&gt;Customize&lt;/strong&gt; page pulls together plugins, skills, MCP servers, subagents, rules, commands, and hooks, with a marketplace on top.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Design Mode&lt;/strong&gt; lets you point at UI elements in the browser or on a canvas, select several at once, and narrate changes by voice while agents edit beneath the surface.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The difference is the center of gravity:&lt;/p&gt;

&lt;p&gt;Cursor's harness orbits the editor and the visual surface, and yes, it's amazing. I give one instruction in the 1st prompt, and it carries forward until the chat ends. &lt;/p&gt;

&lt;p&gt;Claude Code orbits the agent loop and the command line. In my experience, I tend to forget important instructions mid-conversation if the topic strays too far or the chat goes on too long.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So, who wins?&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cursor: For UI-heavy work where you want to see every change and be in control. (not true delegation, but secure)&lt;/li&gt;
&lt;li&gt;Claude Code: For repeatable, version-controlled instructions (a &lt;code&gt;CLAUDE.md&lt;/code&gt; file plus Hooks) that your whole team inherits automatically, so the rules run on their own instead of relying on you to remember them. (true delegation, but feel less secure)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  5. Everyday Usage
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Cursor feels at home;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;It&lt;/strong&gt;&amp;nbsp;is a VS Code fork, so it looks like the editor I already use,&lt;/li&gt;
&lt;li&gt;Tab autocomplete predicts my next several edits as I type.&lt;/li&gt;
&lt;li&gt;Within an hour of writing by hand, I felt faster when I tried it for the 1st time 6 months back.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Claude Code feels like running a company;&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It's terminal + ui native, no autocomplete to fall for. Mainly for task delegation.&lt;/li&gt;
&lt;li&gt;Once I have written a good enough &lt;code&gt;CLAUDE.md&lt;/code&gt; and wired a couple of Hooks, Specs, and project-level skills, it runs whole tickets across multiple subagents in parallel while I go through the diff.&lt;/li&gt;
&lt;li&gt;Mainly for task delegation, the payoff arrives late but is bigger than the current.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Review style&lt;/th&gt;
&lt;th&gt;Cursor&lt;/th&gt;
&lt;th&gt;Claude Code&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;What you see&lt;/td&gt;
&lt;td&gt;Each change inline, accept or edit before it lands&lt;/td&gt;
&lt;td&gt;The finished result plus the reasoning&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Best for&lt;/td&gt;
&lt;td&gt;UI edits where you eyeball every pixel&lt;/td&gt;
&lt;td&gt;Delegated tickets you review as a whole&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tests&lt;/td&gt;
&lt;td&gt;You trigger them&lt;/td&gt;
&lt;td&gt;It runs them, iterates on failure, reports back&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Who wins?&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tight control over every edit and well-controlled task delegation with AGENTS.md, go with Cursor.&lt;/li&gt;
&lt;li&gt;Review finished work instead of keystrokes, go with Claude Code.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  6. Extensibility: MCP, Skills, plugins
&lt;/h2&gt;

&lt;p&gt;Both speak MCP, the protocol for wiring outside tools and data into an agent. Both turned it into a team-management surface rather than a solo toy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cursor&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;With the cursor, teams can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Configure Team MCP servers once, push them across cloud agents, the agents window, the IDE, and the CLI.&lt;/li&gt;
&lt;li&gt;Publish approved integrations to a team marketplace so members can install without touching config.&lt;/li&gt;
&lt;li&gt;Added GitLab, BitBucket, and Azure DevOps support for those imports.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Claude Code&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;With the Claude Code, teams can&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Leans on Skills, Hooks, and a plugin system, plus MCP for outside connections.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use Cowork&lt;/strong&gt; brings agent machinery to knowledge work within a local, isolated VM with access to their files.&lt;/li&gt;
&lt;li&gt;A computer-use preview lets Claude open files, click, and navigate for you.&lt;/li&gt;
&lt;li&gt;A Slack integration (Team and Enterprise plans) lets you tag Claude to hand off a task without leaving the channel.&lt;/li&gt;
&lt;li&gt;Treats extensibility as a code check-in.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But what about solo dev’s?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solo Devs&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For the solo dev, none of the above matters; it's about speed, for example: how fast can you load tools, skills, and MCP that follow on every machine and get work done.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cursor&lt;/strong&gt; is the easy on-ramp.

&lt;ul&gt;
&lt;li&gt;Adding an MCP server is a few clicks with OAuth built in, no config file to hand-edit, and you inherit the entire VS Code extension library on day one.&lt;/li&gt;
&lt;li&gt;The Customize page works at the user level, too, so your rules, skills, and MCPs live in one place as local instructions.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Claude Code&lt;/strong&gt; gives a solo dev the same files-in-repo power the teams get.

&lt;ul&gt;
&lt;li&gt;The &lt;code&gt;CLAUDE.md&lt;/code&gt; skills, hooks, and plain files are plain files that users can commit to, so their agent behaves identically on their laptop, desktop, or any box they clone into.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Either way, the setup is only half the battle.&lt;/p&gt;

&lt;p&gt;Often, we solo developers struggle to connect to multiple tools, manually pass API keys, worry about security, and hope for optimized tool calls. ‘&lt;/p&gt;

&lt;p&gt;So for this, I use composio, which helps me connect to 1000+ tools/services in one click, while handling all the issues I mentioned earlier.  - Just a practical experience here, your call.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Who wins?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Distribute a governed toolset to a large team through a marketplace. Cursor leads today.&lt;/li&gt;
&lt;li&gt;Reproducible agent behavior that lives in the repo, Claude Code fits how engineers already work.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  7. Most Important Factor
&lt;/h2&gt;

&lt;p&gt;This is the point most take for granted. The data privacy.&lt;/p&gt;

&lt;p&gt;Cursor is on its way to becoming a SpaceX subsidiary, folded into the xAI group, once the $60B deal closes in Q3. &lt;/p&gt;

&lt;p&gt;Pair that with Origin (its own git host) and Composer (its own model), and one company could soon own the tool that writes your code, the place that stores it, and the model that learns from it. That is genuinely new. No prior git host has also owned the model doing the writing.&lt;/p&gt;

&lt;p&gt;I am not calling it a trap, and I am not assuming bad intent. But if you work on client repos with strict rules about where code can live, as I do, think about this before you migrate anything. &lt;/p&gt;

&lt;p&gt;Always read the terms. Watch where the data goes. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Claude Code keeps a narrower footprint, an agent and a harness rather than a whole hosting stack, though your code still travels to Anthropic's API either way.&lt;/li&gt;
&lt;li&gt;Cursor soon will own the stack, your code, your tool calls, your decision, plan, and all builds will go through the cursor for better model training.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  The Verdict
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;You are...&lt;/th&gt;
&lt;th&gt;Your pick&lt;/th&gt;
&lt;th&gt;Why&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;UI / product engineer&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Cursor&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Editor you know, inline autocomplete, visual diffs, pick a model per task. The best AI code editor you can buy.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Systems / backend engineer&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Claude Code&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Delegate whole tickets, reproducible agent behavior from repo files, orchestrate several agents, review finished work. Its rig is the more serious engineering today, and its token efficiency is a real cost edge.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Most of us&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Both&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$120/mo total, for a month. Let the work sort it out.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The engineers I know who ship fastest stopped treating this as a loyalty test and started treating it as two tools for two kinds of tasks. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cursor for the hands-on sessions.&lt;/li&gt;
&lt;li&gt;Claude Code for the delegated automations.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The debate between cursor and clauded code ends the moment you stop arguing and start building. This is where I landed after six months with the two subscriptions. &lt;/p&gt;

&lt;p&gt;Remember, your repo and your habits will move these numbers in the future, so borrow my framework, not my conclusion.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>claude</category>
      <category>learning</category>
      <category>programming</category>
    </item>
    <item>
      <title>A Definitive Comparison Between Opencode &amp; Codex</title>
      <dc:creator>Developer Harsh</dc:creator>
      <pubDate>Fri, 03 Jul 2026 10:09:29 +0000</pubDate>
      <link>https://dev.to/composiodev/a-definitive-comparison-between-opencode-codex-dna</link>
      <guid>https://dev.to/composiodev/a-definitive-comparison-between-opencode-codex-dna</guid>
      <description>&lt;p&gt;If your daily workflow looks anything like mine, your terminal is where the actual work happens.&lt;/p&gt;

&lt;p&gt;After the &lt;a href="https://www.anthropic.com/engineering/april-23-postmortem" rel="noopener noreferrer"&gt;Claude Code fiasco&lt;/a&gt; back in April, I wanted a way out of Claude ecosystem. Codex and OpenCode were the default no-brainer choices.&lt;/p&gt;

&lt;p&gt;So I spent the last few months stress-testing Codex and OpenCode to see which one could actually replace Claude Code as my daily driver.&lt;/p&gt;

&lt;p&gt;So, here’s what I found out.&lt;/p&gt;




&lt;h2&gt;
  
  
  TL;DR: Quick Reference
&lt;/h2&gt;

&lt;p&gt;If you are in a hurry, this is the simplest way to think about the comparison.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Codex is the better default. OpenCode is the better power-user tool.&lt;/strong&gt; Codex wins when I want speed, polish, and fewer setup decisions. OpenCode wins when I want model freedom, lower cost, local execution, and more control over the agent loop.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Section&lt;/th&gt;
&lt;th&gt;Winner&lt;/th&gt;
&lt;th&gt;Why&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Onboarding, Setup, and Daily UX&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Codex&lt;/td&gt;
&lt;td&gt;Faster to start, cleaner defaults, easier daily workflow&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Models&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Tie&lt;/td&gt;
&lt;td&gt;Codex has the stronger default model stack; OpenCode has far more model freedom and with GLM 5.2 it’s on-par with GPT 5.5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Pricing / Cost&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;OpenCode&lt;/td&gt;
&lt;td&gt;Cheaper for heavy usage if you use routing, caching, or lower-cost models&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Features and Workflows&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Tie&lt;/td&gt;
&lt;td&gt;Codex is better for delegation; OpenCode is better for iterative local work&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ecosystem: MCP, Skills, Plugins&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Codex&lt;/td&gt;
&lt;td&gt;Simpler MCP and plugin setup; OpenCode is more transparent but more manual&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Harness Engineering&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Tie&lt;/td&gt;
&lt;td&gt;Codex has the better default harness; OpenCode has the more customizable harness&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Best overall for most users&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Codex&lt;/td&gt;
&lt;td&gt;Least friction, strongest defaults, smoother path from prompt to diff&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Best overall for power users&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;OpenCode&lt;/td&gt;
&lt;td&gt;Model choice, local execution, deeper control, and better cost optimization&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;My take:&lt;/strong&gt; I would recommend Codex to most users first. But for my own high-control workflow, OpenCode becomes more compelling over time because the extra setup turns into flexibility.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Onboarding, Setup, and Daily UX
&lt;/h2&gt;

&lt;p&gt;Onboarding and daily UX are too closely related to treat as separate sections.&lt;/p&gt;

&lt;p&gt;The first ten minutes decide how quickly I can start. The next ten days decide whether I actually want to keep using the tool. Codex wins the first part because it removes choices. OpenCode becomes more interesting later because the choices start turning into control.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Aspect&lt;/th&gt;
&lt;th&gt;Codex&lt;/th&gt;
&lt;th&gt;OpenCode&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Install speed&lt;/td&gt;
&lt;td&gt;~90 seconds, one path&lt;/td&gt;
&lt;td&gt;~3-5 minutes, more decisions&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;First impression&lt;/td&gt;
&lt;td&gt;Polished, guided, low-friction&lt;/td&gt;
&lt;td&gt;Developer-native, terminal-first, configurable&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Provider choice&lt;/td&gt;
&lt;td&gt;OpenAI only&lt;/td&gt;
&lt;td&gt;75+ providers and 1000+ models&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Configuration&lt;/td&gt;
&lt;td&gt;Minimal setup after sign-in&lt;/td&gt;
&lt;td&gt;API keys, model choice, working directory, config files&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Learning curve&lt;/td&gt;
&lt;td&gt;Shallow; usable in minutes&lt;/td&gt;
&lt;td&gt;Moderate; rewards 1-2 months of use&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Daily workflow&lt;/td&gt;
&lt;td&gt;Open, assign task, review diff&lt;/td&gt;
&lt;td&gt;Plan, inspect, steer, execute, repeat&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Customization&lt;/td&gt;
&lt;td&gt;Opinionated defaults&lt;/td&gt;
&lt;td&gt;Deep control over models, instructions, and local setup&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Best for&lt;/td&gt;
&lt;td&gt;Users who want the agent to stay out of the way&lt;/td&gt;
&lt;td&gt;Power users who want to tune the agent like a dev tool&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Codex&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;I installed Codex in about 90 seconds:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm i &lt;span class="nt"&gt;-g&lt;/span&gt; @openai/codex
codex
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then it was basically:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;sign in with ChatGPT,&lt;/li&gt;
&lt;li&gt;pick the project,&lt;/li&gt;
&lt;li&gt;start coding.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is the whole appeal. The model is already selected, GitHub integration feels native, and the default workflow does not ask me to make too many decisions. I can open Codex, describe the task, review the diff, and move on.&lt;/p&gt;

&lt;p&gt;This matters because a daily coding agent should not make me think about the agent more than the code.&lt;/p&gt;

&lt;p&gt;Codex feels strongest when I need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a quick prototype before standup,&lt;/li&gt;
&lt;li&gt;a PR review,&lt;/li&gt;
&lt;li&gt;a clean diff for a narrow task,&lt;/li&gt;
&lt;li&gt;a background refactor,&lt;/li&gt;
&lt;li&gt;a low-friction path from prompt to patch.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The tradeoff is that Codex is opinionated. I do not get much control over the model strategy, local runtime, or workflow shape. That is fine for most tasks, but limiting when I want to tune the agent like part of my dev environment.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;OpenCode&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;I installed OpenCode with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://opencode.ai/install | bash
opencode
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then the decisions started:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which provider do I want?&lt;/li&gt;
&lt;li&gt;Do I want the Go tier?&lt;/li&gt;
&lt;li&gt;Which model should be the default?&lt;/li&gt;
&lt;li&gt;Which API keys do I need?&lt;/li&gt;
&lt;li&gt;Which working directory should it use?&lt;/li&gt;
&lt;li&gt;How much should I configure up front?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That makes OpenCode feel slower on day one. It is not the tool I would recommend to someone who hates setup decisions.&lt;/p&gt;

&lt;p&gt;But the same friction becomes useful once I understand the system. OpenCode gives me control over the parts Codex hides:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I can switch providers and models based on task type,&lt;/li&gt;
&lt;li&gt;use local models through Ollama or LM Studio,&lt;/li&gt;
&lt;li&gt;inspect the plan before execution,&lt;/li&gt;
&lt;li&gt;steer the agent step by step,&lt;/li&gt;
&lt;li&gt;encode project preferences in instruction files,&lt;/li&gt;
&lt;li&gt;keep the loop close to my repo and tools.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This makes OpenCode feel less like a polished single-purpose coding agent and more like a configurable development environment.&lt;/p&gt;

&lt;p&gt;The downside is cognitive overhead. OpenCode asks me to participate more, and that is not always what I want for routine work. But for serious refactors, debugging sessions, or production changes where I want to watch the agent think before it acts, the extra control is worth the friction.&lt;/p&gt;

&lt;h3&gt;
  
  
  Verdict
&lt;/h3&gt;

&lt;p&gt;Codex wins onboarding. OpenCode wins long-term control.&lt;/p&gt;

&lt;p&gt;If I am recommending a tool to a teammate who wants the least friction, I would recommend Codex. It is faster to start, easier to understand, and better for users who just want the agent to stay out of the way.&lt;/p&gt;

&lt;p&gt;If I am picking a tool for my own high-control workflow, OpenCode becomes more compelling over time. The setup is heavier, but the payoff is model flexibility, local execution, and tighter steering.&lt;/p&gt;

&lt;p&gt;For this section, Codex wins because the first-use and default daily experience are cleaner.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;OpenCode - 0, Codex - 1&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  2. Models: Codex vs OpenCode
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Aspect&lt;/th&gt;
&lt;th&gt;Codex&lt;/th&gt;
&lt;th&gt;OpenCode&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Model Availability&lt;/td&gt;
&lt;td&gt;GPT-5.5 only&lt;/td&gt;
&lt;td&gt;~75 providers, 1000+ models&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Token Efficiency&lt;/td&gt;
&lt;td&gt;Optimized for GPT-5.5&lt;/td&gt;
&lt;td&gt;40-60% fewer tokens (MiMo)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Model Switching&lt;/td&gt;
&lt;td&gt;Single model, all tasks&lt;/td&gt;
&lt;td&gt;Switch between models per task&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Top Performers&lt;/td&gt;
&lt;td&gt;GPT-5.5 (58.6%)&lt;/td&gt;
&lt;td&gt;Qwen 3.7 (60.6%), MiMo-V2.5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cost Per Token&lt;/td&gt;
&lt;td&gt;$30-180 per million tokens&lt;/td&gt;
&lt;td&gt;Varies; DeepSeek $0.14-0.28&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Best For&lt;/td&gt;
&lt;td&gt;Best-in-class performance&lt;/td&gt;
&lt;td&gt;Cost-conscious, flexible workflows&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Codex&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;The first time I ran Codex with GPT-5.5, it felt like the whole system was purpose-built around it.&lt;/p&gt;

&lt;p&gt;OpenAI’s headline is “better results with fewer tokens.” The more interesting story is &lt;em&gt;how&lt;/em&gt; they got there: Codex is a tightly tuned pipeline where the prompts, context management, tool-calling, and evaluation loop are all optimized for GPT models. This is similar to Claude &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;OpenAI designed GPT-5.5 specifically for agentic coding, then adjusted Codex to leverage its full capabilities. GPT-5.5 uses 40% fewer output tokens than GPT-5.4 on the same Codex tasks.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Every task I run through Codex uses this same tuned pipeline. It's like having a senior engineer trained specifically for your workflow, focused on results, rather than decisions&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;OpenCode&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;OpenCode provides integration with ~75 different providers across 1000+ models, and one might be intimidated by the cost they would incur. I had the same.  &lt;/p&gt;

&lt;p&gt;But as I  looked at benchmark data, I found something: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Qwen 3.7 maxes out at 60.6% on SWE-Bench Pro,&amp;nbsp;beating GPT-5.5's 58.6%.&lt;/li&gt;
&lt;li&gt;MiMo-V2.5-Pro uses 40-60% fewer tokens than GPT-5.4 for comparable output.&lt;/li&gt;
&lt;li&gt;DeepSeek V4-Flash costs $0.14 per million tokens for input / $0.28 for output, compared to $30 per million tokens&amp;nbsp;for input / $180 per million tokens for&amp;nbsp;output for GPT-5.5.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The hidden insight: &lt;strong&gt;I don't need the same model for every task.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Architecture decisions: Qwen.&lt;/li&gt;
&lt;li&gt;Boilerplate: DeepSeek.&lt;/li&gt;
&lt;li&gt;Bug fixing: MiMo.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you want automation, you can connect OpenCode with&amp;nbsp;smart model routers as well; they will do the heavy lifting. &lt;/p&gt;

&lt;p&gt;This was the learning curve I was talking about earlier: model routing.&lt;/p&gt;

&lt;h3&gt;
  
  
  Verdict
&lt;/h3&gt;

&lt;p&gt;If you ask me: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GPT 5.5 is undeniably the better model than anything open-source can offer right now. Though Kimi 2.7 and GLM 5.2 are great models with near SOTA coding performance.&lt;/li&gt;
&lt;li&gt;OpenCode definitely gives the freedom to select any model one wants, plus at a lower cost. For cost-conscious people, this is definitely a USP.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Codex with GPT 5.5 and OpenCode with GLM 5.2 are match made in labs. So, at this point, it’s tie.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;OpenCode - 1,  Codex - 2&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  3. Pricing / Cost: Codex vs OpenCode
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Aspect&lt;/th&gt;
&lt;th&gt;Codex&lt;/th&gt;
&lt;th&gt;OpenCode&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Entry Price&lt;/td&gt;
&lt;td&gt;Plus at $20/month&lt;/td&gt;
&lt;td&gt;Go tier at $10/month&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Professional Cost&lt;/td&gt;
&lt;td&gt;$100-200/month&lt;/td&gt;
&lt;td&gt;$10-50/month (with routing)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cost Savings&lt;/td&gt;
&lt;td&gt;No optimization options&lt;/td&gt;
&lt;td&gt;~70% reduction with smart routing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Token Caching&lt;/td&gt;
&lt;td&gt;Limited caching&lt;/td&gt;
&lt;td&gt;Built-in, reduces cost ~70%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pricing Model&lt;/td&gt;
&lt;td&gt;Monthly subscription fixed&lt;/td&gt;
&lt;td&gt;Pay per token (variable)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Best For&lt;/td&gt;
&lt;td&gt;Predictable monthly budgets&lt;/td&gt;
&lt;td&gt;Budget-conscious developers&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Codex&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Codex comes bundled with ChatGPT Plus at $20/month, which sounds cheap until you start using it heavily.&lt;/p&gt;

&lt;p&gt;Here's my actual usage pattern:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Lightweight tasks: 2-3 sessions/day (covers with Plus)&lt;/li&gt;
&lt;li&gt;Serious refactoring: 4-7 hours/day (exhausts Plus)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When I upgraded to Pro ($100/month), things got a  little smoother. I never hit limits. But I'm now paying $1,200/year for what I actually use.&lt;/p&gt;

&lt;p&gt;That’s not a number; it's the real cost for a professional who codes 6+ hours/day, which is around&amp;nbsp;&lt;strong&gt;$100-$200/month&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;OpenCode&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;OpenCode Go is $10/month or less, but only if you actually need to figure out which models to use for which tasks.&lt;/p&gt;

&lt;p&gt;Here's my actual usage pattern:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Day 1: Confused about model selection (burning tokens on wrong model choices)&lt;/li&gt;
&lt;li&gt;Day 10: I figured out routing: Boilerplate → one model, Architecture → another, token cost starts dropping&lt;/li&gt;
&lt;li&gt;Day 30: Smart routing is dialed in (DeepSeek for routine, Qwen for complex, local models for edge cases), making costs fixed around $10/month tier&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When I finally cracked the model-routing puzzle by month 2, I realized the real hidden advantage:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Cached tokens cost a fraction of the normal price. So my $0.50/session cost was actually closer to $0.15 with caching baked in.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;According to the estimate, the real cost for a professional with smart routing is around &lt;strong&gt;$10-$50/month&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That’s a ~70% deduction and makes switching non-negotiable.&lt;/p&gt;

&lt;h3&gt;
  
  
  Verdict
&lt;/h3&gt;

&lt;p&gt;Clearly, Open Code wins on this one.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;OpenCode - 2 , Codex - 2&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  3. Features and Workflows
&lt;/h2&gt;

&lt;p&gt;This is where Codex and OpenCode start to feel like fundamentally different products.&lt;/p&gt;

&lt;p&gt;Codex is built around &lt;strong&gt;delegation&lt;/strong&gt;. OpenCode is built around &lt;strong&gt;iteration&lt;/strong&gt;.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Aspect&lt;/th&gt;
&lt;th&gt;Codex&lt;/th&gt;
&lt;th&gt;OpenCode&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Core workflow&lt;/td&gt;
&lt;td&gt;Define goal → delegate → review result&lt;/td&gt;
&lt;td&gt;Plan → review → execute → adjust&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Best interaction style&lt;/td&gt;
&lt;td&gt;High-level task assignment&lt;/td&gt;
&lt;td&gt;Tight local feedback loop&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Goal setting&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;/goal&lt;/code&gt; command for scoped outcomes&lt;/td&gt;
&lt;td&gt;Plan mode + repo instructions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Iteration speed&lt;/td&gt;
&lt;td&gt;Better for longer background tasks&lt;/td&gt;
&lt;td&gt;Better for fast back-and-forth changes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Local capability&lt;/td&gt;
&lt;td&gt;Cloud-first&lt;/td&gt;
&lt;td&gt;Local-first with Ollama/LM Studio support&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Real-time control&lt;/td&gt;
&lt;td&gt;Review changes after the agent runs&lt;/td&gt;
&lt;td&gt;Review and steer before execution&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Best for&lt;/td&gt;
&lt;td&gt;Overnight refactors, PR prep, delegated work&lt;/td&gt;
&lt;td&gt;Interactive development, debugging, learning&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Codex&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Codex feels strongest when I treat it like an engineering teammate I can delegate to.&lt;/p&gt;

&lt;p&gt;The app lets me set up multi-agent workflows for longer-running execution:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One agent reviews PRs,&lt;/li&gt;
&lt;li&gt;another fixes bugs,&lt;/li&gt;
&lt;li&gt;a third updates documentation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I close my laptop and come back to the result. That makes Codex especially good for large refactors, GitHub-native workflows, team delegation, and background engineering work.&lt;/p&gt;

&lt;p&gt;The underrated feature here is Codex’s &lt;code&gt;/goal&lt;/code&gt; command. Instead of giving the agent a vague task like “improve this repo,” I can define the actual outcome I want:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;reduce flaky tests,&lt;/li&gt;
&lt;li&gt;migrate a module,&lt;/li&gt;
&lt;li&gt;clean up auth logic,&lt;/li&gt;
&lt;li&gt;prepare a PR-ready refactor.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Codex then uses that goal as the anchor for planning, execution, and review. That makes long-running delegated work feel less like prompting and more like assigning a scoped engineering objective.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;OpenCode&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;OpenCode does not have a direct &lt;code&gt;/goal&lt;/code&gt; equivalent, but its workflow solves the same problem differently.&lt;/p&gt;

&lt;p&gt;Instead of asking me to assign a goal and wait for the result, OpenCode keeps me inside a tight loop:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;define what I want,&lt;/li&gt;
&lt;li&gt;inspect the proposed plan,&lt;/li&gt;
&lt;li&gt;adjust the approach,&lt;/li&gt;
&lt;li&gt;execute,&lt;/li&gt;
&lt;li&gt;review the result,&lt;/li&gt;
&lt;li&gt;repeat.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is where Plan mode becomes important. It gives me a goal-like workflow without hiding the intermediate reasoning. I can see what OpenCode intends to do before it touches the codebase, which is useful when I am debugging, exploring unfamiliar code, or doing refactors where I want control over every step.&lt;/p&gt;

&lt;p&gt;OpenCode also pairs well with repo-level instruction files like &lt;code&gt;AGENTS.md&lt;/code&gt;. That makes its goal-setting less polished than Codex’s &lt;code&gt;/goal&lt;/code&gt;, but more customizable. I can encode project conventions, testing expectations, architecture rules, and workflow preferences once, then reuse them across sessions.&lt;/p&gt;

&lt;p&gt;The other major advantage is local execution. I can pair OpenCode with Ollama or LM Studio and run the agentic loop on my own machine with zero API calls. For security-sensitive work, regulated codebases, or local-first development, this is a real advantage.&lt;/p&gt;

&lt;h3&gt;
  
  
  Verdict
&lt;/h3&gt;

&lt;p&gt;This one depends on how I want to work.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Codex wins for delegation:&lt;/strong&gt; give it a scoped objective, let it run, and review the result later.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OpenCode wins for iteration:&lt;/strong&gt; inspect the plan, steer the agent, and keep the feedback loop tight.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Codex feels more polished. OpenCode feels more controllable.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For routine background work, I prefer Codex. For interactive development and learning inside a codebase, I prefer OpenCode.&lt;/p&gt;

&lt;p&gt;Tie.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;OpenCode - 3, Codex - 3&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  4. Ecosystem (MCP + Skills +  Plugins)
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Aspect&lt;/th&gt;
&lt;th&gt;Codex&lt;/th&gt;
&lt;th&gt;OpenCode&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;MCP Setup&lt;/td&gt;
&lt;td&gt;CLI commands (&lt;code&gt;codex mcp add&lt;/code&gt;)&lt;/td&gt;
&lt;td&gt;Manual config via &lt;code&gt;.opencode/mcp-config.json&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Skill Installation&lt;/td&gt;
&lt;td&gt;Git clone to &lt;code&gt;~/.codex/skills/&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Clone to &lt;code&gt;~/.opencode/skills/&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Plugin Management&lt;/td&gt;
&lt;td&gt;Marketplace CLI integration&lt;/td&gt;
&lt;td&gt;Update &lt;code&gt;opencode.json&lt;/code&gt; manually&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Composio Integration&lt;/td&gt;
&lt;td&gt;One-click via marketplace&lt;/td&gt;
&lt;td&gt;Config file + manual setup&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;User Friendliness&lt;/td&gt;
&lt;td&gt;More convenient, less transparent&lt;/td&gt;
&lt;td&gt;More transparent, less convenient&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Best For&lt;/td&gt;
&lt;td&gt;Users who want simplicity&lt;/td&gt;
&lt;td&gt;Developers who like transparency&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;You can have the best model, the best providers, and the best features and workflow, yet it means nothing if your models can’t talk to the real world and perform specified tasks in specified ways. &lt;/p&gt;

&lt;p&gt;Codex and OpenCode both offer: MCP, Plugin &amp;amp; Skills, but both function differently.&lt;/p&gt;

&lt;h3&gt;
  
  
  Codex
&lt;/h3&gt;

&lt;p&gt;Codex supports MCP integration. This is how easy it is to install:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I am going with Composio, as I usually use multiple MCP servers, and it's a pain to connect to and configure each one securely and to make agents handle multiple tool calls intelligently.&lt;/p&gt;


&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Add Composio MCP server to Codex&lt;/span&gt;
codex mcp add composio

&lt;span class="c"&gt;# Authenticate&lt;/span&gt;
codex mcp auth composio
&lt;span class="c"&gt;# Opens browser for OAuth&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Verify it's connected:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;codex mcp list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, to make sure the MCP works properly, you can add skills with:&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="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; ~/.codex/skills
git clone https://github.com/ComposioHQ/awesome-codex-skills.git ~/.codex/skills/composio-connect
&lt;span class="c"&gt;# Restart Codex&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can also add the Composio plugin using:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;codex plugin marketplace add ComposioHQ/awesome-codex-plugins
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And restart the app:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;codex
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But to do the same in OpenCode is a little tricky.&lt;/p&gt;

&lt;h4&gt;
  
  
  Open Code
&lt;/h4&gt;

&lt;p&gt;OpenCode also supports MCP integration, but to add any MCP server, you need to update the config at &lt;code&gt;.opencode/mcp-config.json&lt;/code&gt; .&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;# .opencode/mcp-config.json&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt;
  &lt;span class="s2"&gt;"mcp_servers"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="s2"&gt;"composio"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt;
      &lt;span class="s2"&gt;"type"&lt;/span&gt;: &lt;span class="s2"&gt;"remote"&lt;/span&gt;,
      &lt;span class="s2"&gt;"url"&lt;/span&gt;: &lt;span class="s2"&gt;"https://connect.composio.dev/mcp"&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
  &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Certainly not the most friendly interface, but good for transparency, as you can see what goes into the MCP server.&lt;/p&gt;

&lt;p&gt;Next, add skills:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/ComposioHQ/awesome-codex-skills ~/.opencode/skills/composio
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Restart OpenCode&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;opencode
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This works because OpenCode looks for skills in project and global locations, including &lt;code&gt;.opencode/skills&lt;/code&gt;, &lt;code&gt;~/.config/opencode/skills&lt;/code&gt;, &lt;code&gt;.claude/skills&lt;/code&gt;, and &lt;code&gt;.agents/skills&lt;/code&gt; .&lt;/p&gt;

&lt;p&gt;You can also add the Composio plugin:&lt;/p&gt;

&lt;p&gt;Add to &lt;code&gt;opencode.json&lt;/code&gt;&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="o"&gt;{&lt;/span&gt;
  &lt;span class="s2"&gt;"plugin"&lt;/span&gt;: &lt;span class="o"&gt;[&lt;/span&gt;
    &lt;span class="s2"&gt;"opencode-composio"&lt;/span&gt;,
    &lt;span class="s2"&gt;"opencode-context7"&lt;/span&gt;
  &lt;span class="o"&gt;]&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Save and restart OpenCode:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;opencode
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Done!&lt;/p&gt;

&lt;h3&gt;
  
  
  Verdict
&lt;/h3&gt;

&lt;p&gt;So Codex wins here due to process simplicity.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Open Code - 3 , Codex - 4&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  5. Harness Engineering
&lt;/h2&gt;

&lt;p&gt;The model matters, but the harness decides how that model sees the repo, plans changes, calls tools, handles errors, and recovers when something breaks. In practice, the harness is the difference between “the model is smart” and “the agent is reliable.”&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Aspect&lt;/th&gt;
&lt;th&gt;Codex&lt;/th&gt;
&lt;th&gt;OpenCode&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Implementation&lt;/td&gt;
&lt;td&gt;Rust-based, performance-focused CLI/app stack&lt;/td&gt;
&lt;td&gt;TypeScript core with Tauri desktop app&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Design philosophy&lt;/td&gt;
&lt;td&gt;Tightly optimized around OpenAI models&lt;/td&gt;
&lt;td&gt;Provider-agnostic and modular by design&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Context handling&lt;/td&gt;
&lt;td&gt;Strong default repo understanding with fewer choices&lt;/td&gt;
&lt;td&gt;More explicit control over model, context, and instructions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tool execution&lt;/td&gt;
&lt;td&gt;Permission profiles, hooks, sandboxed/cloud execution&lt;/td&gt;
&lt;td&gt;Local execution with permission gates and config-level control&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Feedback loop&lt;/td&gt;
&lt;td&gt;Optimized prompting, planning, and tool-calling pipeline&lt;/td&gt;
&lt;td&gt;LSP diagnostics fed back into the agent loop&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Strength&lt;/td&gt;
&lt;td&gt;Speed, polish, and low-friction execution&lt;/td&gt;
&lt;td&gt;Control, transparency, and production thoroughness&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tradeoff&lt;/td&gt;
&lt;td&gt;Less model/harness customization&lt;/td&gt;
&lt;td&gt;More setup and slower execution&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Best for&lt;/td&gt;
&lt;td&gt;Fast implementation and delegated engineering tasks&lt;/td&gt;
&lt;td&gt;Complex refactors where correctness matters more than speed&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Codex&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Codex feels like a vertically integrated agent stack.&lt;/p&gt;

&lt;p&gt;The model, prompt format, context strategy, tool-calling behavior, permission model, and review flow all feel designed to work together. That is the advantage of a closed, OpenAI-first harness: fewer knobs, fewer setup decisions, and fewer ways to misconfigure the system.&lt;/p&gt;

&lt;p&gt;The strongest part is how little I have to think about the plumbing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;permission profiles decide what the agent can touch,&lt;/li&gt;
&lt;li&gt;hooks let me run pre- and post-execution checks,&lt;/li&gt;
&lt;li&gt;GitHub and PR workflows feel native,&lt;/li&gt;
&lt;li&gt;tool calls are routed through a polished approval flow,&lt;/li&gt;
&lt;li&gt;cloud execution keeps risky changes away from my local machine until review.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Everything is tuned around GPT-5.5. That matters because Codex is not just calling a model; it is shaping how the model receives the repo, plans the task, executes commands, and presents diffs back to me.&lt;/p&gt;

&lt;p&gt;This is why Codex often feels faster than a generic agent using the same model. The harness reduces wasted motion. It does not ask me to design the workflow first; it gives me a working default and lets me move.&lt;/p&gt;

&lt;p&gt;The downside is that this optimization comes with a ceiling. If I want to change the model strategy, deeply customize the execution loop, or route different tasks through different providers, Codex gives me much less room to experiment.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;OpenCode&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;OpenCode takes the opposite bet.&lt;/p&gt;

&lt;p&gt;Instead of optimizing one model inside one polished workflow, it gives you a modular harness that can work across providers, models, local runtimes, MCP servers, and repo-level instructions. It is less “batteries included,” but much more inspectable.&lt;/p&gt;

&lt;p&gt;The most important engineering choice is the feedback loop. OpenCode can feed Language Server Protocol diagnostics back into the agent while it works. If the agent introduces a TypeScript error, the next step can include that error as context, so the model has a chance to self-correct before I even review the final diff.&lt;/p&gt;

&lt;p&gt;That changes the feel of the tool. OpenCode may be slower, but it often behaves more like an engineer working with compiler feedback, not just a chatbot editing files.&lt;/p&gt;

&lt;p&gt;It also gives me more control over the harness itself:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I can switch providers and models based on task type,&lt;/li&gt;
&lt;li&gt;keep project-specific behavior in &lt;code&gt;AGENTS.md&lt;/code&gt;,&lt;/li&gt;
&lt;li&gt;run locally with Ollama or LM Studio,&lt;/li&gt;
&lt;li&gt;wire in MCP tools manually,&lt;/li&gt;
&lt;li&gt;inspect config instead of trusting a black box.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is why OpenCode tends to feel better for production refactors. The loop is tighter, the configuration is more visible, and the agent can use local development signals instead of only relying on the initial prompt and repo context.&lt;/p&gt;

&lt;p&gt;The tradeoff is obvious: more control means more responsibility. If the model choice is bad, the config is messy, or the repo instructions are vague, OpenCode will not hide that complexity from me.&lt;/p&gt;

&lt;h3&gt;
  
  
  Verdict
&lt;/h3&gt;

&lt;p&gt;Codex has the better &lt;strong&gt;default harness&lt;/strong&gt;. OpenCode has the better &lt;strong&gt;customizable harness&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Codex wins on speed and polish:&lt;/strong&gt; it is optimized end-to-end for OpenAI models and gets me to a usable diff quickly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OpenCode wins on control and feedback:&lt;/strong&gt; LSP diagnostics, local execution, and provider flexibility make it stronger for careful refactors.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Codex abstracts the harness away. OpenCode exposes the harness and lets you tune it.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For a quick implementation, I would pick Codex. For a high-stakes refactor where I want visibility into every step, I would pick OpenCode.&lt;/p&gt;

&lt;p&gt;This one is a tie, but for very different reasons.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;OpenCode - 4 , Codex - 5&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  The Final Verdict: When To Choose What
&lt;/h2&gt;

&lt;p&gt;Clearly, OpenCode is the winner with 6 points, but real engineers leverage both for their specific needs :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Codex for speed, overnight refactors, and production-critical work.&lt;/li&gt;
&lt;li&gt;OpenCode for smart model routing, optimized costs, and offline critical workflows.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A simple table summarizes them.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Codex&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;OpenCode&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Best for&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;OpenAI ecosystem&lt;/td&gt;
&lt;td&gt;Cost control, model flexibility&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Setup&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Zero friction, bundled into ChatGPT subscripton&lt;/td&gt;
&lt;td&gt;Configure providers; slight model usage learning curve&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Autonomous work&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Cloud agent, good for overnight refactors&lt;/td&gt;
&lt;td&gt;Terminal agent; depends on your model&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Integrations&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;GitHub, PR review, Slack&lt;/td&gt;
&lt;td&gt;MCP; varies by setup&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Model choice&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;GPT-5 only&lt;/td&gt;
&lt;td&gt;75+ providers; Claude via API key only&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Offline&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes, with Ollama/LM Studio&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Transparency&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Token-based credits&lt;/td&gt;
&lt;td&gt;Full model + token visibility&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Real cost&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$20–$200/mo&lt;/td&gt;
&lt;td&gt;Free BYOK, or ~$10–$50/mo routing&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;With a few months of usage, one thing is clear to me,&lt;/p&gt;

&lt;p&gt;Choosing Codex or Opencode models is not about which benchmarks perform better; it's about picking the one that matches your workflow. Both are good in their own right, and best leveraged based on the needs.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>productivity</category>
      <category>programming</category>
    </item>
    <item>
      <title>9 Ways to Cut Token Consumption in Claude Code</title>
      <dc:creator>Developer Harsh</dc:creator>
      <pubDate>Sat, 30 May 2026 11:40:56 +0000</pubDate>
      <link>https://dev.to/developer_harsh/9-ways-to-cut-token-consumption-in-claude-code-3jpd</link>
      <guid>https://dev.to/developer_harsh/9-ways-to-cut-token-consumption-in-claude-code-3jpd</guid>
      <description>&lt;p&gt;After using Claude Code for serious coding work, the biggest lesson is simple: token consumption is not mainly a pricing issue. It is a workflow problem.&lt;/p&gt;

&lt;p&gt;When my Claude Code session gets messy, performance drops. It starts rereading irrelevant files, remembering failed attempts, carrying old logs, and wasting context on things that no longer matter.&lt;/p&gt;

&lt;p&gt;So my workflow is built around one principle:&lt;/p&gt;

&lt;p&gt;Keep Claude's active context small, clean, and useful.&lt;/p&gt;

&lt;p&gt;These are the 9 best ways to reduce token consumption in Claude Code that I use every day and can probably help you too.&lt;/p&gt;

&lt;h3&gt;
  
  
  tldr;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Don't send raw logs or full test results. Use filters and simple command wrappers to show only what matters: the error, the stack trace, the key details.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Sonnet handles most coding work fine and costs less. Use Opus for the really hard problems. For helper tasks and exploration, use Haiku.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Don't run expensive models on simple edits, and turn off extended thinking when you don't need deep reasoning.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use &lt;code&gt;/compact&lt;/code&gt; during a cleanup task while keeping what's important.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use /clear with a handoff file when switching to something completely different. This doesn’t let old failed attempts pile up in context memory.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Only put instructions that Claude needs most of the time (how to run tests, build commands, folder structure, main rules). Keep everything else in separate skill files and only load them when you actually need them, saving your tokens.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use Composio MCP to manage 1000+ tools as a single system instead of juggling 30+ active servers. When tasks are simple enough to use shell commands, use the composio CLI.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;ol&gt;
&lt;li&gt;Filter the tool output before Claude sees it
Raw logs are garbage for context. Claude does not need a 10,000-line test output. Instead, it needs the failing test, the stack trace, the expected vs. received values, and maybe the changed files.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;So I avoid this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;test&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And use filtered commands:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm test2&amp;gt;&amp;amp;1 |grep-A5-E&lt;span class="s2"&gt;"FAIL|ERROR|Error|Expected|Received"&lt;/span&gt; | head-100
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In my ideal setup, I create small wrappers like below and use them when needed:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;cc-test
cc-lint
cc-typecheck
cc-log
cc-ci
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bottom line here is, I let Claude consume summaries, not terminal noise.&lt;/p&gt;

&lt;p&gt;This one change saves the most tokens because it prevents context pollution before it even starts.&lt;/p&gt;




&lt;ol&gt;
&lt;li&gt;Match the model to the task
Not every task needs the same horsepower, and running Opus on everything is one of the most expensive habits in Claude Code. Most coding work does not need Opus. Sonnet handles it at a fraction of the cost.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;My setup:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/model sonnet   → default for most coding work
/model opus     → complex architecture, deep reasoning, tricky bugs
/model haiku    → repetitive tasks, boilerplate, quick lookups
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I switch to Opus when I genuinely need deeper reasoning, and switch back as soon as the hard part is done.&lt;/p&gt;

&lt;p&gt;For subagents specifically, I set:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;CLAUDE_CODE_SUBAGENT_MODEL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;haiku
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This means exploration agents, log inspectors, and doc-lookup agents all run on Haiku. The main thread stays on Sonnet.&lt;/p&gt;

&lt;p&gt;Extended thinking is another hidden cost - it burns output tokens for internal reasoning. For simple edits, I disable it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;MAX_THINKING_TOKENS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;0      → trivial tasks
&lt;span class="nv"&gt;MAX_THINKING_TOKENS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;10000  → architectural reasoning
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In fact, this approach is so effective that it rarely lets my context memory fill up before it resets the 5-hour limit. Basically unlimited usage!&lt;/p&gt;

&lt;p&gt;Bottom line: Using Opus for everything is like running every database query on your most expensive production server. Match the model to the work.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Don't let one session run forever with &lt;code&gt;/clear&lt;/code&gt; + &lt;code&gt;/compact&lt;/code&gt; + &lt;code&gt;handoffs&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;After enough turns, the context fills with old attempts, wrong theories, stale file reads, and outdated decisions. Even if Claude still remembers everything, much of that memory is now toxic.&lt;/p&gt;

&lt;p&gt;So I use &lt;code&gt;/clear&lt;/code&gt;, but with a different workflow. I create a &lt;a href="http://handoff.md/" rel="noopener noreferrer"&gt;handoff.md&lt;/a&gt; file, include all the relevant details required, like goal, changed file, decisions made, and so on&lt;/p&gt;

&lt;p&gt;Here is how you can do it too.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;Before clearing:
Ask Claude to write .claude/session-handoff.md

Include:
&lt;span class="p"&gt;-&lt;/span&gt; current goal
&lt;span class="p"&gt;-&lt;/span&gt; changed files
&lt;span class="p"&gt;-&lt;/span&gt; decisions made
&lt;span class="p"&gt;-&lt;/span&gt; failing tests
&lt;span class="p"&gt;-&lt;/span&gt; root cause
&lt;span class="p"&gt;-&lt;/span&gt; next step
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then I run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/clear
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And restart with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Read .claude/session-handoff.md and continue.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This gives me the best of both worlds: fresh context without lost progress.&lt;/p&gt;

&lt;p&gt;For mid-task cleanup without a full reset, I use &lt;code&gt;/compact&lt;/code&gt; instead. But I never run it blindly. Before compacting, I tell Claude exactly what to preserve:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;/compact Preserve: optimistic locking &lt;span class="k"&gt;for &lt;/span&gt;user updates, no schema changes this session.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/compact
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This shapes what the summary will capture. In short, critical decisions gets added to context, while removing the noise.&lt;/p&gt;

&lt;p&gt;The difference (a must-know):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;/compact&lt;/code&gt;: summarize and continue, for tasks that require a lighter context.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/clear&lt;/code&gt;: full reset with handoff file, for tasks that require switching or starting fresh.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Bottom line&lt;/strong&gt;: Don't treat &lt;code&gt;/clear&lt;/code&gt; as a reset button. Treat it as context garbage collection. Use &lt;code&gt;/compact&lt;/code&gt; for garbage collection mid-flight with instructions.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Keep &lt;code&gt;CLAUDE.md&lt;/code&gt; minimal
&lt;/h2&gt;

&lt;p&gt;Most people overload &lt;code&gt;CLAUDE.md&lt;/code&gt;. They add architecture notes, deployment steps, PR rules, debugging checklists, style guides, testing philosophy, and random project history.&lt;/p&gt;

&lt;p&gt;That feels organized, but it silently burns context every session.&lt;/p&gt;

&lt;p&gt;My rule:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If Claude does not need it in 80% of sessions, it does not belong in &lt;code&gt;CLAUDE.md&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;My &lt;code&gt;CLAUDE.md&lt;/code&gt; only includes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="p"&gt;-&lt;/span&gt; package manager
&lt;span class="p"&gt;-&lt;/span&gt; test command
&lt;span class="p"&gt;-&lt;/span&gt; build command
&lt;span class="p"&gt;-&lt;/span&gt; repo layout
&lt;span class="p"&gt;-&lt;/span&gt; core architecture constraints
&lt;span class="p"&gt;-&lt;/span&gt; forbidden patterns
&lt;span class="p"&gt;-&lt;/span&gt; naming conventions
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Everything else goes into &lt;code&gt;skills&lt;/code&gt; or separate &lt;code&gt;docs&lt;/code&gt; folder.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.claude/skills/db-migration/SKILL.md
.claude/skills/pr-review/SKILL.md
.claude/skills/prod-debugging/SKILL.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bottom Line: Keep the base context light. loads the long workflow only when it's needed, keeping context quality intact.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Use plan mode before touching any code
&lt;/h2&gt;

&lt;p&gt;Most context waste happens because Claude jumps straight into implementation without a clear plan.&lt;/p&gt;

&lt;p&gt;It reads files speculatively, tries an approach, backtracks, and reads more files. By the time it reaches a working solution, the session is already polluted with failed attempts.&lt;/p&gt;

&lt;p&gt;Plan mode separates thinking from doing by restricting access to the write-and-modify tool.&lt;/p&gt;

&lt;p&gt;I press &lt;code&gt;Shift+Tab&lt;/code&gt; twice before doing anything non-trivial&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Shift+Tab → plan mode on
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In plan mode, Claude reads files and reasons through the problem without making any changes. I let it map dependencies and surface unknowns.&lt;/p&gt;

&lt;p&gt;Then I press &lt;code&gt;Ctrl+G&lt;/code&gt; to open and edit the plan directly before Claude writes a single line of code.&lt;/p&gt;

&lt;p&gt;Bad prompt (no plan):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Add Google OAuth to the login system.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Better workflow:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;[plan mode on]
I want to add Google OAuth. What files need to change?
What is the session flow? Create a plan.

[review plan, edit if needed]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;[&lt;/span&gt;plan mode off]
Now implement from the plan.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bottom line: Claude solving the right problem the first time is always cheaper than rework. Let it plan, verify, and then execute.&lt;/p&gt;




&lt;h2&gt;
  
  
  6. Use bounded subagents for noisy exploration
&lt;/h2&gt;

&lt;p&gt;Subagents are useful, but only when tightly controlled, as they tend to wander off.&lt;/p&gt;

&lt;p&gt;I don't prompt:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Investigate the repo.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I prompt:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Inspect only src/auth and tests/auth.
Return max 15 bullets.
Include exact files.
No implementation.
No broad repo scan.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In general, I use Claude subagents for noisy work, such as log analysis, test failure inspection, dependency search, doc lookup, and blast radius analysis.&lt;/p&gt;

&lt;p&gt;This multi-agent collaboration yields a cleaner workflow than a single-agent approach.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bottom Line:&lt;/strong&gt; The main Claude session should not carry all the exploration. It should only receive the compressed result from each agent.&lt;/p&gt;




&lt;h2&gt;
  
  
  7. Force surgical repo navigation
&lt;/h2&gt;

&lt;p&gt;I don't ask Claude to "understand the codebase and explain it to me."&lt;/p&gt;

&lt;p&gt;That usually causes broad scanning of wrong files, leading to unnecessary context usage, not to mention agents creating docs in the native repo (recent times)&lt;/p&gt;

&lt;p&gt;Instead, I create a &lt;code&gt;docs/repo_map.md&lt;/code&gt;   with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="p"&gt;-&lt;/span&gt; main entrypoints
&lt;span class="p"&gt;-&lt;/span&gt; key modules
&lt;span class="p"&gt;-&lt;/span&gt; test commands
&lt;span class="p"&gt;-&lt;/span&gt; auth/data/payment flows
&lt;span class="p"&gt;-&lt;/span&gt; generated folders to avoid
&lt;span class="p"&gt;-&lt;/span&gt; files Claude should read first
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and then prompt accordingly. Here is an example of what I mean.&lt;/p&gt;

&lt;p&gt;Bad prompt:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Understand the auth system and fix the bug.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Better prompt:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Find the login entrypoint. Read only the files needed to explain token validation. Do not scan unrelated directories.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This saves a lot of tokens because Claude starts from a map instead of wandering through the repo and figuring the repo out.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bottom line&lt;/strong&gt;: Repo Maps leads to fewer incorrect file reads, reducing context usage.&lt;/p&gt;




&lt;h2&gt;
  
  
  8. Lean on skills and plugins for progressive disclosure
&lt;/h2&gt;

&lt;p&gt;Pulling stuff out of &lt;code&gt;CLAUDE.md&lt;/code&gt; only helps if the place you move it to isn't also loaded every session. That is exactly what skills are for.&lt;/p&gt;

&lt;p&gt;A skill is just a folder with a &lt;code&gt;SKILL.md&lt;/code&gt; (a short name + description, then instructions, plus any reference files or scripts). The win is how it loads: at session start Claude only sees the name and description of each &lt;a href="https://composio.dev/content/top-claude-skills" rel="noopener noreferrer"&gt;Claude skill&lt;/a&gt;, roughly 30 to 100 tokens each. &lt;/p&gt;

&lt;p&gt;The full &lt;code&gt;SKILL.md&lt;/code&gt; body loads only when Claude decides the skill is relevant, and any bundled reference files or scripts load only if they're actually needed.&lt;/p&gt;

&lt;p&gt;So I can keep deep workflows around without paying for them upfront:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;claude&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;skills&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;db&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;migration&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;SKILL&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;md&lt;/span&gt;
&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;claude&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;skills&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;pr&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;review&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;SKILL&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;md&lt;/span&gt;
&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;claude&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;skills&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;prod&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;debugging&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;SKILL&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;md&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Eight of these sitting in the project might cost a few hundred tokens at startup instead of dumping thousands of lines into context before any work begins. &lt;/p&gt;

&lt;p&gt;The description is doing all the heavy lifting here, so I write it specific. "Helps with documents" never triggers. "Use when filling PDF forms and extracting table data" does.&lt;/p&gt;

&lt;p&gt;Plugins are the next layer up. A plugin bundles skills, slash commands, subagents, hooks, and MCP servers into one installable unit, and you enable or disable the whole bundle on demand:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="sr"&gt;/plugin marketplace add &amp;lt;marketplace&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;&lt;span class="sr"&gt;/plugin add &amp;lt;plugin&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The point is the same as everything else in this post: keep dormant capability out of the active context. Install the plugin when a project needs it, disable it when it doesn't, and you never carry tooling you aren't using.&lt;/p&gt;

&lt;p&gt;Bad setup:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Everything stuffed into CLAUDE.md so it's "always available."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Better setup:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Tiny CLAUDE.md. Long workflows as skills with sharp descriptions. Capability sets as plugins you toggle per project.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  9. Using &lt;a href="https://dashboard.composio.dev" rel="noopener noreferrer"&gt;Composio MCP and CLI&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;One of the top bottlenecks for me with the introduction of MCP was managing 30+ MCP integrations.  Use fewer MCP servers, and the work won't be done. Use more, and it will add to the context memory.&lt;/p&gt;

&lt;p&gt;Composio solved this for me by offering a universal MCP server that plugs into any MCP-supported agents and lets it connect to 1000+ services and tools, with on-demand tool loading, remote workbench for composing tools, and bash tool for handling edge cases with scripting.&lt;/p&gt;

&lt;p&gt;Here is a brief breakdown of token savings with Composio MCP and without it for tasks that use tools such as &lt;a href="https://composio.dev/toolkits/linear" rel="noopener noreferrer"&gt;Linear&lt;/a&gt;, &lt;a href="https://composio.dev/toolkits/github" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;, &lt;a href="https://composio.dev/toolkits/sentry/framework/vscode" rel="noopener noreferrer"&gt;Sentry&lt;/a&gt;, &lt;a href="https://composio.dev/toolkits/supabase" rel="noopener noreferrer"&gt;Supabase&lt;/a&gt;, and &lt;a href="https://composio.dev/toolkits/context7_mcp" rel="noopener noreferrer"&gt;Context7&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Without Composio MCP&lt;/strong&gt;&lt;br&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.amazonaws.com%2Fuploads%2Farticles%2Fg6vuwknsq909a7qulft1.png" 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.amazonaws.com%2Fuploads%2Farticles%2Fg6vuwknsq909a7qulft1.png" alt="Token Consumption without composio mcp" width="800" height="505"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;With Composio MCP&lt;/strong&gt;&lt;/p&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2Fm5g3jhzewu2ufa6inley.png" 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.amazonaws.com%2Fuploads%2Farticles%2Fm5g3jhzewu2ufa6inley.png" alt="Token Consumption with composio mcp" width="799" height="488"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As you can see, Composio used fewer tokens than the raw approach. It uses only seven meta tools and gets’ you the best bang for token used.&lt;/p&gt;

&lt;p&gt;When I need even more reduction on top of that, I use the &lt;a href="https://composio.dev/cli" rel="noopener noreferrer"&gt;Composio CLI&lt;/a&gt; directly.&lt;/p&gt;

&lt;p&gt;LLMs understand and parse shell commands better than tool schemas, they can be combined with multiple commands (composable), and has less to and from between servers and the LLM. It’s faster.&lt;/p&gt;

&lt;p&gt;My rule: I start with Composio MCP to consolidate integrations, then move to CLI when the task is simple enough for a shell command.&lt;/p&gt;

&lt;p&gt;Bottom line: Active MCP is added as a context tax that compounds across every chat. Every active tool adds overhead to the schema, description, and result. So use fewer, smarter integrations, not more.&lt;/p&gt;




&lt;h2&gt;
  
  
  My actual Claude Code workflow
&lt;/h2&gt;

&lt;p&gt;If I were setting this up for daily development, my stack would look like this (in no particular order):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Start with tiny &lt;code&gt;CLAUDE.md&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Keep long workflows in &lt;code&gt;skills&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;repo-map.md&lt;/code&gt; for navigation&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;cc-test&lt;/code&gt; / &lt;code&gt;cc-log&lt;/code&gt; / &lt;code&gt;cc-diff&lt;/code&gt; wrappers&lt;/li&gt;
&lt;li&gt;Use Composio MCP to consolidate integrations, and CLI when a shell command will do&lt;/li&gt;
&lt;li&gt;Use subagents for exploration, the Haiku model for agents&lt;/li&gt;
&lt;li&gt;Write &lt;code&gt;handoff.md&lt;/code&gt; before clearing context&lt;/li&gt;
&lt;li&gt;Enter plan mode before any non-trivial implementation&lt;/li&gt;
&lt;li&gt;/compact with explicit preservation instructions at task boundaries&lt;/li&gt;
&lt;li&gt;/clear aggressively between unrelated tasks&lt;/li&gt;
&lt;li&gt;Switch to Opus only for deep reasoning, back to Sonnet after&lt;/li&gt;
&lt;li&gt;Keep the main thread clean&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The real mindset shift for you is this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Claude Code works best when you treat it like a powerful engineer with limited working memory.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Don't dump everything on it. Don't make it read garbage. Don't let old context pile up. Give it the right files, the right errors, the right constraints, and a clean session.&lt;/p&gt;

&lt;p&gt;That is where token savings actually come from. Perform better harness engineering.&lt;/p&gt;

</description>
      <category>claude</category>
      <category>ai</category>
      <category>productivity</category>
      <category>programming</category>
    </item>
    <item>
      <title>I Took Cursor Agents Out of the IDE and It Got Weirdly Powerful 🤯</title>
      <dc:creator>Developer Harsh</dc:creator>
      <pubDate>Tue, 19 May 2026 10:05:31 +0000</pubDate>
      <link>https://dev.to/composiodev/i-took-cursor-agents-out-of-the-ide-and-it-got-weirdly-powerful-286i</link>
      <guid>https://dev.to/composiodev/i-took-cursor-agents-out-of-the-ide-and-it-got-weirdly-powerful-286i</guid>
      <description>&lt;p&gt;Cursor recently released their &lt;a href="https://cursor.com/blog/typescript-sdk" rel="noopener noreferrer"&gt;cursor agents SDK&lt;/a&gt; to the public, and it's quietly powering many teams to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;invoke agents directly from CI/CD pipelines,&lt;/li&gt;
&lt;li&gt;create automations for end-to-end workflows,&lt;/li&gt;
&lt;li&gt;and embedding agents into core products.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Basically, the SDK lets developers deploy agents without overthinking building and maintaining the entire agent stack&lt;/p&gt;

&lt;p&gt;in this blog I give a glimpse of what is possible with the cursor agents SDK and how to overcome the restrictions of limited tool access.&lt;/p&gt;

&lt;p&gt;Let's start with a brief overview of cursor agents.&lt;/p&gt;




&lt;h2&gt;
  
  
  A Primer On Cursor Agents SDK
&lt;/h2&gt;

&lt;p&gt;Building an agent from scratch is a massive headache. Cursor SDK skips the&lt;br&gt;
plumbing.&lt;/p&gt;

&lt;p&gt;Before the SDK, &lt;a href="https://cursor.com" rel="noopener noreferrer"&gt;Cursor&lt;/a&gt; was strictly an interactive IDE, but its newly released SDK turns that&lt;br&gt;
agentic power into headless infrastructure. &lt;/p&gt;

&lt;p&gt;It uses the same &lt;strong&gt;harness&lt;/strong&gt; that powers the desktop app, meaning you get IDE-grade code generation programmatically.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Harness: context engine, workspace management, and routing&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In fact, the cursor harness matters more than the model. &lt;a href="https://www.endorlabs.com/learn/gpt-5-5-sets-a-new-code-security-record-with-cursor-not-codex-in-agent-security-league" rel="noopener noreferrer"&gt;Endor Labs&lt;/a&gt; benched&lt;br&gt;
GPT-5.5 natively at 61.5% functional correctness. Then, dropping the same model into Cursor's harness, it scored 87.2%.&lt;/p&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2Faa4jgbjxm262koapm9nm.png" 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.amazonaws.com%2Fuploads%2Farticles%2Faa4jgbjxm262koapm9nm.png" alt="Proof" width="800" height="294"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Cursor spent years tuning the context management and tool dispatch; the SDK hands you that refined engine.&lt;/p&gt;

&lt;p&gt;Here is the spec list for those who care:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Spec / Feature&lt;/th&gt;
&lt;th&gt;Technical Detail&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;The Harness&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Built-in codebase indexing, semantic search, &amp;amp; instant grep.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Execution&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Cloud (sandboxed VMs with durable state), Self-Hosted, Local.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Models&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Agnostic. Uses &lt;code&gt;composer-2/composer-3&lt;/code&gt; (default), Claude, or OpenAI.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Integrations&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Deep MCP support, auto-loaded &lt;code&gt;.cursor/skills/&lt;/code&gt;, &amp;amp; hooks.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Subagents&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Main agent can spawn subagents with distinct prompts/models.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This means we have a perfect stack to build our agent. Let’s get started with the setup.&lt;/p&gt;


&lt;h2&gt;
  
  
  How to Set Up Cursor Agents SDK
&lt;/h2&gt;

&lt;p&gt;You can install it using &lt;code&gt;npm&lt;/code&gt; to get started, then use Cursor's native &lt;code&gt;cursor SDK skill&lt;/code&gt; for guidance.&lt;/p&gt;

&lt;p&gt;So open your terminal and type:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Output&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Once done, install the cursor skill for guiding the cursor / Claude Code. In the same terminal, run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm add skills /cursor-sdk
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But there is a catch: by default, the Cursor SDK agents ship with a few default tools + MCP support.&lt;/p&gt;

&lt;p&gt;However, this means connecting to or configuring multiple MCP servers is such a hassle for a production-grade product.&lt;/p&gt;

&lt;p&gt;So let's automate it with Composio as the orchestrator, connect and configure it once, and you get secure access to 1000+ tools with optimized tool calls and context.&lt;/p&gt;




&lt;h2&gt;
  
  
  Building a Production Agent With Composio MCP + Cursor Agent SDK
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Why Composio?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://composio.dev/" rel="noopener noreferrer"&gt;Composio&lt;/a&gt; offers a single MCP server you can plug into with the Cursor SDK to access &lt;a href="https://composio.dev/toolkits" rel="noopener noreferrer"&gt;1000+ apps&lt;/a&gt; instantly. &lt;/p&gt;

&lt;p&gt;When you’re building an agent that requires interacting with external applications, let’s say a Sales agent with &lt;a href="https://composio.dev/toolkits/gong" rel="noopener noreferrer"&gt;Gong&lt;/a&gt;, &lt;a href="https://composio.dev/toolkits/hubspot" rel="noopener noreferrer"&gt;HubSpot&lt;/a&gt;, &lt;a href="https://composio.dev/toolkits/salesforce" rel="noopener noreferrer"&gt;Salesforce connectors&lt;/a&gt;, etc., you’d spend weeks on partnerships and integrations. Composio completely removes this friction, so you build what matters&lt;/p&gt;

&lt;p&gt;So, let’s explore one example of a GitHub agent that pulls the repository, analyzes it, creates a dev branch, performs automatic refactoring, pushes the code, and opens a PR for review - a simple but powerful use case.&lt;/p&gt;

&lt;p&gt;Let's begin!&lt;/p&gt;

&lt;h3&gt;
  
  
  Setup Workspace
&lt;/h3&gt;

&lt;p&gt;Head to the terminal and run the following commands&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="nb"&gt;mkdir &lt;/span&gt;cursor-agent
&lt;span class="nb"&gt;cd &lt;/span&gt;cursor-agent
npm init &lt;span class="nt"&gt;-y&lt;/span&gt;
npm &lt;span class="nb"&gt;install &lt;/span&gt;typescript ts-node @types/node &lt;span class="nt"&gt;--save-dev&lt;/span&gt;
npx tsc &lt;span class="nt"&gt;--init&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The command will create a new project named &lt;code&gt;cursor_agent&lt;/code&gt; , switch to the folder, initialize a blank &lt;code&gt;npm&lt;/code&gt; project (ensure &lt;code&gt;package.json&lt;/code&gt; gets created), install typescript support for development, and initialize the typescript compiler and linter.&lt;/p&gt;

&lt;p&gt;Since our repository is set up, let’s configure environment variables.&lt;/p&gt;

&lt;h3&gt;
  
  
  Set up Environment Variables
&lt;/h3&gt;

&lt;p&gt;Add a &lt;code&gt;.env&lt;/code&gt; file to keep secrets secure and add the following values:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;CURSOR_API_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;your-cursor-api-key
&lt;span class="nv"&gt;COMPOSIO_API_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;your-composio-api-key
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can get the &lt;code&gt;CURSOR_API_KEY&lt;/code&gt; by going to the &lt;a href="https://cursor.com/dashboard/integrations" rel="noopener noreferrer"&gt;Cursor integration&lt;/a&gt; page and creating a new API key.&lt;/p&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2Feddl8myiiaj88t15jurd.png" 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.amazonaws.com%2Fuploads%2Farticles%2Feddl8myiiaj88t15jurd.png" alt="Step 1" width="800" height="456"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For COMPOSIO_API_KEY  , visit the &lt;a href="https://dashboard.composio.dev/" rel="noopener noreferrer"&gt;Composio Dashboard (Platform)&lt;/a&gt;, log in/sign up to the account, and head to the default project (or create one) → profile→ API KEY.&lt;/p&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2Fv4drqq50yjgm04dz5pdu.png" 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.amazonaws.com%2Fuploads%2Farticles%2Fv4drqq50yjgm04dz5pdu.png" alt="Step 2" width="800" height="474"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click “Create One”, it creates one, copy and then paste it into .env . Make sure it starts with ak_ .&lt;/p&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2Fpusjo38ewzyorboce28i.png" 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.amazonaws.com%2Fuploads%2Farticles%2Fpusjo38ewzyorboce28i.png" alt="Step 3" width="800" height="474"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Time to write the code.&lt;/p&gt;




&lt;h3&gt;
  
  
  The Code
&lt;/h3&gt;

&lt;p&gt;Now, create a new &lt;code&gt;index.ts&lt;/code&gt; file and paste the following code.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="c1"&gt;// imports&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;dotenv/config&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="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nx"&gt;readline&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;node:readline/promises&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;stdin&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nx"&gt;input&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;stdout&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nx"&gt;output&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;node:process&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="kd"&gt;type&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;SDKAgent&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;@cursor/sdk&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;DEFAULT_USER_ID&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;disposeAllAgents&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;getComposioApiKey&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;getOrCreateRuntime&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;requireEnv&lt;/span&gt;&lt;span class="p"&gt;,&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;./runtime.ts&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// log tool calls to stdout&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;logToolCall&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;args&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;unknown&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;status&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;running&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;completed&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;error&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="k"&gt;void&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;status&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;running&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="s2"&gt;`\n[tool: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;] &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;args&lt;/span&gt;&lt;span class="p"&gt;)}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;status&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;completed&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="s2"&gt;`[tool: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;] done`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// stream assistant text and tool events - act as streaming handler&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;runAgentChatStreaming&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;SDKAgent&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="nb"&gt;Promise&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;void&lt;/span&gt;&lt;span class="o"&gt;&amp;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;run&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;agent&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;message&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;stdout&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;agent &amp;gt; &lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="k"&gt;await &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;event&lt;/span&gt; &lt;span class="k"&gt;of&lt;/span&gt; &lt;span class="nx"&gt;run&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stream&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="kd"&gt;type&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;assistant&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="k"&gt;for &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;block&lt;/span&gt; &lt;span class="k"&gt;of&lt;/span&gt; &lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;content&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;block&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="kd"&gt;type&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;text&lt;/span&gt;&lt;span class="dl"&gt;"&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;stdout&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;block&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;text&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="kd"&gt;type&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;tool_call&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="nf"&gt;logToolCall&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;args&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;status&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;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;run&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;wait&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="k"&gt;if &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;status&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;error&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="k"&gt;throw&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`Agent run failed (&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;id&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&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;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;stdout&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\n\n&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// runs the chat loop, adds a readline interface and disposes agents on exit&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="nb"&gt;Promise&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;void&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;requireEnv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;CURSOR_API_KEY&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nf"&gt;getComposioApiKey&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="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Setting up Composio session...&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;runtime&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;getOrCreateRuntime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;DEFAULT_USER_ID&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="s2"&gt;`Ready (user: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;runtime&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;userId&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;, session: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;runtime&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;sessionId&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;, tools: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;runtime&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;toolsCount&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&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="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Type a message, or 'exit' to quit.&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;rl&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;readline&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;createInterface&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;input&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="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;while &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;true&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;userInput&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;rl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;question&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 &amp;gt; &lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)).&lt;/span&gt;&lt;span class="nf"&gt;trim&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
      &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;userInput&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;continue&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;userInput&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;exit&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nx"&gt;userInput&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;quit&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;break&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

      &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;runAgentChatStreaming&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;runtime&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;userInput&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;finally&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;rl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;close&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;disposeAllAgents&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="k"&gt;catch&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&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="nf"&gt;exit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Let's look at the code: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;We start by loading dependencies from &lt;code&gt;.env&lt;/code&gt;, &lt;code&gt;readline&lt;/code&gt;, and shared helpers from &lt;a href="https://github.com/DevloperHS/cursor_agents/blob/main/runtime.ts" rel="noopener noreferrer"&gt;&lt;code&gt;runtime.ts&lt;/code&gt;&lt;/a&gt; (&lt;code&gt;getOrCreateRuntime&lt;/code&gt;, API key checks, and cleanup)&lt;/li&gt;
&lt;li&gt;For a sanity check, we validate &lt;code&gt;CURSOR_API_KEY&lt;/code&gt; and &lt;code&gt;COMPOSIO_API_KEY&lt;/code&gt; before the chat loop starts (Composio is also checked when &lt;code&gt;runtime.ts&lt;/code&gt; loads).&lt;/li&gt;
&lt;li&gt;Next, we create a Composio session for the default user and spin up a Cursor agent on &lt;code&gt;composer-2&lt;/code&gt; with the Composio MCP server for tools (handled in &lt;code&gt;runtime.ts&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;We keep the same agent in the loop for every message, so tools and sessions stay wired throughout the CLI session.&lt;/li&gt;
&lt;li&gt;We run a terminal chat loop with readline: read input → send to agent → stream assistant text and tool status → repeat until &lt;code&gt;exit&lt;/code&gt; or &lt;code&gt;quit&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;While streaming, we log tool calls on &lt;code&gt;running&lt;/code&gt; and &lt;code&gt;completed&lt;/code&gt;, and throw if the agent run ends in error.&lt;/li&gt;
&lt;li&gt;On exit, we close readline, dispose of agents via &lt;code&gt;runtime.ts&lt;/code&gt;, and log any failure from &lt;code&gt;main()&lt;/code&gt; before exiting with code 1.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you encounter an issue, refer to the codebase in the project's &lt;a href="https://github.com/DevloperHS/cursor_agents" rel="noopener noreferrer"&gt;GitHub repo&lt;/a&gt;.  Feel free to clone it, tweak it to your liking, or use it as it is.&lt;/p&gt;

&lt;p&gt;And that's it, all set, time to run the agent!&lt;/p&gt;




&lt;h2&gt;
  
  
  Run the agent
&lt;/h2&gt;

&lt;p&gt;To run the agent in the terminal and at the project root, type:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx ts-node index.ts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and an interactive chat opens up where you can prompt it step by step / direct it to do the entire task at once. Here is a demo of me using it in chat mode (step by step)&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/k4wfe4pJS_0"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;As you can see, the cursor agent acts as the brain, calling the &lt;a href="https://composio.dev/toolkits/github" rel="noopener noreferrer"&gt;Composio GitHub tools&lt;/a&gt; to clone the repo, check for changes, create a dev branch, refactor the code, commit to the dev branch, and finally open a PR.&lt;/p&gt;

&lt;p&gt;Usually, this takes many human hours, but with a cursor-agent, it takes only 5 minutes.&lt;/p&gt;

&lt;p&gt;Also, with the new update, you need to add a GitHub token to use GitHub with the cursor/agent. Using Composio fixes this need as well.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note: For simplicity I have used terminal , but you can add a ui layer on top of the agent.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;With this, we have reached the end of the article. Here is my closing note.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;In this article, we learned how to use the Cursor SDK and Composio MCP to build a GitHub chatbot while keeping it optimized for asynchronous operations and following best practices, such as masking sensitive variables.&lt;/p&gt;

&lt;p&gt;But this is just the tip of the iceberg with what's possible with the cursor agent SDK. Feel free to experiment and build your own assistant/chatbot. You can explore more in the &lt;a href="https://github.com/cursor/cookbook" rel="noopener noreferrer"&gt;cursor-cookbook&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;At the end of the day, building agents / multi-agent systems is not hard; planning and orchestrating them to work efficiently, collaboratively, and securely is. In fact, it's the next valuable skill in 2026.&lt;/p&gt;

&lt;p&gt;So what are you waiting for? Get started with Cursor Agents while &lt;a href="https://composio.dev/" rel="noopener noreferrer"&gt;Composio MCP&lt;/a&gt; handles the tooling layer.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>agents</category>
    </item>
    <item>
      <title>Building Streamable HTTP MCP Servers from Scratch using FastMCP in 2026</title>
      <dc:creator>Developer Harsh</dc:creator>
      <pubDate>Mon, 18 May 2026 14:50:04 +0000</pubDate>
      <link>https://dev.to/composiodev/building-streamable-http-mcp-servers-from-scratch-using-fastmcp-in-2026-5fh9</link>
      <guid>https://dev.to/composiodev/building-streamable-http-mcp-servers-from-scratch-using-fastmcp-in-2026-5fh9</guid>
      <description>&lt;p&gt;If you've spent any time wiring up tools for an AI agent, you know the pain: every model vendor has its own function-calling format, every integration is bespoke glue code, and every model upgrade breaks something downstream. &lt;/p&gt;

&lt;p&gt;MCP changes this by providing a shared interface for tools, data sources, and AI clients. Instead of rebuilding integrations for every model or app, you expose capabilities once through an MCP server and let compatible clients connect to them.&lt;/p&gt;

&lt;p&gt;Anthropic released the Model Context Protocol in November 2024, and by spring 2025, OpenAI, Microsoft, and Google had adopted it. It has quickly become the de facto standard for connecting AI systems to external tools and data. That makes MCP worth learning now.&lt;/p&gt;

&lt;p&gt;This guide teaches you how to build an MCP server from scratch, expose it over two transports: &lt;strong&gt;stdio&lt;/strong&gt; and &lt;strong&gt;streamable HTTP&lt;/strong&gt;, connect it to Claude Desktop and Cursor.  and provide you with a production checklist for hardening the production MCP servers before shipping them. The full code is available in the companion repo at the end&lt;/p&gt;

&lt;h3&gt;
  
  
  tl; dr
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;What is MCP&lt;/li&gt;
&lt;li&gt;MCP Components in Nutshell&lt;/li&gt;
&lt;li&gt;Build a Local MCP server (tools, resources, and prompts)&lt;/li&gt;
&lt;li&gt;Connect to Hosted MCP Server (HTTP Streamable)&lt;/li&gt;
&lt;li&gt;MCP Server Advance Use Case&lt;/li&gt;
&lt;li&gt;Deployment Notes for Production MCP Servers&lt;/li&gt;
&lt;li&gt;Conclusion&lt;/li&gt;
&lt;li&gt;Frequently Asked Questions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let's Begin!&lt;/p&gt;




&lt;h2&gt;
  
  
  What is MCP
&lt;/h2&gt;

&lt;p&gt;An MCP server is a JSON-RPC 2.0 process that exposes three primitives to any compliant &lt;a href="https://composio.dev/content/mcp-client-step-by-step-guide-to-building-from-scratch" rel="noopener noreferrer"&gt;MCP client&lt;/a&gt; over stdio or streamable HTTP. Those primitives are &lt;strong&gt;tools&lt;/strong&gt; (functions the model can call), &lt;strong&gt;resources&lt;/strong&gt; (data the model can read), and &lt;strong&gt;prompts&lt;/strong&gt; (reusable templates). That's the whole protocol. &lt;/p&gt;

&lt;p&gt;Everything else is an implementation detail as given in the comparison table.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Feature&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Model Context Protocol (MCP)&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Traditional API (REST / GraphQL / gRPC)&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Primary purpose&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Give LLM-based agents a &lt;em&gt;single&lt;/em&gt; way to fetch context &lt;strong&gt;and&lt;/strong&gt; invoke side-effecting tools.&lt;/td&gt;
&lt;td&gt;General machine-to-machine data exchange &amp;amp; business logic.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Integration effort&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Once an agent speaks MCP, it can talk to any compliant server; only one SDK/wire-spec to learn.&lt;/td&gt;
&lt;td&gt;Each API exposes its own spec/SDK; you integrate them one by one.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Interaction model&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Stateful sessions + bidirectional messaging; supports long-running tasks and mid-job progress callbacks.&lt;/td&gt;
&lt;td&gt;Stateless request/response; usually unidirectional.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Streaming support&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Standardised via “Streamable HTTP” (SSE/WebSocket).&lt;/td&gt;
&lt;td&gt;Not part of the REST spec; developers bolt on WebSockets/SSE ad hoc.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Extensibility (adding new capabilities)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The server can add new tools/resources without breaking clients; the agent discovers them at runtime.&lt;/td&gt;
&lt;td&gt;Breaking changes need versioning, or clients must update to use new endpoints/types.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Standardisation/wire format&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;One JSON-Schema-driven spec for inputs &amp;amp; outputs, plus defined transports.&lt;/td&gt;
&lt;td&gt;Multiple styles (REST, GraphQL, gRPC) with differing auth headers, error shapes, and media types.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Maturity &amp;amp; tooling&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Rapidly growing, but still early; dozens of open-source servers and early commercial support.&lt;/td&gt;
&lt;td&gt;Decades of best-practice guides, gateways, SDKs, APM, and monitoring.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Performance path length&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Extra hop (agent → MCP → underlying API) adds a bit of latency; streaming mitigates waiting for large payloads.&lt;/td&gt;
&lt;td&gt;Direct call; generally lower overhead for high-QPS, deterministic workloads.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Typical sweet-spot use-cases&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Autonomous agents chaining multiple tools, dynamic workflows, and user-in-the-loop&lt;/td&gt;
&lt;td&gt;CRUD data services, stable integrations, high-throughput micro-services.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;If you want a deeper conceptual primer, check out the &lt;a href="https://composio.dev/blog/what-is-model-context-protocol-mcp-explained/" rel="noopener noreferrer"&gt;Model Context Protocol explainer&lt;/a&gt;, which covers the architecture in detail. For primer, here is how this all works!&lt;/p&gt;




&lt;h2&gt;
  
  
  MCP Components in Nutshell
&lt;/h2&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2Fs0n3rpcv1z9e5dubyxjb.png" 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.amazonaws.com%2Fuploads%2Farticles%2Fs0n3rpcv1z9e5dubyxjb.png" alt="MCP Component" width="800" height="541"&gt;&lt;/a&gt; %}&lt;/p&gt;

&lt;h3&gt;
  
  
  The Architecture
&lt;/h3&gt;

&lt;p&gt;The MCP architecture consists of several key components that work together to enable seamless integration:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;MCP Hosts&lt;/strong&gt;: Applications that want to use tools or data through MCP. Examples include Claude Desktop, Cursor, or any AI app that supports MCP.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MCP Clients&lt;/strong&gt;: Client instances created by the host. Each client maintains a dedicated one-to-one connection with a single MCP server.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MCP Servers&lt;/strong&gt;: Lightweight programs that expose tools, resources, and prompts through the MCP protocol.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local Data Sources&lt;/strong&gt;: Files, databases, codebases, or local services that an MCP server can access on the user’s machine.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Remote Services&lt;/strong&gt;: External APIs or cloud services that an MCP server can call, such as Google Sheets, GitHub, Slack, or Postgres hosted in the cloud.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;At a high level, the host does not talk directly to your database, file system, or API. Instead, it talks to an MCP client, which talks to an MCP server, which then talks to the actual data source or service. &lt;/p&gt;

&lt;p&gt;This simple diagram might help you understand the flow better:&lt;/p&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2Fhtr5ddgaqrh6fdn93k6x.png" 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.amazonaws.com%2Fuploads%2Farticles%2Fhtr5ddgaqrh6fdn93k6x.png" alt="MCP FLOW" width="800" height="893"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The key point is that MCP servers serve as the integration layer. They hide the messy parts of authentication, API calls, file access, and business logic behind a clean protocol interface.&lt;/p&gt;

&lt;p&gt;This separation of concerns makes MCP servers modular and maintainable. The AI app does not need to know how Google Sheets, GitHub, or a local database works. It only needs to know how to call the MCP server.&lt;/p&gt;

&lt;p&gt;So how does this all connect?&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;How The Components Work Together&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Let's understand this with a practical example:&lt;/p&gt;

&lt;p&gt;Say you're using Claude Code (an MCP host) to manage your project's budget. You want to update a budget report in Google Sheets and send a summary of the changes to your team via Slack.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://code.claude.com/docs/en/mcp" rel="noopener noreferrer"&gt;Claude Code&lt;/a&gt; (MCP host) initiates a request to the MCP client to update the budget report in Google Sheets and send a Slack notification.&lt;/li&gt;
&lt;li&gt;The MCP client connects to two MCP servers: one for Google Sheets and one for Slack.&lt;/li&gt;
&lt;li&gt;The &lt;a href="https://composio.dev/toolkits/googlesheets" rel="noopener noreferrer"&gt;Google Sheets MCP&lt;/a&gt; server calls the Google Sheets API (remote service) to update the budget report.&lt;/li&gt;
&lt;li&gt;The &lt;a href="https://composio.dev/toolkits/slack" rel="noopener noreferrer"&gt;Slack MCP&lt;/a&gt; server interacts with the Slack API (remote service) to send a notification.&lt;/li&gt;
&lt;li&gt;MCP servers send responses back to the MCP client.&lt;/li&gt;
&lt;li&gt;The MCP client forwards these responses to Cursor, which displays the result to the user.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This process happens seamlessly, allowing Cursor to integrate with multiple services through a standardized interface.&lt;/p&gt;

&lt;p&gt;That's the working in a nutshell. From here on, we will focus on building.&lt;/p&gt;




&lt;h2&gt;
  
  
  Build Local Stremable HTTP MCP Servers
&lt;/h2&gt;

&lt;p&gt;We'll build something you'd actually deploy: a &lt;strong&gt;GitHub issue search server&lt;/strong&gt; that lets your AI assistant search issues, fetch issue details, and pull recent pull requests from any repository. [subject to change]&lt;/p&gt;

&lt;p&gt;We will follow a series of steps to make sure things go smoothly. This is also industry standard, so it's best to follow along. &lt;/p&gt;

&lt;h3&gt;
  
  
  Prequires
&lt;/h3&gt;

&lt;p&gt;Before anything else, ensure you complete the prerequisites, as they will be the foundation for any MCP implementation we do.&lt;/p&gt;

&lt;p&gt;You'll need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Python 3.10+&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Node.js 18+&lt;/strong&gt; for TypeScript (if you choose to build with TypeScript)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Claude Desktop&lt;/strong&gt; or &lt;strong&gt;Cursor&lt;/strong&gt; for testing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A common question users often ask: when should you pick Python vs. TypeScript? Here is an honest review:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.python.org/downloads/" rel="noopener noreferrer"&gt;Python&lt;/a&gt; with &lt;a href="https://gofastmcp.com/getting-started/welcome" rel="noopener noreferrer"&gt;FastMCP&lt;/a&gt; is faster for prototyping and works well for stdio servers.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.typescriptlang.org/" rel="noopener noreferrer"&gt;TypeScript&lt;/a&gt; shines for HTTP servers deployed to Cloudflare Workers, Vercel Edge, or any Node-based stack due to its type safety.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In case you are wondering, Composio is the ultimate integration platform, empowering developers to seamlessly connect AI agents with external tools, servers, and APIs with just a single line of code.&lt;/p&gt;

&lt;p&gt;With the fully managed &lt;a href="https://composio.dev/blog/best-mcp-servers-for-chatgpt" rel="noopener noreferrer"&gt;&lt;strong&gt;MCP Server&lt;/strong&gt;s&lt;/a&gt;, developers can rapidly build powerful AI applications without the hassle of managing complex integrations. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;In a nutshell: Composio handles the infrastructure so developers can focus on innovation.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Next, let's set up the working environment.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Work Environment Setup&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;We start by creating a project directory.&lt;/p&gt;

&lt;p&gt;Navigate to your working folder and create a folder named &lt;strong&gt;MCP,&lt;/strong&gt; or u can use the terminal command:&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="nb"&gt;mkdir &lt;/span&gt;mcp_servers
&lt;span class="nb"&gt;cd &lt;/span&gt;mcp_servers
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Next, create a virtual environment using:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python3 &lt;span class="nt"&gt;-m&lt;/span&gt; venv .venv
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now activate the environment with:&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;# Windows:&lt;/span&gt;
.venv&lt;span class="se"&gt;\S&lt;/span&gt;cripts&lt;span class="se"&gt;\a&lt;/span&gt;ctivate

&lt;span class="c"&gt;# Linux/Mac:&lt;/span&gt;
&lt;span class="nb"&gt;source&lt;/span&gt; .venv/bin/activate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ensure you see (.venv) in Front of the terminal cwd path.&lt;/p&gt;

&lt;p&gt;Finally, install the FastMCP package&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;FastMCP
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Writing Server Code
&lt;/h3&gt;

&lt;p&gt;Server code is where the entire MCP server logic lives. Create a new &lt;code&gt;server.py&lt;/code&gt;  file and inside it paste the code below:&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="c1"&gt;# server.py
&lt;/span&gt;
&lt;span class="c1"&gt;# imports
&lt;/span&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;base64&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;uuid&lt;/span&gt;

&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;typing&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;fastmcp&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;FastMCP&lt;/span&gt;

&lt;span class="n"&gt;mcp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;FastMCP&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Utility MCP Server&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# generate password utility
&lt;/span&gt;&lt;span class="nd"&gt;@mcp.tool&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;generate_password&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;

    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;
    Generate a pseudo-random password for development use.

    This function creates a password by encoding a UUID4 string in base64
    and then reversing the resulting string. It&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;s intended for use in
    development or testing environments where cryptographic security is not
    critical.

    Returns:
        str: A reversed base64-encoded UUID4 string, typically around 48 characters.
        May include alphanumeric characters, &lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;+&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;, &lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;/&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;, and &lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt; padding.

    Security Notes:
        - Uses the string form of UUID4 (not raw bytes), so effective entropy is lower (~190 bits of input chars)
        - Suitable for temporary or development credentials.
        - NOT recommended for production use.
        - For higher security, consider using secrets.token_urlsafe().

    Example:
&lt;/span&gt;&lt;span class="gp"&gt;        &amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;generate_password&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;==dGM0ZTcwLTI0ZTUtNDJlZC05Y2I1LTk3OGJjODAxMDAwNw==&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;

    &lt;span class="n"&gt;uuid_string&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;uuid&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;uuid4&lt;/span&gt;&lt;span class="p"&gt;()).&lt;/span&gt;&lt;span class="nf"&gt;encode&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;base64_encoded&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;base64&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;b64encode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;uuid_string&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;decode&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;base64_encoded&lt;/span&gt; &lt;span class="p"&gt;[::&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="c1"&gt;# list all the files in the directory
&lt;/span&gt;&lt;span class="nd"&gt;@mcp.tool&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;list_files&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;directory&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;
    List all files and directories in a specified path.

    This tool allows the AI to explore the file system by returning a list 
    of names of the entries in the directory given by path.

    Args:
        directory (str): The path to the directory to list. Defaults to the 
        current working directory (&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;).

    Returns:
        List[str]: A list of filenames and directory names. If an error 
        occurs (e.g., directory not found), returns a list containing 
        the error message.
    &lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
    &lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;listdir&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;directory&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="nb"&gt;Exception&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Error: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nf"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;


&lt;span class="c1"&gt;# read the given file
&lt;/span&gt;&lt;span class="nd"&gt;@mcp.tool&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;read_file&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;filename&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;
    Read and return the full text content of a file.

    This tool enables the AI to analyze the contents of specific text files 
    within the accessible file system.

    Args:
        filename (str): The path to the file that needs to be read.

    Returns:
        str: The complete string content of the file encoded in UTF-8. 
        If the file cannot be read, returns an error message starting 
        with &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Error reading file:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;.
    &lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
    &lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;filename&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;r&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;encoding&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;utf-8&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nb"&gt;file&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nb"&gt;file&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;read&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="nb"&gt;Exception&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Error reading file: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nf"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="c1"&gt;# system info (resource)
&lt;/span&gt;&lt;span class="nd"&gt;@mcp.resource&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;data://sys-info&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;get_system_info&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;
    Get a comprehensive system snapshot including time, hardware specs, 
    and real-time health metrics.
    &lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
    &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;platform&lt;/span&gt;
    &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;psutil&lt;/span&gt;
    &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;subprocess&lt;/span&gt;
    &lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;datetime&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;datetime&lt;/span&gt;

    &lt;span class="n"&gt;now&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;datetime&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;now&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;timestamp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;now&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;strftime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;%Y-%m-%d %H:%M:%S&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;day_name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;now&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;strftime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;%A&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


    &lt;span class="n"&gt;boot_time&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;datetime&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;fromtimestamp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;psutil&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;boot_time&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
    &lt;span class="n"&gt;uptime&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;now&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;boot_time&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;.&lt;/span&gt;&lt;span class="sh"&gt;'&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="n"&gt;sys_type&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;platform&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;system&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;machine&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;platform&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;machine&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;cpu_count&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;psutil&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;cpu_count&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;logical&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;False&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;gpu_info&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;subprocess&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;check_output&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;nvidia-smi&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;--query-gpu=gpu_name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;--format=csv,noheader&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; 
            &lt;span class="n"&gt;encoding&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;utf-8&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
        &lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;strip&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="nb"&gt;Exception&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;gpu_info&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;N/A (NVIDIA-SMI not found)&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

    &lt;span class="n"&gt;cpu_usage&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;psutil&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;cpu_percent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;interval&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;memory&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;psutil&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;virtual_memory&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;disk&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;psutil&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;disk_usage&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;C:&lt;/span&gt;&lt;span class="se"&gt;\\&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;
             --- Hardware Specs ---
            OS:        &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;sys_type&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; (&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;machine&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;)
            CPU:       &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;cpu_count&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; Physical Cores
            GPU:       &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;gpu_info&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;

            --- Temporal Context ---
            Date/Time: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;timestamp&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;
            Day:       &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;day_name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;
            Uptime:    &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;uptime&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;

            --- Resource Utilization ---
            CPU Load:  &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;cpu_usage&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;%
            RAM Usage: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;memory&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;percent&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;% (&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;memory&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;used&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1024&lt;/span&gt;&lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;MB / &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;memory&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;total&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1024&lt;/span&gt;&lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;MB)
            Disk (C:): &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;disk&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;percent&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;% Used (&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;disk&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;free&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1024&lt;/span&gt;&lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;GB Free)
            &lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;

&lt;span class="c1"&gt;# general prompt
&lt;/span&gt;&lt;span class="nd"&gt;@mcp.prompt&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;helper_prompt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;task&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;""&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;General purpose prompt for any task with optional context.&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
    &lt;span class="n"&gt;base_prompt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;
Task: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;task&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;

Please approach this systematically:
1. Break down the problem
2. Consider multiple solutions
3. Explain your reasoning
4. Provide clear, actionable steps
&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;base_prompt&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\n\n&lt;/span&gt;&lt;span class="s"&gt;Additional context: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;base_prompt&lt;/span&gt;

&lt;span class="c1"&gt;# api-design rules prompt
&lt;/span&gt;&lt;span class="nd"&gt;@mcp.prompt&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;api_endpoint_design_prompt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;endpoint_name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;purpose&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;Specific prompt for designing RESTful API endpoints.&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;
Design a RESTful API endpoint: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;endpoint_name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;
Purpose: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;purpose&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;

Please provide:
1. HTTP method and URL pattern
2. Request/response schemas with examples
3. Status codes and error handling
4. Authentication requirements
5. Rate limiting considerations
6. OpenAPI/Swagger documentation snippet

Follow REST conventions and include proper validation.
Use JSON for data exchange and meaningful HTTP status codes.
&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;

&lt;span class="c1"&gt;# Run MCP server
# if __name__ == "__main__":
&lt;/span&gt;    &lt;span class="c1"&gt;# mcp.run()
&lt;/span&gt;
&lt;span class="c1"&gt;# Run stremable http MCP Server (can be deployed / hosted)
&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;__name__&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;__main__&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
   &lt;span class="n"&gt;mcp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;transport&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;streamable-http&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;host&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;0.0.0.0&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;port&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;8000&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Key points from the code:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;mcp&lt;/code&gt; : It's the Fast MCP object named as provided. Important to initialize at the start.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;@mcp.tool()&lt;/code&gt; : Decorator wraps the entire function underneath and exposes it as a tool to the MCP client. Docstrings are very important; a good docstring leads to fewer model failures. Includes &lt;code&gt;generate_password&lt;/code&gt; , &lt;code&gt;list_files&lt;/code&gt;, &lt;code&gt;read_file&lt;/code&gt;tools.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;@mcp.resource("data://sys-info")&lt;/code&gt; : Decorator wraps the entire function and exposes it as a resource file that the client can use to fetch data. The path to the created resource is defined in &lt;code&gt;()&lt;/code&gt; . Includes &lt;code&gt;get_system_info&lt;/code&gt; resource&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;@mcp.prompt()&lt;/code&gt; : Decorator wraps the entire function and exposes it to the client as a prompt builder, useful when the task requires a specific use-case prompt. Docstrings are important here. Includes &lt;code&gt;helper_prompt&lt;/code&gt; , &lt;code&gt;api_endpoint_design_prompt&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;mcp.run(transport="streamable-http", host="0.0.0.0", port=8000)&lt;/code&gt; : Runs the MCP server.in a streamable HTTP mode. For stdio MCP server, use &lt;code&gt;mcp.run()&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Overall, we are wrapping different functions and exposing them to the client as the MCP tool, resources, and server.&lt;/p&gt;

&lt;p&gt;However, to use it with the client, additional config is required, so let's set that up. I am using a cursor for the demo.&lt;/p&gt;

&lt;p&gt;Head to the Cursor and create a new folder &lt;code&gt;.cursor&lt;/code&gt; , inside it creates a new file &lt;code&gt;mcp.json&lt;/code&gt; (the config file) and paste the following setup.&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="p"&gt;{&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;mcpServers&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;utility-server&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;url&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;http://localhost:8000/mcp&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In case you have used &lt;code&gt;mcp.run()&lt;/code&gt; then you will see the below configuration&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="p"&gt;{&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;mcpServers&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;utility_server&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;stdio&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;command&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;your-python-exe-path&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;args&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;your file path&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In general I use local &lt;code&gt;stdio&lt;/code&gt; based servers and then when all test and specifications are met, I switch to &lt;code&gt;Streamble HTTP&lt;/code&gt; approach.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Quick Tip: To verify this works is by pasting the command and args together; if they start the server, you are good to go; else, provide the full path. I usually go for path of .venv’s &lt;code&gt;python.exe&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Open &lt;strong&gt;Cursor Settings,&lt;/strong&gt; then click &lt;strong&gt;Tools &amp;amp; MCPs&lt;/strong&gt;. You will see your local MCP name. Click Enable, &lt;/p&gt;

&lt;p&gt;To check, open the terminal, switch to the Output tab, select the MCP server, and check for the connected message.&lt;/p&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2F3tup4lsejnoux9pnw2ws.png" 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.amazonaws.com%2Fuploads%2Farticles%2F3tup4lsejnoux9pnw2ws.png" alt="CURSOR" width="800" height="474"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now we can test our MCP Server by opening the chat/agents window and invoking any of the defined tools via the prompt. I invoked the password-generator, as I often find myself asking Claude to "think of a 16-character password" (which is terrible).&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="n"&gt;Generate&lt;/span&gt; &lt;span class="n"&gt;password&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;show&lt;/span&gt; &lt;span class="n"&gt;mcp&lt;/span&gt; &lt;span class="n"&gt;tool&lt;/span&gt; &lt;span class="n"&gt;usage&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here is the output:&lt;/p&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2Fprrko7rhtl069aqb9qjg.png" 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.amazonaws.com%2Fuploads%2Farticles%2Fprrko7rhtl069aqb9qjg.png" alt="MCP" width="800" height="265"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Saw that Ran command, it means the MCP server asked me for permission. I kept it that way, as you never want to let an agent touch your system files. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note: If docstring is poor, the mcp client might fall back to cli approach, the easiest way to fix this is add a rule to only use mcp servers for the task. You will find a similar approach in the project github repo as well.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;All this is great, but setting it up for testing a local MCP server is a hassle. Let's look at an easier approach, MCP Inspector.&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Test with MCP Inspector&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;To test the MCP server's functionality, we will use the Fast MCP Inspector, a browser-based tool that connects to the server and lets us call tools directly, without an LLM layer. &lt;/p&gt;

&lt;p&gt;Run MCP Inspector, with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx @modelcontextprotocol/inspector python server.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You'll see a localhost URL. Open it in your browser, click &lt;strong&gt;Connect&lt;/strong&gt;, and you should see your server respond.&lt;/p&gt;

&lt;p&gt;Now you can run and test your tools, resources, prompts, and more right from the browser, quite handy for developers testing MCP servers' performance and understanding response schemas. Check out the &lt;a href="https://modelcontextprotocol.io/docs/tools/inspector" rel="noopener noreferrer"&gt;MCP Inspector Guide&lt;/a&gt; to learn more.&lt;/p&gt;

&lt;p&gt;Personally, I find it best for testing prompts’ responses. Here is the response it generated:&lt;/p&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2F4vlqxiftlh4s5jx2qqm1.png" 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.amazonaws.com%2Fuploads%2Farticles%2F4vlqxiftlh4s5jx2qqm1.png" alt="MCP INSPECTOR" width="800" height="430"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Local servers are great for simple use cases, but for most industry use cases, they don't provide the required infrastructure. Let's explore better use cases.&lt;/p&gt;




&lt;h2&gt;
  
  
  Connect to Hosted Streamable HTTP MCP Server
&lt;/h2&gt;

&lt;p&gt;Having a local server is good, but not as great as the one used in production. Usually, these are hosted, secured by design, and optimized for multiple tool calls. &lt;/p&gt;

&lt;p&gt;Usually, these are servers written by expert developers, integrated with the app's internal mechanisms, and intended to serve as connectors. &lt;/p&gt;

&lt;p&gt;But here lies the issue: connecting to 30+ MCP servers for a single project is a pain. Composio solves this.&lt;/p&gt;

&lt;p&gt;Let's look at how you can connect to the hosted Composio MCP server. You connect it once and use 1K+ tools directly, all secure, optimized tool calls.&lt;/p&gt;




&lt;h3&gt;
  
  
  Connect to Composio MCP Servers (Streamable HTTP )
&lt;/h3&gt;

&lt;p&gt;Integrating with &lt;strong&gt;Composio MCP&lt;/strong&gt; is incredibly simple and takes just 5 steps.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Visit the &lt;a href="https://dashboard.composio.dev/" rel="noopener noreferrer"&gt;Composio MCP&lt;/a&gt; page. Ensure you are logged in, or else sign up&lt;/li&gt;
&lt;/ol&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2F0927enm97uwl0f7n50jk.png" 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.amazonaws.com%2Fuploads%2Farticles%2F0927enm97uwl0f7n50jk.png" alt="step1" width="800" height="472"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;In the dashboard, head to the Install Section&lt;/li&gt;
&lt;/ol&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2Fi0c27tywfcxieu44jbfn.png" 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.amazonaws.com%2Fuploads%2Farticles%2Fi0c27tywfcxieu44jbfn.png" alt="step2" width="800" height="473"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Select Cursor from the list, and click on Install.&lt;/li&gt;
&lt;/ol&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2Fsxwj0ye9pv006o7kgfaz.png" 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.amazonaws.com%2Fuploads%2Farticles%2Fsxwj0ye9pv006o7kgfaz.png" alt="step3" width="800" height="473"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;In the redirected page, click on "Install in Cursor".&lt;/li&gt;
&lt;/ol&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2Fqyp4ar0wxdo9pa1c7pqb.png" 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.amazonaws.com%2Fuploads%2Farticles%2Fqyp4ar0wxdo9pa1c7pqb.png" alt="step4" width="800" height="475"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;You will be redirected to Cursor, and in the MCP server Page, click Install&lt;/li&gt;
&lt;/ol&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2Fh79a70tod8hccs3liiw2.png" 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.amazonaws.com%2Fuploads%2Farticles%2Fh79a70tod8hccs3liiw2.png" alt="step5" width="800" height="475"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once installed, click on Needs Authentication, then Authorize at redirect, and done!&lt;/p&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2Fynux23lf9ww8tjxif6zn.png" 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.amazonaws.com%2Fuploads%2Farticles%2Fynux23lf9ww8tjxif6zn.png" alt="step6" width="800" height="474"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can connect to apps in advance in the Connect Apps section; most of them use OAuth. (optional). If you don't, the agent will prompt you to connect at runtime.&lt;/p&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2Febp6k5s8r0jxb2pn9klk.png" 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.amazonaws.com%2Fuploads%2Farticles%2Febp6k5s8r0jxb2pn9klk.png" alt="step7" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To test the integration, open the Composer, establish a connection to the app, and ask it to perform actions.&lt;/p&gt;

&lt;p&gt;But how did all this happen?&lt;/p&gt;

&lt;p&gt;It turns out that if you go to your cursor MCP &amp;amp; Tools Page, select the ✏️ icon, and see the configuration as:&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;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"composio"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"http"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://connect.composio.dev/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;"headers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;strong&gt;http&lt;/strong&gt; here means a streamable HTTP server. This allows the MCP server to operate as a normal web server (accessible via a URL) rather than as a local subprocess on your machine (for local MCP servers)&lt;/p&gt;

&lt;p&gt;And interestingly, for any MCP to run in HTTP streamable mode, you have to replace:&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="err"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;__name__&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;==&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"__main__"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="err"&gt;mcp.run()&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;to&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="err"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;__name__&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;==&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"__main__"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="err"&gt;mcp.run(transport=&lt;/span&gt;&lt;span class="s2"&gt;"streamable-http"&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;host=&lt;/span&gt;&lt;span class="s2"&gt;"0.0.0.0"&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;port=&lt;/span&gt;&lt;span class="mi"&gt;8000&lt;/span&gt;&lt;span class="err"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And you are done, pretty handy, isn’t it?&lt;/p&gt;

&lt;p&gt;Now, let's look at an advanced use case to see where Composio MCP helps.&lt;/p&gt;




&lt;h2&gt;
  
  
  Using HTTP Streamable MCP Servers for Advanced Use Case (Financial Agent)
&lt;/h2&gt;

&lt;p&gt;Current financial institutions struggle with manual, time-intensive investment research that keeps analysts buried in data entry for weeks, delays critical decisions by days, lacks real-time risk visibility, creates compliance blind spots, and demands hiring more analysts just to manage portfolio volume - all while losing talent and clients&lt;/p&gt;

&lt;p&gt;Let's see how the analyst can build financial agents and leverage Composio MCP to connect to 10-15 financial data sources (Yahoo Finance, SEC filings, Google Sheets, Bloomberg, etc.) and enrich their analysis by aggregating structured APIs, unstructured web scraping, and internal data warehouses.&lt;/p&gt;

&lt;p&gt;The financial analyst agent will:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Aggregate financial data (Yahoo Finance, Google Sheets with company data, SEC filings via web scraping),&lt;/li&gt;
&lt;li&gt;Run Claude analysis to generate investment thesis.&lt;/li&gt;
&lt;li&gt;Create formatted reports in Google Docs,&lt;/li&gt;
&lt;li&gt;Track portfolio changes (pull from Excel sheet),&lt;/li&gt;
&lt;li&gt;and send Executive Summaries to stakeholders via email with embedded tables. (HTML format)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All done in parallel!&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="n"&gt;Web&lt;/span&gt; &lt;span class="nc"&gt;Scraping &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;composio&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;search&lt;/span&gt; &lt;span class="n"&gt;api&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;Google&lt;/span&gt; &lt;span class="nc"&gt;Sheets &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;composio&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;→&lt;/span&gt; &lt;span class="n"&gt;Claude&lt;/span&gt; &lt;span class="n"&gt;Analysis&lt;/span&gt; &lt;span class="err"&gt;→&lt;/span&gt; &lt;span class="n"&gt;Google&lt;/span&gt; &lt;span class="nc"&gt;Docs &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;composio&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;→&lt;/span&gt; &lt;span class="nc"&gt;Gmail &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;composio&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Prerequisites
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Claude Code / Cursor / VS Code. I am going with Claude&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dashboard.composio.dev/login" rel="noopener noreferrer"&gt;Composio Account&lt;/a&gt;, login/signup&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Assuming you have pre-requisites met, let's set up Composio on Claude.&lt;/p&gt;

&lt;h3&gt;
  
  
  Set up Composio MCP in Claude
&lt;/h3&gt;

&lt;p&gt;To get started: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Visit the &lt;a href="https://dashboard.composio.dev/" rel="noopener noreferrer"&gt;Composio MCP&lt;/a&gt; page. Ensure you are logged in, or else sign up&lt;/li&gt;
&lt;li&gt;In the dashboard, head to the Install Section&lt;/li&gt;
&lt;li&gt;Select Claude from the list, and click on Install.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;On the next page, select the MCP tab, then copy the command &amp;amp; paste it into the shell/terminal.&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;claude&lt;/span&gt; &lt;span class="n"&gt;mcp&lt;/span&gt; &lt;span class="n"&gt;add&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;scope&lt;/span&gt; &lt;span class="n"&gt;user&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;transport&lt;/span&gt; &lt;span class="n"&gt;http&lt;/span&gt; &lt;span class="n"&gt;composio&lt;/span&gt; &lt;span class="n"&gt;https&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="n"&gt;connect&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;composio&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dev&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;mcp&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ensure &lt;code&gt;/mcp&lt;/code&gt;  shows composio as an option. It might require authentication, so authenticate once&lt;/p&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2Fr1iskit9iof67v7z3kto.png" 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.amazonaws.com%2Fuploads%2Farticles%2Fr1iskit9iof67v7z3kto.png" alt="terminal-mcp" width="800" height="167"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;(Optional ) Once done, head to the Connect Apps page and click on Connect to connect Gmail, Google Drive, Google Sheets, and Google Docs. In case you ignore, agent will ask for these connections on runtime.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Perfect, we only need to configure the document in the workspace&lt;/p&gt;

&lt;h3&gt;
  
  
  Set up Workspace for Agent
&lt;/h3&gt;

&lt;p&gt;We will use Google Drive as our workspace to make the file accessible from everywhere:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Head to drive, create a new folder named &lt;code&gt;financial_data&lt;/code&gt;  &amp;amp; from the URL, copy the folder ID.&lt;/li&gt;
&lt;li&gt;Inside, add an Excel file in the format &amp;amp; fill the data as:

&lt;ul&gt;
&lt;li&gt;Companies: List of all targeted companies with their analysis&lt;/li&gt;
&lt;li&gt;Portfolio Performance: How the portfolio is performing over time, all metrics for targeted companies&lt;/li&gt;
&lt;li&gt;Contact: List of all internal contacts: Portfolio Managers, Limited Partners, Investors,  Board Managers, and more&lt;/li&gt;
&lt;li&gt;Report Archive: Past report filing (sec)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Then add a Google Doc template for an investment report.&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Make sure to copy the ID / URL of both files&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Easiest way is to use the template given in the GitHub Repo and let any AI Agent turn them in the above given format. Then copy paste that in newly created google sheet &amp;amp; google doc file.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Now is the time to run the agent.&lt;/p&gt;

&lt;h3&gt;
  
  
  Run Financial Analyst Agent
&lt;/h3&gt;

&lt;p&gt;To run the agent, open Claude Code and paste the &lt;a href="https://gist.github.com/DevloperHS/06982896ddfc20c8ace1af213dff2ebf" rel="noopener noreferrer"&gt;financial_agent_prompt&lt;/a&gt;. You will be prompted to fill in the details with the copied values from earlier, and add your email address:&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="n"&gt;GOOGLE_SHEETS_ID&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;your&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;GOOGLE_DOC_TEMPLATE_ID&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;your&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;GOOGLE_DRIVE_FOLDER_ID&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;optional&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;GMAIL_SENDER_ADDRESS&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;your&lt;/span&gt; &lt;span class="n"&gt;gmail&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once done, the agent handles the rest. Here is a demo of what it looks like, in production.&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/_PTeGESx6Nk"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;The agent also works on multiple portfolio reports. I am testing it with six different portfolios; you can adjust the count as needed.&lt;/p&gt;

&lt;p&gt;Same setup, but with multiple portfolio data. Make sure to copy each one's ID, and use the financial_agent_prompt_for_multiple portfolio for the job.&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/oJzYSJ3Y6T4"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Note that, despite explicitly stating that Claude never created a subagent, this is because composio already has parallel execution enabled and, behind the scenes, uses subagents.&lt;/p&gt;

&lt;p&gt;Hope this gave you an idea of how hosted MCP servers work, and tools like Composio MCP provide a universal tooling layer.&lt;/p&gt;

&lt;p&gt;However, deploying a hosted MCP server for production is a different game. Let's look at a few rules to help ensure the servers don't break in real-world use.&lt;/p&gt;




&lt;h2&gt;
  
  
  Deployment Notes for Production MCP Servers
&lt;/h2&gt;

&lt;p&gt;Though we didn't cover a hosted MCP server build, if you want to build your hosted MCP server (local + later deployed), follow the production checklist before you deploy &amp;amp; put an MCP server in front of real users:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Logging to stderr or files only&lt;/strong&gt;, never stdout for stdio servers&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Errors caught on every tool&lt;/strong&gt;: return a clean error message, don't let exceptions kill the connection&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inputs validated&lt;/strong&gt;: type hints (Python) or Zod (TypeScript) catch most issues; add explicit checks for things like SQL injection or path traversal if you're doing database/file operations&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;External API calls are rate-limited / Use Composio MCP&lt;/strong&gt;: your tool runs whenever the LLM decides to call it, which can be a lot. Let Composio MCP handle it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Secrets in environment variables&lt;/strong&gt;, never hardcode in servers, never commit in production.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tool descriptions for the LLM&lt;/strong&gt;: Write specific, one-purpose per tool. Five small tools beat one giant tool. The approach we followed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Schema versioning&lt;/strong&gt;: when you change a tool's signature, bump your server's version so clients can adapt. Think API versioning.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Health check endpoint&lt;/strong&gt;: for HTTP servers, expose &lt;code&gt;/health&lt;/code&gt; for your load balancer. Provides transparency to users.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Auth on production HTTP servers&lt;/strong&gt;: Use Bearer for internal, OAuth for public. But never both for the same for public/internal (private)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With this, we have come to the end of this comprehensive guide. Here is what matters the most.&lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;As AI transforms software development, MCP will play an increasingly important role in creating seamless, integrated experiences.&lt;/p&gt;

&lt;p&gt;Whether you're building custom MCP servers or leveraging pre-built solutions like stremable http servers like Composio MCP, the protocol enables powerful enhancements to AI capabilities through external tools and data sources.  &lt;/p&gt;

&lt;p&gt;In case you need a few ideas, check out how to build an &lt;a href="https://composio.dev/blog/mcp-client-step-by-step-guide-to-building-from-scratch/" rel="noopener noreferrer"&gt;MCP client&lt;/a&gt; that talks to your server, or move up the stack and build an &lt;a href="https://composio.dev/blog/the-complete-guide-to-building-mcp-agents/" rel="noopener noreferrer"&gt;MCP-powered agent&lt;/a&gt; that orchestrates multiple servers at once. Happy building.&lt;/p&gt;

&lt;p&gt;I hope you had a great learning experience - happy building with Composio! 🚀&lt;/p&gt;

</description>
      <category>ai</category>
      <category>mcp</category>
      <category>productivity</category>
      <category>programming</category>
    </item>
    <item>
      <title>Top Marketing Skills For Claude Code, OpenClaw &amp; Hermes</title>
      <dc:creator>Developer Harsh</dc:creator>
      <pubDate>Fri, 24 Apr 2026 06:18:47 +0000</pubDate>
      <link>https://dev.to/composiodev/top-marketing-skills-for-claude-code-openclaw-hermes-1n59</link>
      <guid>https://dev.to/composiodev/top-marketing-skills-for-claude-code-openclaw-hermes-1n59</guid>
      <description>&lt;p&gt;With tools like &lt;a href="https://composio.dev/content/how-to-better-your-claude-cowork-experience-with-mcps" rel="noopener noreferrer"&gt;Claude Cowork&lt;/a&gt; and &lt;a href="https://composio.dev/content/how-to-use-composio-mcp-with-openclaw" rel="noopener noreferrer"&gt;OpenClaw&lt;/a&gt;, the marketing and GTM stack is evolving fast. People are spinning up SEO pages, firing UGC videos, automating ads at an industrial scale. And GTM and marketing is going to blow up in next few months.&lt;/p&gt;

&lt;p&gt;So, I have curated some great skills that community has built and some of them I personally use.&lt;/p&gt;

&lt;p&gt;So I spent last week testing and collating everything. Here are the 10 marketing skills for Claude Code/ Cowork and OpenClaw that are actually worth using.&lt;/p&gt;




&lt;h2&gt;
  
  
  Quick Summary
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;GEO / AEO (AI Search Optimization) Skill&lt;/strong&gt; - Audits and optimizes pages to get cited in AI search (ChatGPT, Perplexity, Google AI Overviews) with fixes, llms.txt, and schema.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SEO + GEO Full-Stack Skill&lt;/strong&gt; - An end-to-end workflow that does keyword research, drafting, and optimization for both traditional SEO and AI discovery.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Paid Ads Audit Skill&lt;/strong&gt; - Runs deep multi-platform checks to find wasted spend, diagnose performance issues, and generate new creative and copy variants.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Firecrawl Web Intelligence Skill&lt;/strong&gt; - Gives agents live web scraping and crawling to extract clean markdown and structured data for competitive research.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Design Skill&lt;/strong&gt; - Extracts design systems from UI references and outputs design tokens and specs to keep builds consistent and non-generic.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Remotion Video Skill&lt;/strong&gt; - Turns a video brief into Remotion-ready React code so you can ship programmatic product videos reliably.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Marketing Page Generation (Frontend) Skill&lt;/strong&gt; - Generates bold, conversion-focused landing pages with production-ready code instead of generic SaaS templates.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Content Ops Skill&lt;/strong&gt; - Runs the editorial pipeline end-to-end: audit, briefs, drafting, repurposing, and distribution from one workflow.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Humanizer Skill&lt;/strong&gt; - Removes AI-writing tells through multi-pass editing so posts sound opinionated, natural, and genuinely human.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;--&lt;/p&gt;

&lt;p&gt;For using all these skills effectively you’ll need access to data stored in multiple different applications. &lt;/p&gt;

&lt;p&gt;For example, for full SEO data you’d need access to Google Search Console, Ahref, etc. And for scheduling posts for social medias you’d need to connect Claude or OpenClaw with Tiktok, Youtube, LinkedIn, Reddit, and Twitter. &lt;/p&gt;

&lt;p&gt;For Ads and conversion pipeline monitoring yo’d need Google Ads, MetaAds, Posthog, Mixpanel, etc. &lt;/p&gt;

&lt;p&gt;Check Out the &lt;a href="https://composio.dev/toolkits/" rel="noopener noreferrer"&gt;full catalog&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Composio is the single place to get all these apps using a single MCP server and it’s super easy to set it up. Just log in to &lt;a href="https://dashboard.composio.dev" rel="noopener noreferrer"&gt;dashboard.composio.dev&lt;/a&gt; and click on the client app you want.&lt;/p&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2Fah9gjfg34ys4c12pclq1.png" 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.amazonaws.com%2Fuploads%2Farticles%2Fah9gjfg34ys4c12pclq1.png" alt="Composio Dashboard" width="800" height="493"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you need some guides, here’s how you can do it in OpenClaw and &lt;a href="https://composio.dev/content/how-to-better-your-claude-cowork-experience-with-mcps" rel="noopener noreferrer"&gt;Claude Cowork&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;For starters, let’s schedule a week of launch posts for social media - one of the grueling pain point for any content team. &lt;/p&gt;

&lt;p&gt;Pre-requires (authenticate):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://composio.dev/toolkits/notion" rel="noopener noreferrer"&gt;Notion&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://composio.dev/toolkits/typefully" rel="noopener noreferrer"&gt;Typefully&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://composio.dev/toolkits/linkedin" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;once all done, let’s create a 7 days launch post. This uses Claude Code.&lt;/p&gt;

&lt;p&gt;/to-be-added&lt;/p&gt;




&lt;h2&gt;
  
  
  Top 10 Marketing Skills
&lt;/h2&gt;

&lt;p&gt;Here are the list of top 10 marketing skills, that can 10 your marketing. For each I have shared:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What each skills does,&lt;/li&gt;
&lt;li&gt;Why use it.&lt;/li&gt;
&lt;li&gt;Prompt templates you can follow,&lt;/li&gt;
&lt;li&gt;The link to get you started&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let’s begin:)&lt;/p&gt;




&lt;h3&gt;
  
  
  1. GEO / AEO SKILL - AI SEARCH OPTIMIZATION
&lt;/h3&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2F7pee86km31zq4jcjk1f5.png" 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.amazonaws.com%2Fuploads%2Farticles%2F7pee86km31zq4jcjk1f5.png" alt="AI Search Optimisation" width="800" height="287"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;AEO has become quite popular now a day’s, but not many are good at handling it. &lt;/p&gt;

&lt;p&gt;This skill optimizes the content to get cited by ChatGPT, Perplexity, Google AI Overviews, and Gemini. Furthermore, it scores citability, generates llms.txt, adds schema markup, and outputs a client-ready PDF audit report.&lt;/p&gt;

&lt;p&gt;Usage&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Run a full GEO audit on any URL → get citability score + prioritized fix list across 13 dimensions.&lt;/li&gt;
&lt;li&gt;Generate an llms.txt file so AI crawlers understand the product site structure and index it correctly.&lt;/li&gt;
&lt;li&gt;Optimizes existing blog posts for AI citation with E-E-A-T signals, entity clarity, and FAQ schema injection&lt;/li&gt;
&lt;li&gt;Produce a branded PDF GEO report ready to send to a client or CMO, for contrast agencies charge $2K–$12K for this&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Prompt&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;Run a GEO audit on [URL]. Score: citability, AI crawler access, brand mention presence, schema markup, content factual density, and E-E-A-T signals. Output a full report with prioritized fixes. Then generate an llms.txt file and FAQ schema JSON-LD for the top 3 pages.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To learn more , checkout  &lt;a href="https://github.com/zubair-trabzada/geo-seo-claude" rel="noopener noreferrer"&gt;https://github.com/zubair-trabzada/geo-seo-claude&lt;/a&gt; by zubair.&lt;/p&gt;




&lt;h3&gt;
  
  
  2. SEO + GEO FULL STACK SKILL
&lt;/h3&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2Fcpxe0elh0i3av2t5rhoe.png" 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.amazonaws.com%2Fuploads%2Farticles%2Fcpxe0elh0i3av2t5rhoe.png" alt="SEO + GEO FULL STACK SKILL" width="800" height="317"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;your entire SEO + GEO workflow packaged into 20 skills covering: keyword research, content writing, technical audits, and rank tracking for both traditional search and AI platforms using claude code, openclaw , hermes.&lt;/p&gt;

&lt;p&gt;All scored against the CORE-EEAT benchmark (80 items) and CITE domain rating (40 items).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Usage&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Runs keyword research on Ahref → content gap analysis → full draft → AEO/GEO optimization in a single chained workflow&lt;/li&gt;
&lt;li&gt;Audit any page against 80 CORE-EEAT quality criteria and get a scored report with line-level fixes&lt;/li&gt;
&lt;li&gt;Generate programmatic SEO pages at scale from a keyword list and a content template&lt;/li&gt;
&lt;li&gt;Optimize for AI citations across ChatGPT Search, Perplexity, and Google AI Overviews simultaneously&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Prompt&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;Run the full SEO + GEO workflow for [topic/URL]. 

Step 1: keyword research and gap analysis vs [competitor]. 
Step 2: write a 1,500-word article scored against CORE-EEAT. 
Step 3: apply AEO optimization - add FAQ schema, HowTo markup, and question-phrased headings. 
Step 4: output a GEO readiness score.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can explore more at: &lt;a href="https://github.com/aaron-he-zhu/seo-geo-claude-skills" rel="noopener noreferrer"&gt;https://github.com/aaron-he-zhu/seo-geo-claude-skills&lt;/a&gt; by arron&lt;/p&gt;




&lt;h3&gt;
  
  
  3. PAID ADS AUDIT SKILL
&lt;/h3&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2Fju5z6mczxg0qkp4kvw4h.png" 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.amazonaws.com%2Fuploads%2Farticles%2Fju5z6mczxg0qkp4kvw4h.png" alt="PAID ADS AUDIT SKILL" width="800" height="289"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Running a successful paid campaigns and auditing is a struggle point for many growth team, this skills fixes that.&lt;/p&gt;

&lt;p&gt;It first runs 250+ checks across Google, Meta, YouTube, LinkedIn, TikTok, and Microsoft Ads. Based on the result, invoke's parallel agents per platform that scores accounts with weighted rubrics, flags wasted spend, and generates AI-powered creative variants.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Usage&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Audit a Google Ads account → get wasted spend breakdown by campaign, ad group, and keyword in one pass&lt;/li&gt;
&lt;li&gt;Detect creative fatigue across Meta campaigns → auto-generate 5 replacement hooks per underperforming ad set&lt;/li&gt;
&lt;li&gt;Run a CPA spike diagnosis → trace root cause to bid strategy, audience overlap, or landing page mismatch&lt;/li&gt;
&lt;li&gt;Get a CMO-ready performance report with scores, benchmarks, and an action plan - all from the terminal&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Prompt&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;Audit this Google Ads account data [attach export]. Run: wasted spend analysis, quality score breakdown, bid strategy assessment, and creative fatigue check. Score each area 0–100 using 2026 benchmarks. Output a prioritized fix list and generate 3 replacement ad copy variants for the lowest-scoring ad groups.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can learn more at  &lt;a href="https://github.com/AgriciDaniel/claude-ads" rel="noopener noreferrer"&gt;https://github.com/AgriciDaniel/claude-ads&lt;/a&gt; by Daniel.&lt;/p&gt;




&lt;h3&gt;
  
  
  4. FIRECRAWL WEB INTELLIGENCE SKILL
&lt;/h3&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2Fkiqkw6ad5sifqp5x37jv.png" 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.amazonaws.com%2Fuploads%2Farticles%2Fkiqkw6ad5sifqp5x37jv.png" alt="FIRECRAWL WEB INTELLIGENCE SKILL" width="800" height="399"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Not something new, similar to &lt;code&gt;firecrawl-claude-plugin&lt;/code&gt;,  but help’s content team hours by providing claude code / openclaw/ hermes access to live web.&lt;/p&gt;

&lt;p&gt;This allows the agent to scrape any page as clean markdown, take full-page screenshots, extract structured data via JSON schema, and crawl entire doc sites. Handles JS rendering and anti-bot automatically.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Usage&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Scrape competitor pricing pages weekly → output structured comparison to a Sheet with zero manual copying&lt;/li&gt;
&lt;li&gt;Crawl a competitor's entire blog → extract all topics covered → identify content gaps in your own strategy&lt;/li&gt;
&lt;li&gt;Pull product reviews from G2, Capterra, or Reddit → auto-summarize into a customer voice report&lt;/li&gt;
&lt;li&gt;Run firecrawl x competitor-analysis [URL] in one command to get a full messaging teardown&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Prompt&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;Use Firecrawl to scrape [competitor URL]. Extract: headline, value prop, pricing tiers, key feature claims, and CTA copy. Then scrape [second competitor URL] and output a side-by-side comparison table with a 'gap for us' column."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can learn more at &lt;a href="https://github.com/firecrawl/firecrawl-claude-plugin" rel="noopener noreferrer"&gt;https://github.com/firecrawl/firecrawl-claude-plugin&lt;/a&gt; by firecrawl.&lt;/p&gt;




&lt;h3&gt;
  
  
  5. DESIGN SKILL
&lt;/h3&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2Fj4fr1tg9jm1pnmtfbvy4.png" 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.amazonaws.com%2Fuploads%2Farticles%2Fj4fr1tg9jm1pnmtfbvy4.png" alt="DESIGN SKILL" width="800" height="441"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Design is essential aspect of conversion flow, it all starts there. Having a great design that tells a story of the product leads to better conversions. But ai-generated design’s are slop.&lt;/p&gt;

&lt;p&gt;This skills fixes that. It extracts design systems from reference UI images and generates implementation-ready design tokens, component specs, and style guides.&lt;/p&gt;

&lt;p&gt;This kills the back-and-forth between designer and agent.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Usage&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Feed a screenshot of any UI → get a full design system extracted with colors, spacing, typography, and component patterns.&lt;/li&gt;
&lt;li&gt;Generate brand-consistent design tokens for a new product from a single reference image.&lt;/li&gt;
&lt;li&gt;Audit existing UI for design consistency issues and get a structured fix list.&lt;/li&gt;
&lt;li&gt;Bootstrap a complete design system from scratch using decision-tree prompts before a single line of code.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Prompt&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;Extract the design system from this UI screenshot [attach image]. Output: color palette with hex values, typography scale, spacing system, component inventory, and border/shadow tokens. Then generate a DESIGN_SYSTEM.md I can reference in all future builds.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This one I use almost every weeks. Learn more at: &lt;a href="https://github.com/daymade/claude-code-skills" rel="noopener noreferrer"&gt;https://github.com/daymade/claude-code-skills&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  6. REMOTION VIDEO SKILL
&lt;/h3&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2F2ll59d4z8a2rpgivfjmk.png" 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.amazonaws.com%2Fuploads%2Farticles%2F2ll59d4z8a2rpgivfjmk.png" alt="REMOTION VIDEO" width="800" height="370"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Product launch videos can make or break a product lead generation strategy and launch videos are in high demands so charges very high. With this skills you can build your own one, practically for 0$&lt;/p&gt;

&lt;p&gt;This skills is official Remotion guidance baked into a &lt;a href="http://skill.md/" rel="noopener noreferrer"&gt;SKILL.md&lt;/a&gt;.  It gives Claude Code the knowledge to generate React-based programmatic videos without hallucinating the API. &lt;/p&gt;

&lt;p&gt;Describe a video, get production code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Usage&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Generate a launch announcement video from your product copy - hook, feature highlights, CTA- fully coded in React&lt;/li&gt;
&lt;li&gt;Build a weekly metrics video that pulls live data and renders as an MP4 automatically&lt;/li&gt;
&lt;li&gt;Create social-ready short-form video assets (16:9, 9:16) from existing blog content&lt;/li&gt;
&lt;li&gt;Render music videos from audio files and lyrics using the acestep-simplemv pattern&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Prompt&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;Using Remotion, build a 30-second product launch video for [product name]. 

Scene 1: bold headline on dark background. 
Scene 2: 3 feature callouts with staggered animations. 
Scene 3: CTA with logo. 

Export at 1080x1920 for Instagram Reels. Follow Remotion best practices throughout."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can learn more at: &lt;a href="https://github.com/mxyhi/ok-skills/tree/main/remotion-best-practices" rel="noopener noreferrer"&gt;https://github.com/mxyhi/ok-skills&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  7. MARKETING PAGE GENERATION SKILL - FRONTEND
&lt;/h3&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2F20cmp1e00g1e3ad7fh3r.png" 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.amazonaws.com%2Fuploads%2Farticles%2F20cmp1e00g1e3ad7fh3r.png" alt="MARKETING PAGE GENERATION" width="800" height="285"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here is another design skill but tailored to marketing page generations, which surprisingly Gemini 3.1 pro does the best, but lacks the color and aesthetic.&lt;/p&gt;

&lt;p&gt;This skills instructs Claude / OpenClaw to skip safe, generic aesthetics and commit to bold design decisions. 277,000+ installs. &lt;/p&gt;

&lt;p&gt;Best part? Automatically triggers for any frontend task - landing pages, campaign pages, dashboards.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Usage&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I use it to :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Generate a full SaaS landing page with hero, features, social proof, pricing, and CTA sections in one pass.&lt;/li&gt;
&lt;li&gt;Build campaign-specific microsites from a brief - product, ICP, and tone - without touching Webflow.&lt;/li&gt;
&lt;li&gt;Rebuild an underperforming landing page with a distinct visual identity from a reference URL.&lt;/li&gt;
&lt;li&gt;Scaffold a complete marketing site with dark mode, responsive layout, and conversion-optimized structure.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Its a great one and I personally use it to build landing pages for product that leads to high conversion rate. Really a must have!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prompt&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;Build a landing page for [product]. Target audience: [ICP]. Tone: [direct/editorial/minimal]. Must include: hero with headline + subhead + CTA, 3-feature section, social proof strip, and pricing table. Choose a bold, distinctive aesthetic - not generic SaaS. Output production-ready HTML/CSS/JS or React + Tailwind.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Give it a try at &lt;a href="https://github.com/anthropics/claude-code/tree/main/plugins/frontend-design" rel="noopener noreferrer"&gt;https://github.com/anthropics/claude-code/tree/main/plugins/frontend-design&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  8. CONTENT OPS SKILL
&lt;/h3&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2F96i62purdy9qova9q65d.png" 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.amazonaws.com%2Fuploads%2Farticles%2F96i62purdy9qova9q65d.png" alt="CONTENT OPS" width="800" height="167"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Your entire content operations workflow under one skill. &lt;/p&gt;

&lt;p&gt;It contains 8 skills that covers: production, audit, repurposing, and distribution. Works as a full editorial pipeline: from brief to published inside Claude Code or OpenClaw.&lt;/p&gt;

&lt;p&gt;Simply put, its a swiss army knife for content and growth team as well.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Usage&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Run a full content audit: feed your sitemap → agent scores each page by intent, keyword alignment, and conversion potential → outputs prioritized fix list&lt;/li&gt;
&lt;li&gt;Repurpose one long-form piece → 5 tweet threads + 3 LinkedIn posts + 1 newsletter section in one command&lt;/li&gt;
&lt;li&gt;Generate a 12-week content calendar from your ICP, product pillars, and keyword list&lt;/li&gt;
&lt;li&gt;Auto-draft blog posts from raw notes or voice transcripts, following your brand voice file&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Prompt&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;Run a content ops workflow for [topic/URL]. Step 1: audit existing content for gaps vs [keyword cluster]. Step 2: generate 4 new content briefs targeting missed keywords. Step 3: draft post #1 in full using our brand voice [attach]. Step 4: repurpose it into 3 LinkedIn posts and a tweet thread
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Get your content pipeline started: &lt;a href="https://github.com/superamped/ai-marketing-skills" rel="noopener noreferrer"&gt;https://github.com/superamped/ai-marketing-skills&lt;/a&gt; by superramped.&lt;/p&gt;

&lt;p&gt;While the content pipeline works, but it may still feel ai-generated, so pair it with last skill and see the organic growth.&lt;/p&gt;




&lt;h3&gt;
  
  
  9. HUMANIZER SKILL - DE-SLOP YOUR CONTENT
&lt;/h3&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2Fk483f7yp8lkcywun0w3q.png" 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.amazonaws.com%2Fuploads%2Farticles%2Fk483f7yp8lkcywun0w3q.png" alt="DE-SLOP" width="800" height="408"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The biggest problem right now with social media is AI generated slop. If you are someone who use ai to generate post and directly post, you need to stop!&lt;/p&gt;

&lt;p&gt;Instead use the Humanizer Skill.&lt;/p&gt;

&lt;p&gt;It’s a 8-pass editing system that detects and kills AI writing patterns before your content goes live. Strips banned vocabulary (delve, tapestry, foster), breaks structural tells, and forces organization &amp;amp; soul back into the copy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Usage&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Paste any AI-generated blog post → get a rewrite that sounds like a person with opinions wrote it, not a language model.&lt;/li&gt;
&lt;li&gt;Run on cold email sequences before sending → eliminates the "this was clearly written by AI" reply-killing patterns.&lt;/li&gt;
&lt;li&gt;Match a specific human voice by feeding 2-3 paragraphs of your own writing as a style reference before humanizing.&lt;/li&gt;
&lt;li&gt;Use after every content ops skill output. This makes the pair unstoppable for publishing-ready content at scale.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Prompt&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;Humanize this text: [paste]. First, scan for AI vocabulary, structural tells, and rhythm patterns. Then rewrite in 3 passes: 
&lt;span class="p"&gt;-&lt;/span&gt; kill AI words, break parallel structures, add human texture and opinion. 
&lt;span class="p"&gt;-&lt;/span&gt; Run an audit pass 
&lt;span class="p"&gt;-&lt;/span&gt; list everything still obviously AI then do a final rewrite. 
Match this voice sample: 

[paste 2 paragraphs of your own writing].
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Link: &lt;a href="https://github.com/jpeggdev/humanize-writing" rel="noopener noreferrer"&gt;https://github.com/jpeggdev/humanize-writing&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Bonus Skills - A Toolbox for Marketing Teams
&lt;/h2&gt;

&lt;p&gt;Here are some additional skills with a brief one liner of what they do. Often good to pair with other skills output.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.notion.so/Top-10-Marketing-Skills-for-Claude-Code-Open-Claw-344f261a6dfe806fbf20d7ae1875c2de?pvs=21" rel="noopener noreferrer"&gt;create-viral-content&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt;Encodes the refinement process that separates forgettable posts from ones that generate discussion and shares.&lt;/li&gt;
&lt;li&gt;Runs AI-tell detection after every draft, then auto-invokes the humanizer for the final pass&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;a href="https://github.com/VoltAgent/awesome-openclaw-skills" rel="noopener noreferrer"&gt;awesome-openclaw-skills&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt;lead-gen-crm + lead-scorer-free&lt;/li&gt;
&lt;li&gt;Two OpenClaw skills that chain into a full outbound pipeline.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;lead-scorer-free&lt;/code&gt; scores any domain 0–100 by analyzing its website, DNS, sitemap, and social presence. No database subscription needed.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;lead-gen-crm&lt;/code&gt; handles the full CRM pipeline from that point.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;a href="https://clawskills.sh/skills/staybased-cold-outreach" rel="noopener noreferrer"&gt;cold-outreach&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt;Uses Alex Hormozi Frameworks for cold-outreach.&lt;/li&gt;
&lt;li&gt;Generates high-converting cold outreach across email, SMS, and LinkedIn DM.&lt;/li&gt;
&lt;li&gt;Uses battle-tested Hormozi offer frameworks baked directly into the skill.&lt;/li&gt;
&lt;li&gt;Not generic copy - structured around irresistible offer construction.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;a href="https://github.com/coreyhaines31/marketingskills/tree/main/skills/marketing-psychology" rel="noopener noreferrer"&gt;marketing-psychology&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt;Applies cognitive biases, mental models, and behavioral science frameworks directly to marketing copy, CRO, and funnel design.&lt;/li&gt;
&lt;li&gt;Cialdini, Kahneman, and Ariely strategy and research baked into a skill.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;That marks the end of this article. Here are some hidden insights that  I discovered while using these.&lt;/p&gt;




&lt;h3&gt;
  
  
  Final Thoughts
&lt;/h3&gt;

&lt;p&gt;Use chain of skills to get the output that makes the product position unique and well framed.&lt;/p&gt;

&lt;p&gt;Simple example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use content ops skill to draft the long-form piece&lt;/li&gt;
&lt;li&gt;Pass it to psychological persuasion skill rewrites every headline and CTA against 12 cognitive bias principles&lt;/li&gt;
&lt;li&gt;Humanizer strips every AI tell across 8 passes → what's left sounds like your sharpest human writer, not a model hitting word count&lt;/li&gt;
&lt;li&gt;Cold Outreach pulls the strongest pain observations and proof points from that copy → lands in your ICP's inbox as a Hormozi-framed 5-email sequence and 3 LinkedIn DMs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The hard part isn't the skills -  it's orchestrating the flow between them. That's where &lt;a href="https://www.notion.so/20df261a6dfe80d6aa55fca03849a949?pvs=21" rel="noopener noreferrer"&gt;Composio&lt;/a&gt; comes handy. &lt;/p&gt;

&lt;p&gt;It handles the auth layer, manages tool calls across every integration, and keeps context intact as output moves from one skill to the next. No glue code. No dropped state. No manual handoffs.&lt;/p&gt;

&lt;p&gt;Install it once. Let it run the pipeline while you focus on what AI still can't do - knowing your customer well enough to say something worth reading.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>marketing</category>
      <category>claude</category>
      <category>openclawchallenge</category>
    </item>
    <item>
      <title>Building a Financial Agent That Actually Works: Composio MCP + Hermes</title>
      <dc:creator>Developer Harsh</dc:creator>
      <pubDate>Thu, 16 Apr 2026 04:30:09 +0000</pubDate>
      <link>https://dev.to/composiodev/building-a-financial-agent-that-actually-works-composio-mcp-hermes-93k</link>
      <guid>https://dev.to/composiodev/building-a-financial-agent-that-actually-works-composio-mcp-hermes-93k</guid>
      <description>&lt;p&gt;I recently explored Hermes Agent to see how far I could push autonomous workflows in a real-world use case. &lt;/p&gt;

&lt;p&gt;Instead of just experimenting, &lt;br&gt;
I wanted something practical, so I decided to build a financial analyst agent that could fetch, process, reason over financial data and suggest me stocks in this era of war.&lt;/p&gt;

&lt;p&gt;This blog post walks through exactly how we:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Securely Set up Hermes Agent&lt;/li&gt;
&lt;li&gt;Integrated Composio MCP for tool access (Google Sheet, Google Doc, Exa)&lt;/li&gt;
&lt;li&gt;Built a functional financial analyst agent that captures the market trends &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Along the way, I’ll also share what broke, what worked, and what I’d do differently.&lt;/p&gt;


&lt;h2&gt;
  
  
  What is Hermes Agent
&lt;/h2&gt;

&lt;p&gt;Hermes Agent an open source AI agent that can learn and evolve as you interact in real-time , something that open-claw lacked.&lt;/p&gt;

&lt;p&gt;It does so by using a persistent cross-session memory and closed learning loop (write docs → save tools → update memory) that converts completed task into reusable skills. This allows it become more efficient over time.&lt;/p&gt;

&lt;p&gt;The agent has following key capabilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;S*&lt;em&gt;elf Improving Loop&lt;/em&gt;* : Unlike standard chatbot wrappers, Hermes agent refines its own skills from completed task&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Persistent Memory&lt;/strong&gt;: Maintains a persistent model of the user and past interactions across sessions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Autonomous Agent tools&lt;/strong&gt;: Agent offers over 40+ built in tools, support sub agent delegation and code execution&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Multi-Platform Integration&lt;/strong&gt;: Works from anywhere , from terminal to plethora of social media service (though little buggy)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Model Agnostic&lt;/strong&gt;: Supports multiple LLM providers and LLMS including open source and closed source models.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Think of it as a programmable agent that can reason + act + self improve , not just respond.&lt;/p&gt;

&lt;p&gt;This means its a perfect candidate for a financial analyst agent.&lt;/p&gt;


&lt;h2&gt;
  
  
  Securely Setup Hermes Agent
&lt;/h2&gt;

&lt;p&gt;Prerequisites:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Docker - Install docker desktop&lt;/li&gt;
&lt;li&gt;Optional- WSL2 for Windows&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;First install herms in docker, open terminal and run one by one:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash
&lt;span class="nb"&gt;source&lt;/span&gt; ~/.bashrc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&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.amazonaws.com%2Fuploads%2Farticles%2Fkk7ibp2iev9ca6z9ca0y.png" 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.amazonaws.com%2Fuploads%2Farticles%2Fkk7ibp2iev9ca6z9ca0y.png" alt="Install Hermes" width="800" height="471"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next configure the Hermes Agent, here is the setting I choose, feel free to choose your preferred:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Provider : OpenAI Codex. Make sure to authenticate&lt;/li&gt;
&lt;li&gt;Model : GPT 5.4 / GPT 5.4 mini ( for faster inference)&lt;/li&gt;
&lt;li&gt;TTS: Keep Current&lt;/li&gt;
&lt;li&gt;Terminal Backend: Docker (make sure either docker is installed / docker desktop running)&lt;/li&gt;
&lt;li&gt;Docker image : default&lt;/li&gt;
&lt;li&gt;Max Iterations : Default. Set this to higher for complex task (cost more token)&lt;/li&gt;
&lt;li&gt;Context Compression Threshold: Default. Higher threshold compresses later and lower does it faster&lt;/li&gt;
&lt;li&gt;Messaging Platform (optional) : Choose Telegram and follow the instructions. Rest same , but I kept only telegram.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If done all this you will be greeted with following screen&lt;/p&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2Fam7qrjehbve94vke6qa8.png" 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.amazonaws.com%2Fuploads%2Farticles%2Fam7qrjehbve94vke6qa8.png" alt="Hermes Start" width="800" height="465"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now time to add Composio MCP!&lt;/p&gt;




&lt;p&gt;Hermes by default provide ~40 tools, which is ok for daily tasks.&lt;/p&gt;

&lt;p&gt;But it starts feels pretty limited when you start building complex agentic workflows where you need to connect multiple third party SaaS apps (Google Doc, Sheets, Web seach tools, etc) with prod grade security and calling them at need.&lt;/p&gt;

&lt;p&gt;Composio is the tooling layer that sits between Hermes Agent and third party applications and let you connect to 1000+ tools with secure auth and intelligent tool calling.&lt;/p&gt;

&lt;p&gt;Installing Composio MCP is quite straightforward. Follow these steps:&lt;/p&gt;

&lt;p&gt;Head to the &lt;a href="https://dashboard.composio.dev/" rel="noopener noreferrer"&gt;https://dashboard.composio.dev/&lt;/a&gt; &amp;amp; login. You will be greeted with this dashboard&lt;/p&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2Fywbqrbfexlke4as2tg2y.png" 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.amazonaws.com%2Fuploads%2Farticles%2Fywbqrbfexlke4as2tg2y.png" alt="Composio Home" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Head to the Install &amp;amp; copy the MCP Url and X-CONSUMER-API-KEY value&lt;/p&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2F0ee8jcwgrwegwyzoq68n.png" 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.amazonaws.com%2Fuploads%2Farticles%2F0ee8jcwgrwegwyzoq68n.png" alt="Composio Install" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once done head to the terminal and type :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nano ~/.hermes/config.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and at the end add these lines:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;mcp_servers:
  composio:
    url: &lt;span class="s2"&gt;"https://connect.composio.dev/mcp"&lt;/span&gt;
    headers:
      x-consumer-api-key: &lt;span class="s2"&gt;"YOUR_COMPOSIO_API_KEY"&lt;/span&gt;
    connect_timeout: 60
    &lt;span class="nb"&gt;timeout&lt;/span&gt;: 180
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Add your own api key you copied &amp;amp; save the file&lt;/p&gt;

&lt;p&gt;Now, head back to Hermes Agent and restart it using &lt;code&gt;hermes&lt;/code&gt;, and it will detect the mcp.&lt;/p&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2F7yqf2qa96lx5r8jr6sav.png" 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.amazonaws.com%2Fuploads%2Farticles%2F7yqf2qa96lx5r8jr6sav.png" alt="MCP" width="800" height="135"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now you can use Hermes Agent with MCP like any other agent, even though code runs in the sandbox:).&lt;/p&gt;

&lt;p&gt;Alright now that we have agent &amp;amp; mcp in place, let’s try to see how it performs.&lt;/p&gt;




&lt;h2&gt;
  
  
  Add MCP using Composio CLI (Optional)
&lt;/h2&gt;

&lt;p&gt;Composio also has a CLI, which let’s any agent to communicate with all the tools through commands. The CLI allows composability of workflows. The agent can chain tools and accomplish complex tasks with relatively lesser tokens than MCPs.&lt;/p&gt;

&lt;p&gt;Using it is straight forward. Open your Hermes agent and paste the prompt mentioned on &lt;a href="https://composio.dev/cli" rel="noopener noreferrer"&gt;https://composio.dev/cli&lt;/a&gt; :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;INSTALL (run in user's terminal)
  curl -fsSL https://composio.dev/install | bash

You have access to 1000+ app integrations through these commands.
search → find tools. execute → run them. link → connect accounts.
proxy → raw API access. run → inline scripts.

Bias toward action: run &lt;span class="sb"&gt;`composio search &amp;lt;task&amp;gt;`&lt;/span&gt;, then &lt;span class="sb"&gt;`composio execute &amp;lt;slug&amp;gt;`&lt;/span&gt;.
Input validation, auth checks, and error messages are built in — just try it.

USAGE
  composio &lt;span class="nt"&gt;&amp;lt;command&amp;gt;&lt;/span&gt; [options]

CORE COMMANDS
  search
    Find tools. Use this first — describe what you need in natural language.
    Usage: composio search &lt;span class="nt"&gt;&amp;lt;query&amp;gt;&lt;/span&gt; [--toolkits text] [--limit integer]
      &lt;span class="nt"&gt;&amp;lt;query&amp;gt;&lt;/span&gt;             Semantic use-case query (e.g. "send emails")
      --toolkits          Filter by toolkit slugs, comma-separated
      --limit             Number of results per page (1-1000)

  execute
    Run a tool. Handles input validation and auth checks automatically.
    If auth is missing, the error tells you what to run. Use aggressively.
    Usage: composio execute &lt;span class="nt"&gt;&amp;lt;slug&amp;gt;&lt;/span&gt; [-d, --data text] [--dry-run] [--get-schema]
      &lt;span class="nt"&gt;&amp;lt;slug&amp;gt;&lt;/span&gt;              Tool slug (e.g. "GITHUB_CREATE_ISSUE")
      -d, --data          JSON or JS-style object arguments, e.g. -d '{ repo: "foo" }', @file, or - for stdin
      --dry-run           Validate and preview the tool call without executing it
      --get-schema        Fetch and print the raw tool schema

  link
    Connect an account. Only needed when execute tells you to — don't preemptively link.
    Usage: composio link [&lt;span class="nt"&gt;&amp;lt;toolkit&amp;gt;&lt;/span&gt;] [--no-browser]
      &lt;span class="nt"&gt;&amp;lt;toolkit&amp;gt;&lt;/span&gt;           Toolkit slug to link (e.g. "github", "gmail")

  run
    Run inline TS/JS code with shimmed CLI commands; injected execute(), search(), proxy(), subAgent(), and z (zod).
    Usage: composio run &lt;span class="nt"&gt;&amp;lt;code&amp;gt;&lt;/span&gt; [-- ...args] | run [-f, --file text] [-- ...args] [--dry-run]
      &lt;span class="nt"&gt;&amp;lt;code&amp;gt;&lt;/span&gt;              Inline Bun ESNext code to evaluate
      -f, --file          Run a TS/JS file instead of inline code
      --dry-run           Preview execute() calls without running remote actions

  proxy
    curl-like access to any toolkit API through Composio using your linked account.
    Usage: composio proxy &lt;span class="nt"&gt;&amp;lt;url&amp;gt;&lt;/span&gt; --toolkit text [-X method] [-H header]... [-d data]
      &lt;span class="nt"&gt;&amp;lt;url&amp;gt;&lt;/span&gt;               Full API endpoint URL
      --toolkit           Toolkit slug whose connected account should be used
      -X, --method        HTTP method (GET, POST, PUT, DELETE, PATCH)
      -H, --header        Header in "Name: value" format. Repeat for multiple.
      -d, --data          Request body as raw text, JSON, @file, or - for stdin

  artifacts
    Inspect the cwd-scoped session artifact directory and history.
    Usage: composio artifacts cwd
      cwd                 Print the current session artifact directory path

  Workflow: search → execute. If execute fails with an auth error, run link, then retry.

TOOLS
  tools info &lt;span class="nt"&gt;&amp;lt;slug&amp;gt;&lt;/span&gt;     Print tool summary and cache its schema
  tools list &lt;span class="nt"&gt;&amp;lt;toolkit&amp;gt;&lt;/span&gt;  List tools available in a toolkit
  artifacts cwd         Print the cwd-scoped session artifact directory

EXAMPLES
  # 1. User asks you to "create a GitHub issue"
  composio search "create github issue"
  # → returns GITHUB_CREATE_ISSUE

  # 2. Execute it (will error if not linked — that's fine)
  composio execute GITHUB_CREATE_ISSUE -d '{ repo: "owner/repo", title: "Bug" }'
  # → if auth missing: "Run &lt;span class="sb"&gt;`composio link github`&lt;/span&gt; first"

  # 3. Link only when told to
  composio link github

  # 4. Raw API access when no tool exists
  composio proxy https://gmail.googleapis.com/gmail/v1/users/me/profile --toolkit gmail

  # 5. Run a script with injected helpers
  composio run 'const me = await execute("GITHUB_GET_THE_AUTHENTICATED_USER"); console.log(me)'

DEVELOPER COMMANDS
  dev       Developer workflows: init, playground execution, triggers, and logs.
  generate  Generate type stubs for toolkits, tools, and triggers (TypeScript | Python).
  manage    Manage orgs, toolkits, connected accounts, triggers, auth configs, and projects.

ACCOUNT
  login    Log in to Composio
  logout   Log out from Composio
  whoami   Show current account info
  version  Display CLI version
  upgrade  Upgrade CLI to the latest version

FLAGS
  -h, --help     Show help for command
  --version      Show composio version

LEARN MORE
  Use &lt;span class="sb"&gt;`composio &amp;lt;command&amp;gt; --help`&lt;/span&gt; for more information about a command.
  Documentation: https://docs.composio.dev

GETTING STARTED
  When your user asks you to do something with an external app:
&lt;span class="p"&gt;  1.&lt;/span&gt; composio search "&lt;span class="nt"&gt;&amp;lt;what&lt;/span&gt; &lt;span class="na"&gt;they&lt;/span&gt; &lt;span class="na"&gt;want&lt;/span&gt; &lt;span class="na"&gt;done&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;"
&lt;span class="p"&gt;  2.&lt;/span&gt; composio execute &lt;span class="nt"&gt;&amp;lt;slug&lt;/span&gt; &lt;span class="na"&gt;from&lt;/span&gt; &lt;span class="na"&gt;search&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt; -d '&lt;span class="nt"&gt;&amp;lt;params&amp;gt;&lt;/span&gt;'
&lt;span class="p"&gt;  3.&lt;/span&gt; If auth error → composio link &lt;span class="nt"&gt;&amp;lt;toolkit&amp;gt;&lt;/span&gt;, then retry step 2.

  Do not assume we lack coverage. Search first — we likely support it.
  Do not preemptively link accounts or ask your user what to connect.
  Just try. Auth and validation errors are self-descriptive.

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This set’s agent to use Composio cli and do all the task, rather than using direct mcp - infact this approach much simpler as no dependency is required.&lt;/p&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2Far36vjedj9ca8o0g2w0l.png" 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.amazonaws.com%2Fuploads%2Farticles%2Far36vjedj9ca8o0g2w0l.png" alt="Composio CLI with Hermes Usage" width="800" height="496"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Alright now that we have agent &amp;amp; mcp in place, time to build the financial agent&lt;/p&gt;




&lt;h2&gt;
  
  
  Building A Financial Analyst Agent
&lt;/h2&gt;

&lt;p&gt;Head to the Hermes Agent, if not active - enable it using Hermes , ensure the MCP section have Composio and all other relevant MCP’s showing up (Gmail, Google Sheet, Google Docs , Exa Search). This is essential.&lt;/p&gt;

&lt;p&gt;Now in the prompt box, paste the following prompt:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;You are my personal Indian stock market financial analyst. Start by asking me exactly 5 screening questions one at a time to assess my risk appetite (cover: risk tolerance, investment horizon, capital range, sectors of interest, and reaction to loss). Once done, analyze my answers and begin your analyst workflow:

**Setup:** Attempt to use Google Docs, Google Sheets, and Gmail via your Composio tools. If any are not connected, Composio will automatically generate a sign-in link — share it with me, wait for me to authenticate, then resume once all connections are active.

**Every 5 minutes, run this loop:**

1. **Data Gathering:** Pull live Indian stock market data from multiple sources in parallel:
   - **Exa Search Tool:** Use composio Exa tool to search for latest Indian stock market news, analyst reports, earnings updates, sector trends, and breaking financial events. Query terms like "NSE BSE India stocks today", "Indian market sentiment", "Nifty Sensex analysis", top sector movements, and any stock-specific news relevant to my risk profile.
   - **Free Financial APIs &amp;amp; Web Sources:** NSE India API, BSE India, Yahoo Finance India, Moneycontrol, Tickertape, Economic Times Markets, and any other authoritative free real-time Indian market feeds available to you.
   - Cross-reference and reconcile data from both sources for accuracy before analysis.

2. Analyze all gathered data against my risk profile.

3. **Google Doc:** Search for an existing doc named "Hermes Financial Report - India". If found, append a new report section separated by `---`. If not, create it. Each report must be clean, well-structured with proper headings, and include: timestamp, market summary, macro indicators, top picks with clear reasoning, what to avoid and why, and a decisive final recommendation paragraph. Use proper spacing, bold headers, and bullet points for readability.

4. **Google Sheet:** Search for an existing sheet named "Hermes Stock Tracker - India". If found, append new rows. If not, create it. Format the sheet with bold column headers, frozen top row, and color-coded sentiment (Bullish = green, Bearish = red, Neutral = yellow where possible). Columns: Stock Name | Ticker | Exchange (NSE/BSE) | Sector | Market Sentiment (Bullish/Bearish/Neutral) | My Prediction (Yes/No) | Confidence % | Min Investment (INR) | Last Updated.

5. **Hourly Email via Gmail:** After every report cycle, send me a well-formatted email with:
   - **Subject:** 📊 Hermes Market Report — [Date &amp;amp; Time IST]
   - **Body:** A brief 3–5 line market summary, top 3 stock picks with one-line reasoning each, one key risk to watch, and direct clickable links to the updated Google Doc and Google Sheet.
   - Keep the email clean, scannable, and professional — use spacing, bold labels, and short paragraphs.

**Urgent Signal Alert (send immediately, outside the hourly loop):** If at any point you detect a strong buy or sell signal (significant price movement, breaking news from Exa or any financial source, sentiment shift, or macro event affecting Indian markets), instantly send a separate alert email with:
   - **Subject:** 🚨 URGENT: [BUY/SELL] Signal — [Stock Name] — [Time IST]
   - **Body:** Stock name, ticker, exchange, signal type (Buy/Sell), reason in 2–3 crisp lines, recommended action, and link to the Google Doc &amp;amp; Google Sheet for full context.

Never stop the loop unless I say stop. Be decisive, data-driven, and always flag urgency clearly.

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With this prompt:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;You get asked 5 questions, and it builds a personal risk profile tailored to your investment style.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Every hour, it automatically scans NSE, BSE, Exa, Yahoo Finance, Moneycontrol and more for live Indian market data.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It writes a detailed investment report (what to buy, what to avoid, why) into a Google Doc - appending fresh analysis every cycle.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It maintains a live Google Sheet tracking top Indian stocks with sentiment, prediction, confidence, and minimum investment amount.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It emails you a clean market summary every hour, and fires an instant alert the moment it spots an urgent buy or sell signal.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Note: For demo i set the 1 hour duration to 5 minutes.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Now wait for execution to finish and cron job to be created. This is what my flow looked like:&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/7nteuv1QA5c"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;




&lt;p&gt;Agent by default didn’t had access to Gmail, Sheet, Docs &amp;amp; EXA, and manually adding them was a pain (if say 20+ tools) and it bloats the context window as well.&lt;/p&gt;

&lt;p&gt;Composio solves the issue. You add it once, and it takes care of: - OAuth (one time link- did beforehand), &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;calling right tool at runtime when needed, &lt;/li&gt;
&lt;li&gt;performing all the actions in sandbox and &lt;/li&gt;
&lt;li&gt;deliver the result, 
while Hermes Agent handled the orchestration and reasoning.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Note : If you haven’t connected any tool, while running agent, agent will ask you to connect, authenticate. Also for EXA - use a api key.&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>ai</category>
      <category>productivity</category>
      <category>hermes</category>
    </item>
    <item>
      <title>Best Agents SDK in 2026</title>
      <dc:creator>Developer Harsh</dc:creator>
      <pubDate>Fri, 03 Apr 2026 14:59:51 +0000</pubDate>
      <link>https://dev.to/composiodev/best-agents-sdk-in-2026-7gg</link>
      <guid>https://dev.to/composiodev/best-agents-sdk-in-2026-7gg</guid>
      <description>&lt;p&gt;AI agents are no longer experimental. They are being shipped in production systems right now, and the SDKs powering them have matured dramatically.&lt;/p&gt;

&lt;p&gt;If you're building with AI in 2026, understanding the tools available to you is no longer optional.&lt;/p&gt;

&lt;p&gt;OpenAI, Claude, and Google are providing their SDKs to build these agents in minimal code for production. With their own quirks, they can make it harder for businesses and developers alike.&lt;/p&gt;

&lt;p&gt;I just did a comparison between the top most used frameworks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Claude Agent SDK&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OpenAI Agents SDK&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Google ADK&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All source code at the end!&lt;/p&gt;

&lt;p&gt;Let’s begin.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why This Comparison?
&lt;/h2&gt;

&lt;p&gt;First thing’s first, why this comparison, while many others already existed, here is the deal:&lt;/p&gt;

&lt;p&gt;I’ve been building agents across these SDKs, and the reality is they all promise “minimal code” but behave very differently once you go beyond demos.&lt;/p&gt;

&lt;p&gt;So I compared them the only way that matters: by actually building with them.&lt;/p&gt;

&lt;p&gt;I looked at:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;how quickly I could get something working,&lt;/li&gt;
&lt;li&gt;how much control I had when things got complex, and&lt;/li&gt;
&lt;li&gt;how they handled real-world workflows like multi-agent coordination, tool usage, and state management.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here are all my findings.&lt;/p&gt;




&lt;h2&gt;
  
  
  OpenAI Agents SDK
&lt;/h2&gt;

&lt;p&gt;The OpenAI Agents SDK is an open-source framework and a significant upgrade over Swarm. It is designed to simplify orchestrating &lt;strong&gt;multi-agent workflows&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It is &lt;strong&gt;Python &amp;amp; TS-first&lt;/strong&gt;. Developers use built-in language features to orchestrate and chain agents rather than learning new abstractions.&lt;/p&gt;

&lt;h3&gt;
  
  
  Core Primitives
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Agents&lt;/strong&gt;: LLMs with instructions, tools, guardrails, and handoffs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Handoffs&lt;/strong&gt;: Delegating tasks to other agents.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tools&lt;/strong&gt;: Functions, MCP, and hosted tools.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Guardrails&lt;/strong&gt;: Safety checks for input/output validation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sessions&lt;/strong&gt;: Automatic conversation history management.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tracing&lt;/strong&gt;: Built-in visualization for debugging.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Why Use It
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Multi-Language Support&lt;/strong&gt;: Provider-agnostic. Supports OpenAI APIs and 100+ other LLMs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Realtime &amp;amp; TTS Voice&lt;/strong&gt;: Build voice agents with interruption detection and context management.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Observability&lt;/strong&gt;: Robust tracing exports to &lt;code&gt;Logfire&lt;/code&gt;, &lt;code&gt;AgentOps&lt;/code&gt;, or &lt;code&gt;OpenTelemetry&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Advanced Connectivity&lt;/strong&gt;: Supports WebSocket transport for Responses API and SIP protocol connections.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GPT-5.x Ready&lt;/strong&gt;: Updated reasoning effort and cleaner handoff history for downstream context.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Ease of Getting Started
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Minimal setup&lt;/strong&gt;: Requires just a few lines of code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Quick install&lt;/strong&gt;: &lt;code&gt;pip install openai-agents&lt;/code&gt;. Runs in under 10 lines.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Suited for&lt;/strong&gt;: Teams wanting rapid prototyping and simple agent coordination.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Developer Experience
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Python-first&lt;/strong&gt;: Express complex relationships with a small set of primitives.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Type Safety&lt;/strong&gt;: Zod-powered validation for TypeScript/JavaScript.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Visual Tooling&lt;/strong&gt;: Agent Builder provides a drag-and-drop canvas for composing logic.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Example
&lt;/h3&gt;

&lt;p&gt;I used OpenA Agents SDK to build me a job search agent, that fetches me jobs based on the user persona it created by asking me relevant questions.&lt;/p&gt;

&lt;p&gt;By default, openai agents is unable to use exa search, google sheets, this is where composio handle’s that, not only that, but you can also connect it to over 850+ tools and integrations.&lt;/p&gt;

&lt;p&gt;This is the code that handled all the heavy lifting&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="c1"&gt;# imports 
&lt;/span&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;composio&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Composio&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;composio_openai_agents&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;OpenAIAgentsProvider&lt;/span&gt;

&lt;span class="c1"&gt;# Initialize Composio
&lt;/span&gt;&lt;span class="n"&gt;composio&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Composio&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;provider&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nc"&gt;OpenAIAgentsProvider&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;

&lt;span class="c1"&gt;# Create Tool Router session (connection tools + wait so OAuth can finish before continuing)
&lt;/span&gt;&lt;span class="n"&gt;session&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;composio&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;user_id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;user_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;toolkits&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;GITHUB&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;exa&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;googlesheets&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;browser_tool&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt; &lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="n"&gt;manage_connections&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;enable&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;wait_for_connections&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;mcp_url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;session&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;mcp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;

&lt;span class="c1"&gt;# add tool_configs
&lt;/span&gt;&lt;span class="n"&gt;agent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Agent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Assistant&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gpt-5&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;instructions&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;...&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="p"&gt;[&lt;/span&gt;
        &lt;span class="nc"&gt;HostedMCPTool&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="n"&gt;tool_config&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;mcp&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;server_label&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;tool_router&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;server_url&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;mcp_url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;headers&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;x-api-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;api_key&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
                &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;require_approval&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;never&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One thing that stand out was, not only agent created a right persona based on screening question, but also fetched me list of relevant job description along with my skills relevancy, without explicitly told to do so.&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/X9IGm9lkSUE"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;




&lt;h2&gt;
  
  
  Claude Agent SDK
&lt;/h2&gt;

&lt;p&gt;The Claude Agent SDK is Anthropic's open-source framework for building agents that interact with a &lt;strong&gt;real computer&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It evolved from Claude Code. The core principle is simple: &lt;strong&gt;give your agent a computer.&lt;/strong&gt; It uses a shell, a file system, and the web just like a human.&lt;/p&gt;

&lt;h3&gt;
  
  
  Core Primitives
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Bash tool&lt;/strong&gt;: Executes shell commands directly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Read / Write / Edit&lt;/strong&gt;: Native file system access.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Glob &amp;amp; Search&lt;/strong&gt;: File discovery across project directories.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Subagents&lt;/strong&gt;: Spawn parallel or nested agents for subtasks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MCP servers&lt;/strong&gt;: Standardized integrations (Slack, GitHub, Google Drive).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Permission modes&lt;/strong&gt;: Fine-grained control via &lt;code&gt;allowed_tools&lt;/code&gt; and &lt;code&gt;permission_mode&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Why Use It
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Native OS Access&lt;/strong&gt;: The only SDK where agents directly control a computer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;In-Process Tools&lt;/strong&gt;: Custom tools run inside your Python app. No separate process needed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-Cloud&lt;/strong&gt;: Supports AWS Bedrock, Google Vertex AI, and Microsoft Azure AI Foundry.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Xcode 26 Integration&lt;/strong&gt;: Full Claude Code power inside the IDE, including capturing Xcode Previews.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Ease of Getting Started
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Minimal entry point&lt;/strong&gt;: Built-in tools mean no manual plumbing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Quick install&lt;/strong&gt;: &lt;code&gt;pip install claude-agent-sdk&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best for&lt;/strong&gt;: Developers needing deep OS access or agentic coding workflows.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Production Readiness
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Battle-proven&lt;/strong&gt;: Powers Anthropic’s internal research and video creation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Context Compaction&lt;/strong&gt;: Automatic management for long-running tasks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost Controls&lt;/strong&gt;: &lt;code&gt;max_budget_usd&lt;/code&gt; parameter caps spend per session.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Example
&lt;/h3&gt;

&lt;p&gt;I used Claude Agent’s SDK to build an open-source contributor, which takes a repo name, fetches a good issue listed, reads the contribution file, fork’s the repo, create the code fix that matches orignal repo style, push the code to forked repo and raises a PR.&lt;/p&gt;

&lt;p&gt;By default, calude agents is unable to use github, this is where composio handle’s that, not only that, but you can also connect it to over 850+ tools and integrations.&lt;/p&gt;

&lt;p&gt;This is the code that handled all the heavy lifting&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="c1"&gt;# imports
&lt;/span&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;composio&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Composio&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;claude_agent_sdk&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;ClaudeSDKClient&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ClaudeAgentOptions&lt;/span&gt;

&lt;span class="c1"&gt;# fetch all composio toolkits name
&lt;/span&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;_toolkits&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;list&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
    &lt;span class="n"&gt;raw&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getenv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;OSS_COMPOSIO_TOOLKITS&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;raw&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;strip&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;t&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;raw&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;strip&lt;/span&gt;&lt;span class="p"&gt;()]&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;DEFAULT_TOOLKITS&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# create a async chat, connect to composio, fetch user id, define toolkits and mcp server url + configs.
&lt;/span&gt;&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;chat_with_oss_stack&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;api_key&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getenv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;COMPOSIO_API_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;raise&lt;/span&gt; &lt;span class="nc"&gt;RuntimeError&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;COMPOSIO_API_KEY is not set&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="n"&gt;composio&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Composio&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="n"&gt;user_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getenv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;COMPOSIO_USER_ID&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getenv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;USER_ID&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;user_id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;raise&lt;/span&gt; &lt;span class="nc"&gt;RuntimeError&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Set COMPOSIO_USER_ID (or USER_ID) in the environment or .env — Composio needs a stable user id string.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
        &lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="n"&gt;kits&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;_toolkits&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;mcp_server&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;composio&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;user_id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;user_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;toolkits&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;kits&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;mcp_server&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;mcp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;raise&lt;/span&gt; &lt;span class="nc"&gt;ValueError&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Session URL not found&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="n"&gt;options&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;ClaudeAgentOptions&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;permission_mode&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;bypassPermissions&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;mcp_servers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;composio&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;http&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;url&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;headers&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;x-api-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;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getenv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;COMPOSIO_API_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;""&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
                &lt;span class="p"&gt;},&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="n"&gt;system_prompt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;OSS_SYSTEM_PROMPT&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;max_turns&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getenv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;OSS_MAX_TURNS&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;40&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)),&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I asked it to operate on “gemini-cli” repository, and it create a pr for me.&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/G-3V20m8L-w"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;




&lt;h2&gt;
  
  
  Google Agent Development Kit (ADK)
&lt;/h2&gt;

&lt;p&gt;Google's ADK is a code-first framework. It applies engineering principles like &lt;strong&gt;versioning, testing, and modularity&lt;/strong&gt; to AI.&lt;/p&gt;

&lt;p&gt;While optimized for Gemini, it is model-agnostic and built for compatibility with third-party tools.&lt;/p&gt;

&lt;h3&gt;
  
  
  Core Primitives
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;LLM Agents&lt;/strong&gt;: Use LLMs as the reasoning core.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sequential/Parallel/Loop Agents&lt;/strong&gt;: Predictable pipeline execution.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Graph-based workflows&lt;/strong&gt;: (ADK 2.0 Alpha) Conditional, branching pipelines.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agent2Agent (A2A)&lt;/strong&gt;: Secure protocol for agent-to-agent delegation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ADK Web UI&lt;/strong&gt;: Browser-based interface for inspecting traces and artifacts.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Why Use It
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Widest Language Support&lt;/strong&gt;: Python, TypeScript, Java, and &lt;strong&gt;Go&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Complex Orchestration&lt;/strong&gt;: Graph-based logic for branching and retry paths.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Secure Interoperability&lt;/strong&gt;: A2A allows delegation without exposing internal memory.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vertex AI Integration&lt;/strong&gt;: Deploy directly to Google Cloud’s managed enterprise runtime.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Ease of Getting Started
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Under 100 lines&lt;/strong&gt;: Build production agents with bidirectional audio/video.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agent Starter Pack&lt;/strong&gt;: Accelerated deployment path for Google Cloud services.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best for&lt;/strong&gt;: Enterprise-grade systems requiring tight Google ecosystem integration.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Developer Experience
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Advanced State Management&lt;/strong&gt;: Restores state from failure and allows context "rewinding."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enterprise Governance&lt;/strong&gt;: Integration with Cloud API Registry to curate approved tools.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pre-built Connectors&lt;/strong&gt;: 100+ connectors via Composio.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Example
&lt;/h3&gt;

&lt;p&gt;For demos these are cool, heard people say, can be used in production, but it failed most of tool calls, racked me up a bill of 5$ due to repeated tool call (was stuck in thinking loop). Also the rate limit on free tier is real pain.&lt;/p&gt;

&lt;p&gt;Yes, its developer friendly, but really lacks a lot in terms of performance and newbies can easily stuck with &lt;code&gt;adk web&lt;/code&gt;  or &lt;code&gt;adk cli&lt;/code&gt;  as it requires a specific folder structure.&lt;/p&gt;

&lt;p&gt;However for simpler task it did quite well. Built an email agent that maps promotional education mails (like coursera, deeplearning) to well optimised developer roadmap, which beginner devs can use  to learn in a structured manner.  &lt;/p&gt;

&lt;p&gt;Suprisingly code to use composio tools here is quite simple and easy to use:&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="c1"&gt;# imports
&lt;/span&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;composio&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Composio&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;composio_google&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;GoogleProvider&lt;/span&gt;

&lt;span class="c1"&gt;# load envs
&lt;/span&gt;&lt;span class="n"&gt;COMPOSIO_API_KEY&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getenv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;COMPOSIO_API_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;COMPOSIO_USER_ID&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getenv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;COMPOSIO_USER_ID&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# create composio client
&lt;/span&gt;&lt;span class="n"&gt;composio_client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Composio&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;COMPOSIO_API_KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;provider&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nc"&gt;GoogleProvider&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
    &lt;span class="n"&gt;timeout&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;120&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;max_retries&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# create a client session with tools
&lt;/span&gt;&lt;span class="n"&gt;composio_session&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;composio_client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;user_id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;COMPOSIO_USER_ID&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;toolkits&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gmail&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# store sessiom url
&lt;/span&gt;&lt;span class="n"&gt;COMPOSIO_MCP_URL&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;composio_session&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;mcp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;

&lt;span class="c1"&gt;# add composio mcp server connection
&lt;/span&gt;&lt;span class="n"&gt;composio_toolset&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;McpToolset&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;connection_params&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nc"&gt;StreamableHTTPConnectionParams&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;COMPOSIO_MCP_URL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;x-api-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;COMPOSIO_API_KEY&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="n"&gt;timeout&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;30.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;sse_read_timeout&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;600.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# include it in the agents
&lt;/span&gt;&lt;span class="n"&gt;root_agent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Agent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gemini-2.5-flash&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;composio_agent&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;description&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;An agent that uses Composio tools to perform actions.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;instruction&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;You are a helpful assistant connected to Composio. &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;You have the following tools available: &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;COMPOSIO_SEARCH_TOOLS, COMPOSIO_MULTI_EXECUTE_TOOL, &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;COMPOSIO_MANAGE_CONNECTIONS, COMPOSIO_REMOTE_BASH_TOOL, COMPOSIO_REMOTE_WORKBENCH. &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Use these tools to help users with GMAIL operations.&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="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;composio_toolset&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/vGYQy3wp42A"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;




&lt;h2&gt;
  
  
  Comparison Table
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Feature&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;OpenAI Agents SDK&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Claude Agent SDK&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Google ADK&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Primary Language&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Python, TypeScript&lt;/td&gt;
&lt;td&gt;Python, TypeScript&lt;/td&gt;
&lt;td&gt;Python, TS, Java, Go&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Model Agnostic&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;✅ (100+ LLMs)&lt;/td&gt;
&lt;td&gt;⚠️ (Claude-first)&lt;/td&gt;
&lt;td&gt;✅ (Gemini-optimized)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Multi-Agent&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;✅ Handoffs&lt;/td&gt;
&lt;td&gt;✅ Subagents&lt;/td&gt;
&lt;td&gt;✅ Graph (2.0 Alpha)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;OS Access&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;❌ No native control&lt;/td&gt;
&lt;td&gt;✅ Native Bash/File&lt;/td&gt;
&lt;td&gt;❌ No native control&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Voice/Realtime&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;✅ Built-in&lt;/td&gt;
&lt;td&gt;⚠️ Via API&lt;/td&gt;
&lt;td&gt;⚠️ Via API&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Best For&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Voice &amp;amp; LLM diversity&lt;/td&gt;
&lt;td&gt;OS/File automation&lt;/td&gt;
&lt;td&gt;Enterprise/Google Cloud&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Which One to Choose?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;OpenAI Agents SDK&lt;/strong&gt;: Choose if you want a lightweight framework with strong voice support and the ability to swap LLMs freely.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Claude Agent SDK&lt;/strong&gt;: Choose if your agents need deep OS access (developer assistants) or follows a "give the agent a computer" paradigm.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Google ADK&lt;/strong&gt;: Choose if you are building enterprise-grade systems on Google Cloud or need multi-language support (Python/Java/Go). Requires lot of manual plumbing and security.&lt;/li&gt;
&lt;li&gt;For better&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;OpenAI, Claude, and Gemini are all key players. However, the real competitive edge isn't knowing &lt;em&gt;that&lt;/em&gt; these SDKs exist. It's the &lt;strong&gt;hands-on mastery&lt;/strong&gt; of architectural decisions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;When to use a handoff versus a subagent.&lt;/li&gt;
&lt;li&gt;How to design tools that don't bloat the context window.&lt;/li&gt;
&lt;li&gt;When to insert a human checkpoint.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Frameworks evolve quickly. The deeper intuition for architecting reliable systems only comes through repeated experimentation.&lt;/p&gt;

&lt;p&gt;All agents source code can be seen at &lt;a href="https://github.com/DevloperHS/agents-sdk-tests" rel="noopener noreferrer"&gt;https://github.com/DevloperHS/agents-sdk-tests&lt;/a&gt;. Feel free to fork and raise pr’s :)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Happy Building.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>programming</category>
      <category>automation</category>
    </item>
    <item>
      <title>Top 10 OpenClaw Plugins to Supercharge Your OpenClaw Workflows</title>
      <dc:creator>Developer Harsh</dc:creator>
      <pubDate>Wed, 18 Mar 2026 05:03:35 +0000</pubDate>
      <link>https://dev.to/composiodev/top-10-openclaw-plugins-to-supercharge-your-openclaw-workflows-4fpc</link>
      <guid>https://dev.to/composiodev/top-10-openclaw-plugins-to-supercharge-your-openclaw-workflows-4fpc</guid>
      <description>&lt;h2&gt;
  
  
  The Rise of OpenClaw Plugins
&lt;/h2&gt;

&lt;p&gt;If you've worked with OpenClaw, you already know Skills, the task-level instructions that let your agent send emails, query APIs, or pull live data. &lt;/p&gt;

&lt;p&gt;But plugins operate at a deeper layer. They hook into the agent's lifecycle, reshape how it reasons, authenticates, and interacts with the outside world.&lt;/p&gt;

&lt;p&gt;Though OpenClaw currently has a very limited set of official plugins, many independent devs have built some really cool plugins. &lt;/p&gt;

&lt;p&gt;And it seems OpenClaw plugins are going to get a huge push from OpenClaw.&lt;/p&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2F3aom1p2kwz94hz9b19rc.png" 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.amazonaws.com%2Fuploads%2Farticles%2F3aom1p2kwz94hz9b19rc.png" alt="X Post" width="800" height="387"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Top OpenClaw Plugins
&lt;/h2&gt;

&lt;p&gt;As an OpenClaw enthusiast, I collated some of the actually useful plugins for OpenClaw.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Composio - Connect OpenClaw with 850+ on-demand SaaS Apps&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;memU (Memory Framework) - Hierarchical Knowledge Graph That Makes Your Agent Proactive&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;SecureClaw - OWASP-Aligned Security Auditing and Runtime Hardening&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Lobster - Typed Workflow Pipelines with Approval Gates for Reliable Automation&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Memory LanceDB - Vector-Backed Long-Term Memory with Auto-Recall and Auto-Capture&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;MemOS Cloud - Cloud-Hosted Cross-Agent Memory with Async Recall and Isolation&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;OpenClaw Foundry - Self-Writing Meta-Extension That Learns and Builds Its Own Tools&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Better Gateway - Auto-Reconnect, Embedded IDE, and Browser Terminal for Stable Ops&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Voice Call - Outbound Phone Calls and Multi-Turn Voice Conversations via Twilio&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  1. Composio
&lt;/h2&gt;

&lt;p&gt;Connect OpenClaw with 850+ on-demand SaaS Apps&lt;/p&gt;

&lt;p&gt;nstead of installing individual skills for every app (Gmail, GitHub, Outlook, Notion), this single plugin connects to Composio’s managed MCP server and handles all OAuth and authentication logic automatically.&lt;/p&gt;

&lt;p&gt;This plugin is the official bridge that allows your OpenClaw agent to discover and call any SaaS tools dynamically.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pre-requisites&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Log in at dashboard.composio.dev&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose your preferred client (choose OpenClaw)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Copy your consumer key (ck_...)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2Fbbcbnrtu3fr9swo67c6u.png" 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.amazonaws.com%2Fuploads%2Farticles%2Fbbcbnrtu3fr9swo67c6u.png" alt="Install the Composio plugin" width="800" height="373"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Set OpenClaw Config&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Then, allow Composio tools in your agent's tool list. This works with any tool profile (coding, minimal, messaging, etc.). Without this step, Composio tools will only be available on the full tool profile:&lt;/p&gt;

&lt;p&gt;After setting your key and allowing the tools, restart the gateway:&lt;/p&gt;

&lt;p&gt;Result (in ~/openclaw/openclaw.json file):&lt;/p&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2Fgn47kl6xmm8vh989rolm.png" 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.amazonaws.com%2Fuploads%2Farticles%2Fgn47kl6xmm8vh989rolm.png" alt="Change the json file" width="800" height="448"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Repo: &lt;a href="https://github.com/ComposioHQ/openclaw-composio-plugin" rel="noopener noreferrer"&gt;https://github.com/ComposioHQ/openclaw-composio-plugin&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;npm: &lt;a href="https://www.npmjs.com/package/@composio/openclaw-plugin" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/@composio/openclaw-plugin&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  2. memU (Memory Framework)
&lt;/h2&gt;

&lt;p&gt;Hierarchical Knowledge Graph That Makes Your Agent Proactive&lt;/p&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2Fubbhmmotwcaeyw5scvkr.png" 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.amazonaws.com%2Fuploads%2Farticles%2Fubbhmmotwcaeyw5scvkr.png" alt="MemU" width="800" height="422"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A proactive long-term memory plugin that replaces standard flat-file memory.&lt;/p&gt;

&lt;p&gt;It builds a hierarchical knowledge graph of your preferences and projects, allowing the agent to anticipate needs rather than just reacting to prompts.&lt;/p&gt;

&lt;p&gt;Simple examples include: "You have a meeting in 10 minutes; should I pull the latest briefing?"&lt;/p&gt;

&lt;p&gt;If you want to add a robust memory layer for the agent to handle missing context, go for it.&lt;/p&gt;

&lt;p&gt;GitHub Repo: &lt;a href="https://github.com/duxiaoxiong/memu-engine-for-OpenClaw" rel="noopener noreferrer"&gt;https://github.com/duxiaoxiong/memu-engine-for-OpenClaw&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Installation&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;openclaw plugins &lt;span class="nb"&gt;install&lt;/span&gt; @memu/memu-engine
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  3. SecureClaw
&lt;/h2&gt;

&lt;p&gt;OWASP-Aligned Security Auditing and Runtime Hardening&lt;/p&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2F6w1qk2nlghcyabi18l63.png" 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.amazonaws.com%2Fuploads%2Farticles%2F6w1qk2nlghcyabi18l63.png" alt="SecureClaw Github" width="800" height="383"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The industry-standard security plugin.&lt;/p&gt;

&lt;p&gt;It hardens the agent's runtime by mapping actions to the OWASP Top 10 for Agents. It provides real-time auditing and prevents prompt injection attacks from reaching your system shell.&lt;/p&gt;

&lt;p&gt;If you are concerned about OpenClaw security while running on vm’s or locals (not recommended), this plugin can give you a sigh of relief.&lt;/p&gt;

&lt;p&gt;GitHub Repo: &lt;a href="https://github.com/adversa-ai/secureclaw" rel="noopener noreferrer"&gt;https://github.com/adversa-ai/secureclaw&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Lobster
&lt;/h2&gt;

&lt;p&gt;Typed Workflow Pipelines with Approval Gates for Reliable Automation&lt;/p&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2Fvb3299xtdjpzbsge5mdk.png" 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.amazonaws.com%2Fuploads%2Farticles%2Fvb3299xtdjpzbsge5mdk.png" alt="Lobster" width="800" height="383"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A powerful scripting plugin that turns complex multi-step skills into repeatable, typed pipelines.&lt;/p&gt;

&lt;p&gt;This means, instead of the agent "guessing" the next step, Lobster ensures high-reliability execution for production-grade automations.&lt;/p&gt;

&lt;p&gt;It does it through typed JSON-first pipelines, jobs, and approval gates &amp;amp; let OpenClaw call the workflows in one step.&lt;/p&gt;

&lt;p&gt;If you like to automate tasks using your skills, this will make your job easier than ever.&lt;/p&gt;

&lt;p&gt;GitHub Repo: &lt;a href="https://github.com/openclaw/lobster" rel="noopener noreferrer"&gt;https://github.com/openclaw/lobster&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Installation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Lobster is a bundled tool — enable it in your configuration.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Memory LanceDB
&lt;/h2&gt;

&lt;p&gt;Vector-Backed Long-Term Memory with Auto-Recall and Auto-Capture&lt;/p&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2Fi6edij32fmdv6w0w4si5.png" 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.amazonaws.com%2Fuploads%2Farticles%2Fi6edij32fmdv6w0w4si5.png" alt="Memory Lance DB" width="800" height="437"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The default memory-core plugin stores memory as flat Markdown files. memory-lancedb replaces it with a proper vector-backed long-term memory store using LanceDB.&lt;/p&gt;

&lt;p&gt;Set plugins.slots.memory = "memory-lancedb" and your agent gets auto-recall (relevant memories injected before every turn) and auto-capture (important facts stored after every turn) — without you having to manually write to MEMORY.md.&lt;/p&gt;

&lt;p&gt;It supports multiple embedding providers (OpenAI, Gemini, Ollama), includes prompt-injection detection for captured memories, and provides a CLI for searching and managing stored memories.&lt;/p&gt;

&lt;p&gt;If your agent keeps "forgetting" things between sessions or after context compaction, this is the first plugin you should install.&lt;/p&gt;

&lt;p&gt;GitHub Repo: &lt;a href="https://github.com/noncelogic/openclaw-memory-lancedb" rel="noopener noreferrer"&gt;https://github.com/noncelogic/openclaw-memory-lancedb&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  6. MemOS Cloud
&lt;/h2&gt;

&lt;p&gt;Cloud-Hosted Cross-Agent Memory with Async Recall and Isolation&lt;/p&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2Fhqs2rt5f9sxq878i4l6c.png" 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.amazonaws.com%2Fuploads%2Farticles%2Fhqs2rt5f9sxq878i4l6c.png" alt="MemOS Cloud" width="800" height="331"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;MemOS Cloud is a lifecycle plugin that recalls relevant memories from the MemOS Cloud API before each agent run and saves new conversation data after each run.&lt;/p&gt;

&lt;p&gt;It works asynchronously, supports cross-agent memory isolation via agent_id, and lets you configure limits on how many memories are injected per turn.&lt;/p&gt;

&lt;p&gt;Where memory-lancedb stores everything locally, MemOS Cloud is the right choice when you need cloud-hosted memory that persists across devices, or when you're running multi-agent setups where agents need isolated but centrally managed memory.&lt;/p&gt;

&lt;p&gt;It's a great complement to LanceDB — use LanceDB for local-first setups, and MemOS Cloud when you need cloud persistence or multi-agent coordination.&lt;/p&gt;

&lt;p&gt;GitHub Repo: &lt;a href="https://github.com/MemTensor/MemOS-Cloud-OpenClaw-Plugin" rel="noopener noreferrer"&gt;https://github.com/MemTensor/MemOS-Cloud-OpenClaw-Plugin&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  7. OpenClaw Foundry
&lt;/h2&gt;

&lt;p&gt;Self-Writing Meta-Extension That Learns and Builds Its Own Tools&lt;/p&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2Fbjil2t3rp5aj96dh5pmi.png" 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.amazonaws.com%2Fuploads%2Farticles%2Fbjil2t3rp5aj96dh5pmi.png" alt="OpenClaw Foundry" width="800" height="490"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Foundry is a self-writing meta-extension. It observes your workflows, researches the OpenClaw docs, and writes new skills, extensions, hooks, and tools directly into your setup.&lt;/p&gt;

&lt;p&gt;The self-modification loop actually works: Foundry validates generated code in a sandbox before deploying it, records patterns from successes and failures, and can even extend its own capabilities.&lt;/p&gt;

&lt;p&gt;It includes tools like&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;foundry_implement&lt;/code&gt; (end-to-end research + build),&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;foundry_write_skill&lt;/code&gt;, &lt;/li&gt;
&lt;li&gt;
&lt;code&gt;foundry_write_hook&lt;/code&gt;, &lt;/li&gt;
&lt;li&gt;and &lt;code&gt;foundry_extend_self&lt;/code&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;making it the closest thing to an agent that builds its own tools.&lt;/p&gt;

&lt;p&gt;GitHub Repo: &lt;a href="https://github.com/lekt9/openclaw-foundry" rel="noopener noreferrer"&gt;https://github.com/lekt9/openclaw-foundry&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  8. Better Gateway
&lt;/h2&gt;

&lt;p&gt;Auto-Reconnect, Embedded IDE, and Browser Terminal for Stable Ops&lt;/p&gt;

&lt;p&gt;The stock OpenClaw gateway drops WebSocket connections under load. &lt;/p&gt;

&lt;p&gt;Better Gateway fixes this with automatic reconnection, configurable retry intervals, and a status indicator that shows connection health in real time.&lt;/p&gt;

&lt;p&gt;Beyond stability, it adds a Monaco-based IDE and a full xterm.js terminal directly into the gateway UI — no extra ports, no SSH tunneling needed. Everything runs on the main gateway port.&lt;/p&gt;

&lt;p&gt;It also exposes a file API for workspace read/write/list/delete operations, making it a practical all-in-one development environment for your OpenClaw setup.&lt;/p&gt;

&lt;p&gt;If you run OpenClaw on a remote server or VPS, this plugin is essential for a smooth development experience.&lt;/p&gt;

&lt;p&gt;GitHub Repo: &lt;a href="https://github.com/ThisIsJeron/openclaw-better-gateway" rel="noopener noreferrer"&gt;https://github.com/ThisIsJeron/openclaw-better-gateway&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  9. Voice Call
&lt;/h2&gt;

&lt;p&gt;Outbound Phone Calls and Multi-Turn Voice Conversations via Twilio&lt;/p&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2F4x2gxvlq7oors59f6nwq.png" 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.amazonaws.com%2Fuploads%2Farticles%2F4x2gxvlq7oors59f6nwq.png" alt="Voice Call " width="800" height="356"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I have kept the best one for the last, and it's the most transformative plugin of the year.&lt;/p&gt;

&lt;p&gt;Voice Call moves OpenClaw beyond text by enabling outbound phone calls and multi-turn voice conversations via Twilio or Telnyx.&lt;/p&gt;

&lt;p&gt;It’s widely used for "reach me anywhere" notifications and for real-world tasks like booking appointments, as shown in YouTube/Twitter demo videos.&lt;/p&gt;

&lt;p&gt;Throw it leads, client, follow up, it handles all, with just a single setup. Game changer in voice call automations.&lt;/p&gt;

&lt;p&gt;So, if you are a business owner who has to call a lot of people, this plugin is for you.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Installation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;GitHub Repo: &lt;a href="https://github.com/openclaw/openclaw/tree/main/extensions/voice-call" rel="noopener noreferrer"&gt;https://github.com/openclaw/openclaw/tree/main/extensions/voice-call&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In case you want speed, you can check community one: &lt;a href="https://github.com/deepgram/deepclaw" rel="noopener noreferrer"&gt;VoiceClaw- DeepGram Plugin&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And with that, we have reached the end of this short, definitive plugin list.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Plugins run silently in the background, shaping how your agent thinks and responds at a system level. It’s really a more integrated experience than just skills.&lt;/p&gt;

</description>
      <category>openclaw</category>
      <category>ai</category>
      <category>productivity</category>
      <category>beginners</category>
    </item>
    <item>
      <title>How to unlock 850+ tools in OpenClaw</title>
      <dc:creator>Developer Harsh</dc:creator>
      <pubDate>Wed, 11 Mar 2026 12:48:25 +0000</pubDate>
      <link>https://dev.to/composiodev/how-to-unlock-850-tools-in-openclaw-516g</link>
      <guid>https://dev.to/composiodev/how-to-unlock-850-tools-in-openclaw-516g</guid>
      <description>&lt;h2&gt;
  
  
  OpenClaw Limitations Unlocked
&lt;/h2&gt;

&lt;p&gt;Openclaw comes with pretty limited set of tools. They are powerful but restricts a lot of functionality.&lt;/p&gt;

&lt;p&gt;What if a single one can give you access to plethora of tools that works at your command. &lt;/p&gt;

&lt;p&gt;There is a hidden benefit too - you don't have to share your credentials with open claw, making your OpenClaw workflows secure.&lt;/p&gt;

&lt;p&gt;Enter's Composio - a tool layer for OpenClaw and all ai agents that offer self-tool discovery and selection, e2e authentication and no vendor lock in.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why use it?
&lt;/h2&gt;

&lt;p&gt;Composio expand's capabilities while keeping authentication secure and data under your control. &lt;/p&gt;

&lt;p&gt;So, it's just plug and play - you plug in, connect your tools, and start building things that actually matter.&lt;/p&gt;

&lt;p&gt;Now Let's look at how to connect composio with OpenClaw in this short guide.&lt;/p&gt;




&lt;h2&gt;
  
  
  3 Ways to connect opne claw
&lt;/h2&gt;

&lt;p&gt;Here are 3 ways to connect openclaw:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Direct prompt&lt;/li&gt;
&lt;li&gt;Composio npm package&lt;/li&gt;
&lt;li&gt;MCP Porter&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let's look at how to set it up&lt;/p&gt;




&lt;h3&gt;
  
  
  1. Direct Prompt
&lt;/h3&gt;

&lt;p&gt;Best part about open claw is - it can auto execute tools and setup your tools using a single prompt. &lt;/p&gt;

&lt;p&gt;You can use that to your advantage and open up the OpenClaw dashboard chat and paste the following prompt:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Add a new MCP server called "composio" with transport type HTTP. Use the URL https://connect.composio.dev/mcp and add the header "x-consumer-api-key: your-api-key".
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Make sure to replace your-api-key with actual composio api key. You can get that by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Visiting to &lt;a href="https://dashboard.composio.dev/" rel="noopener noreferrer"&gt;Composio Dashboard&lt;/a&gt; and sign up / login.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Then heading to the &lt;strong&gt;Connect to OpenClaw&lt;/strong&gt; and copy the prompt.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2F0rcx4luggqapnn5ewwdv.png" 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.amazonaws.com%2Fuploads%2Farticles%2F0rcx4luggqapnn5ewwdv.png" alt="Reference Image" width="800" height="490"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If first time login and authenticate and you are done!&lt;/p&gt;




&lt;h3&gt;
  
  
  2. Composio npm package
&lt;/h3&gt;

&lt;p&gt;Composio recently released their open claw plugin, this mean's, no config headache, simple one liner command does it all!&lt;/p&gt;

&lt;p&gt;So, head to terminal and type:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;openclaw plugins &lt;span class="nb"&gt;install&lt;/span&gt; @composio/openclaw-plugin
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once done, setup your api key, following the steps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Log in at&amp;nbsp;&lt;a href="https://dashboard.composio.dev/" rel="noopener noreferrer"&gt;**dashboard.composio.dev&lt;/a&gt;.**&lt;/li&gt;
&lt;li&gt;Choose your preferred client (OpenClaw, Claude Code, Cursor, etc.).&lt;/li&gt;
&lt;li&gt;Copy your consumer key (&lt;code&gt;ck_...&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In terminal run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;openclaw config &lt;span class="nb"&gt;set &lt;/span&gt;plugins.entries.composio.config.consumerKey &lt;span class="s2"&gt;"ck_your_key_here"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Finally restart the gateway:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;openclaw gateway restart
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;All this does is setup the open claw configuration with consumer key in the Composio MCP.&lt;/p&gt;

&lt;p&gt;Or alternatively, you can directly setup the mcp server, for more granular control.&lt;/p&gt;




&lt;h3&gt;
  
  
  3. Using MCP Porter
&lt;/h3&gt;

&lt;p&gt;MCP Porter is OpenClaw way to use mcp-server and comes inbuild. You can activate by going to: OpenClaw Dashboard -&amp;gt; Skills -&amp;gt; Search MCP -&amp;gt; MCP Porter (Install)&lt;/p&gt;

&lt;p&gt;Note: if it doesn't open, restart the OpenClaw server.&lt;/p&gt;

&lt;p&gt;Once you do that:&lt;/p&gt;

&lt;p&gt;→ Go to home folder where OpenClaw is installed: &lt;code&gt;/home/username/.openclaw/workspace/config&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;→ Open the &lt;code&gt;mcporter.json&lt;/code&gt; in any ide and paste the following &amp;amp; save:&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;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"composio"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"baseUrl"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"url_from"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"headers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"x-api-key"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"api_key"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"imports"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;The &lt;strong&gt;url&lt;/strong&gt; and &lt;strong&gt;api&lt;/strong&gt; key are the one from the pre-require step.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;or if you want a standard input output (stdio) server setup you can use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; composio-mcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"composio"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"composio-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;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"--api-key"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"api_key"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"transport"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"stdio"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx mcporter call &lt;span class="nt"&gt;--stdio&lt;/span&gt; &lt;span class="s2"&gt;"npx @composio/mcp@latest setup https://backend.composio.dev/tool_router/&amp;lt;api-key&amp;gt;/mcp"&lt;/span&gt; &amp;lt;tool_name&amp;gt; &amp;lt;arg1&amp;gt;&lt;span class="o"&gt;=&lt;/span&gt;&amp;lt;value1&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now to make sure agent pick up the composio mcp servers perfectly you need to setup the skills file!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx skills add https://github.com/composiohq/skills &lt;span class="nt"&gt;--skill&lt;/span&gt; composio &lt;span class="nt"&gt;--yes&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now you are all setup to experience OpenClaw seamlessly.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;💡Fact: Though you can do all the steps in section through prompt in OpenClaw Dashboard (section 1), but it causes security concerns as as it stores logs that are accessible to other, if they have your agent id!&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  Summary
&lt;/h3&gt;

&lt;p&gt;Tools like open-claw seem amazing at first glance but can easily become a nightmare if not handled right - especially around security. &lt;/p&gt;

&lt;p&gt;The moment you hand broad permissions or API keys to an agent; you've opened a door you might forget, but it is even there. It doesn't know what's sensitive, it just acts. &lt;/p&gt;

&lt;p&gt;That’s where tool like &lt;a href="https://composio.dev/" rel="noopener noreferrer"&gt;Composio&lt;/a&gt; sidesteps this quietly by handling scoped access and managed credentials under the hood, so the agent does its job without holding the master keys to everything.&lt;/p&gt;

&lt;p&gt;What other approach you find safeguards your privacy and sensitive data, do share in comments!&lt;/p&gt;

</description>
      <category>openclaw</category>
      <category>opensource</category>
      <category>ai</category>
      <category>mcp</category>
    </item>
  </channel>
</rss>
