<?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: MCP Token Saver</title>
    <description>The latest articles on DEV Community by MCP Token Saver (@mcptokensaver).</description>
    <link>https://dev.to/mcptokensaver</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%2F4056301%2F58a8edd8-17f4-4bac-96e1-ed602a81e7a7.png</url>
      <title>DEV Community: MCP Token Saver</title>
      <link>https://dev.to/mcptokensaver</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mcptokensaver"/>
    <language>en</language>
    <item>
      <title>DHH's Omarchy Ships 13 AI Agents on Day One. Your Context Window Picks Up the Bill.</title>
      <dc:creator>MCP Token Saver</dc:creator>
      <pubDate>Thu, 10 Sep 2026 07:56:12 +0000</pubDate>
      <link>https://dev.to/mcptokensaver/dhhs-omarchy-ships-13-ai-agents-on-day-one-your-context-window-picks-up-the-bill-44bj</link>
      <guid>https://dev.to/mcptokensaver/dhhs-omarchy-ships-13-ai-agents-on-day-one-your-context-window-picks-up-the-bill-44bj</guid>
      <description>&lt;p&gt;This week the same name showed up in my feed for the fifth time: &lt;strong&gt;Omarchy&lt;/strong&gt; — DHH's opinionated Arch + Hyprland distribution. The numbers are absurd for a project that started as a dotfiles repo in mid-2025: roughly &lt;strong&gt;40,000 GitHub stars&lt;/strong&gt; (39,846 when I checked on Sept 10), an MIT license, a foundation with multi-million-dollar backing, DigitalOcean committing $1M a year, and an install that officially takes &lt;strong&gt;35 seconds&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;But the feature that actually matters isn't the eye candy. It's the first-boot screen.&lt;/p&gt;

&lt;p&gt;Omarchy is the first "agentic OS" to go mainstream: on day one it asks you to pick a &lt;strong&gt;default AI agent&lt;/strong&gt; — Claude Code, Codex, OpenCode, Copilot CLI, Crush, Grok, Hermes, and more. I counted the picker on the official site: &lt;strong&gt;13 agents&lt;/strong&gt;, preinstalled and wired into the system. Crash notifications get routed to your agent for diagnosis. The OS literally invites the machine to fix itself.&lt;/p&gt;

&lt;p&gt;I think this is genuinely the future. I also think there's a bill hiding under it that nobody has priced yet.&lt;/p&gt;

&lt;h2&gt;
  
  
  The evening of day one
&lt;/h2&gt;

&lt;p&gt;Here's how day one actually goes for the target audience. You install Omarchy in under a minute. You pick your agent. You're productive — and then, being the kind of person who installs an agentic OS, you start connecting &lt;strong&gt;MCP servers&lt;/strong&gt; to it. Git ops. Containers. A database client. A web fetcher. That's the whole point, right?&lt;/p&gt;

&lt;p&gt;And here's the mechanism almost nobody talks about: every MCP server you connect ships its entire tool catalog — names, descriptions, nested JSON Schema for every parameter — &lt;strong&gt;into your system prompt&lt;/strong&gt;. Not once. Every single turn of every conversation.&lt;/p&gt;

&lt;p&gt;Your context window starts each session paying a fixed cover charge before any real work happens.&lt;/p&gt;

&lt;h2&gt;
  
  
  I measured a realistic "day one" stack
&lt;/h2&gt;

&lt;p&gt;To put a number on it, I built a realistic day-one developer stack — the kind a new Omarchy user would plausibly wire up in their first evening:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;6 servers / 32 tools&lt;/strong&gt;: git operations, container control, package management, system probes, editor RPC, HTTP debugging&lt;/li&gt;
&lt;li&gt;Rendered as real MCP tool definitions and measured with &lt;strong&gt;tiktoken (cl100k_base)&lt;/strong&gt;, the same tokenizer family most of these agents use for billing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The receipt:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Stage&lt;/th&gt;
&lt;th&gt;Tokens&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Raw JSON manifests (what the model receives)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;5,359&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;After schema simplification&lt;/td&gt;
&lt;td&gt;4,655 (−13.1%)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;After simplification + compact TOON-style packing&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;3,446 (−35.7%)&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A third of the day-one tax, gone, with zero capability loss — every tool still present, just not dressed in hundreds of tokens of redundant JSON ceremony.&lt;/p&gt;

&lt;p&gt;Now scale the habit. An agentic OS that onboards you to 13 agents is also a machine that makes adding server #7, #8, #9 frictionless. The tax is linear in tools and &lt;strong&gt;billed per turn&lt;/strong&gt;. It's the only cost in AI that recurs even when you're just thinking.&lt;/p&gt;

&lt;h2&gt;
  
  
  Two wrong turns I took first
&lt;/h2&gt;

&lt;p&gt;Before measuring, I did what everyone does: blamed the model. The answers were getting lazy and generic, so I assumed the provider had quietly downgraded something. I even switched models for a week — same fog.&lt;/p&gt;

&lt;p&gt;Then I blamed context drift and started nuking sessions every morning, keeping summaries. That made it &lt;em&gt;worse&lt;/em&gt;, because a fresh session still pays the full fixed fee — I'd just multiplied how many times per day I paid it.&lt;/p&gt;

&lt;p&gt;The actual culprit was sitting in my own config: a tool manifest dressed in nested schema ceremony. Most of the weight isn't even the descriptions you can read — it's the braces, the type nesting, the repeated parameter boilerplate around every tool.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I use now
&lt;/h2&gt;

&lt;p&gt;After fixing my own config I went looking and found a small open-source project called &lt;strong&gt;mcptoon&lt;/strong&gt; (200-ish stars — genuinely tiny, which is why you've probably never seen it). It runs exactly this pipeline: simplify every tool definition, then repack what's left into a denser format. That's what produced the numbers above; I measured with its real pipeline, not a hand-rolled approximation.&lt;/p&gt;

&lt;p&gt;Honest limits: if you run &lt;strong&gt;one or two lightweight servers, you don't need any of this&lt;/strong&gt; — don't optimize a bill you're not paying. The math only starts to matter around ten-plus tools, and it gets loud fast after that.&lt;/p&gt;

&lt;h2&gt;
  
  
  The part I keep thinking about
&lt;/h2&gt;

&lt;p&gt;Omarchy is not the problem. If anything, DHH's team did the hard part: they made the agentic OS &lt;em&gt;approachable&lt;/em&gt;. The unfinished business is that the MCP ecosystem still bills you in tokens for furniture you installed once and never look at.&lt;/p&gt;

&lt;p&gt;An OS that ships 13 agents on day one deserves a manifest you've actually audited.&lt;/p&gt;

&lt;p&gt;So, honest question for anyone running an agentic setup — Omarchy or otherwise: &lt;strong&gt;how many MCP servers does your daily-driver agent carry, and do you know what its manifest costs you per turn?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I didn't know either, until I counted.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>mcp</category>
      <category>devtools</category>
      <category>llm</category>
    </item>
    <item>
      <title>MCP Tool Discovery Ate 3,384 Tokens per Turn. I Got It Down to 816 with mcptoon.</title>
      <dc:creator>MCP Token Saver</dc:creator>
      <pubDate>Wed, 09 Sep 2026 07:59:50 +0000</pubDate>
      <link>https://dev.to/mcptokensaver/mcp-tool-discovery-ate-3384-tokens-per-turn-i-got-it-down-to-816-3728</link>
      <guid>https://dev.to/mcptokensaver/mcp-tool-discovery-ate-3384-tokens-per-turn-i-got-it-down-to-816-3728</guid>
      <description>&lt;p&gt;MCP Tool Discovery Ate 3,384 Tokens per Turn. I Got It Down to 816 with mcptoon.&lt;/p&gt;

&lt;p&gt;Every time your AI Agent or coding assistant (like Claude Code or Cursor) connects to your infrastructure stack, it pays a silent "entry fee" in tokens before processing a single line of your actual prompt. &lt;/p&gt;

&lt;p&gt;I recently audited our production DevOps MCP server setup—consisting of 7 core infrastructure services (Kubernetes, Terraform, AWS, Vault, Datadog, Docker, and GitHub Actions) hosting 38 tools in total.&lt;/p&gt;

&lt;p&gt;Here is what the raw token count looked like when measured via &lt;code&gt;cl100k_base&lt;/code&gt; tiktoken:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Raw JSON Schema Manifest:  3,384 Tokens
Slim Schema Filter:        1,388 Tokens (-59.0%)
mcptoon TOON Manifest:       816 Tokens (-75.9%)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Where Did 3,384 Tokens Go?
&lt;/h3&gt;

&lt;p&gt;Most developers assume that token consumption happens when tools return large execution outputs. But the real leak happens earlier: &lt;strong&gt;in the initial tool discovery phase&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;When an agent initialises, the system prompt gets injected with massive JSON Schema manifests for every registered tool. Brackets, quotes, nested properties, and verbose &lt;code&gt;inputSchema&lt;/code&gt; boilerplate eat up thousands of tokens per request turn.&lt;/p&gt;

&lt;h3&gt;
  
  
  How I Optimized It Using mcptoon
&lt;/h3&gt;

&lt;p&gt;Instead of manually editing JSON schemas for 38 tools, I used &lt;strong&gt;mcptoon&lt;/strong&gt; (an open-source, zero-dependency CLI client for managing and compressing MCP servers).&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Slim Manifest (&lt;code&gt;mcptoon manifest --slim&lt;/code&gt;)&lt;/strong&gt;: Removes redundant outer metadata, parameter type duplication, and default key definitions while keeping basic types (&lt;code&gt;3,384 -&amp;gt; 1,388 tokens&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compact TOON Encoding (&lt;code&gt;mcptoon manifest --toon&lt;/code&gt;)&lt;/strong&gt;: Converts verbose JSON schemas into compact Token-Optimized Object Notation (&lt;code&gt;1,388 -&amp;gt; 816 tokens&lt;/code&gt;).
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Audit and compress your MCP server manifests&lt;/span&gt;
mcptoon manifest &lt;span class="nt"&gt;--slim&lt;/span&gt;
mcptoon manifest &lt;span class="nt"&gt;--toon&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you are running multi-server setups with agents, check out &lt;strong&gt;mcptoon&lt;/strong&gt; on GitHub and audit your manifest footprint before tuning your prompts!&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>ai</category>
      <category>devtools</category>
      <category>devops</category>
    </item>
    <item>
      <title>Anthropic and MuleSoft Are Now Fighting the Same Bill I've Been Complaining About</title>
      <dc:creator>MCP Token Saver</dc:creator>
      <pubDate>Tue, 08 Sep 2026 10:32:49 +0000</pubDate>
      <link>https://dev.to/mcptokensaver/anthropic-and-mulesoft-are-now-fighting-the-same-bill-ive-been-complaining-about-55cg</link>
      <guid>https://dev.to/mcptokensaver/anthropic-and-mulesoft-are-now-fighting-the-same-bill-ive-been-complaining-about-55cg</guid>
      <description>&lt;p&gt;Two weeks ago, complaining about MCP token costs made you the annoying person&lt;br&gt;
in the room. This week, Anthropic and MuleSoft both shipped features that treat&lt;br&gt;
the exact same problem as a first-class cost — and each of them picked a&lt;br&gt;
different third of the battlefield.&lt;/p&gt;

&lt;p&gt;I've been living in this battlefield for two months, building mcptoon, a 128KB&lt;br&gt;
zero-dependency CLI (it lives on PyPI) that compresses MCP payloads. So when&lt;br&gt;
the giants started aiming at the same target, I did what any reasonable&lt;br&gt;
developer does: made a map. Here it is — including the third of the&lt;br&gt;
battlefield that still has nobody on it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What just happened
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Anthropic&lt;/strong&gt; shipped two capabilities for Claude:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Advanced tool use&lt;/strong&gt; — a tool-search tool that keeps tool definitions out of
the context window until needed. Anthropic's own testing with ~58 tools
showed tool-definition tokens dropping &lt;strong&gt;85%&lt;/strong&gt;, and they now have agents
running 1,000+ tools.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Programmatic tool calling&lt;/strong&gt; — instead of handing each tool result to the
model as context, your agent writes code that calls tools and returns only
the distilled answer. Their reported case: 37% fewer tokens in a
multi-data-source analysis.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;MuleSoft&lt;/strong&gt; added MCP payload optimization to its enterprise gateway — and the&lt;br&gt;
compression format it picked is &lt;strong&gt;TOON&lt;/strong&gt;, the same token-oriented format&lt;br&gt;
mcptoon has been speaking since the summer.&lt;/p&gt;

&lt;p&gt;Three vendors. One diagnosis: &lt;strong&gt;MCP payloads are a bill, not a feature.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The map: who fights where
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Battlefield&lt;/th&gt;
&lt;th&gt;Who's on it&lt;/th&gt;
&lt;th&gt;What they fight&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Tool &lt;strong&gt;definitions&lt;/strong&gt; (the catalog)&lt;/td&gt;
&lt;td&gt;Anthropic (TST), mcptoon&lt;/td&gt;
&lt;td&gt;The "every session re-charges the full menu" tax&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tool &lt;strong&gt;orchestration&lt;/strong&gt; (how calls happen)&lt;/td&gt;
&lt;td&gt;Anthropic (PTC)&lt;/td&gt;
&lt;td&gt;The "every intermediate result becomes context" tax&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tool &lt;strong&gt;traffic&lt;/strong&gt; in transit&lt;/td&gt;
&lt;td&gt;MuleSoft (gateway)&lt;/td&gt;
&lt;td&gt;Enterprise traffic, compressed behind a gateway that runs their stack&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tool &lt;strong&gt;results&lt;/strong&gt; on the way back&lt;/td&gt;
&lt;td&gt;…nobody with a 128KB wheel&lt;/td&gt;
&lt;td&gt;The "one image tool = megabytes of base64 in context" tax&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;That last row is the gap. Every discussion about MCP cost is about what goes&lt;br&gt;
&lt;em&gt;in&lt;/em&gt; to the model — the catalog, the schemas, the orchestration. But agentic&lt;br&gt;
sessions pump &lt;strong&gt;results&lt;/strong&gt; back into context all day, and results have no&lt;br&gt;
guardrails: a screenshot tool returns base64 PNG, a search tool returns the&lt;br&gt;
full JSON envelope, a database tool returns 200 rows when you asked for 5.&lt;/p&gt;

&lt;h2&gt;
  
  
  What mcptoon does about it (and what it deliberately doesn't)
&lt;/h2&gt;

&lt;p&gt;mcptoon is result-side discipline, and it's honest about the numbers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Catalog discipline&lt;/strong&gt;: 255 tools / 50 servers list at &lt;strong&gt;71,929 → 581
tokens (−99.2%)&lt;/strong&gt; in the default compact view — schemas stay on disk, the
model sees a name index and pulls signatures on demand. (Same tax Anthropic's
tool-search tool attacks, from the client side instead of the platform side.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Result compression&lt;/strong&gt;: TOON on tool results saves &lt;strong&gt;~34% vs JSON&lt;/strong&gt; per
payload; the slim manifest format runs &lt;strong&gt;88.5% smaller&lt;/strong&gt; than raw JSON.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And one design decision I keep explaining to people: you can &lt;em&gt;not&lt;/em&gt; compress&lt;br&gt;
everything. An image generator returning base64 must never be squeezed —&lt;br&gt;
compressing it either breaks it or wastes the tokens you were trying to save.&lt;br&gt;
Result-side compression needs per-tool judgment. MuleSoft's per-tool override&lt;br&gt;
policy validated that choice from the enterprise side.&lt;/p&gt;

&lt;p&gt;What mcptoon doesn't do, on purpose: it doesn't live inside Claude's platform&lt;br&gt;
like TST/PTC (it works with any agent that speaks MCP), and it doesn't sit in a&lt;br&gt;
gateway (it's a CLI on your machine — no server, no key, no proxy process).&lt;/p&gt;

&lt;h2&gt;
  
  
  If you use Claude Code, it's a one-line install
&lt;/h2&gt;

&lt;p&gt;Claude Code users can add mcptoon from the plugin marketplace with one line —&lt;br&gt;
the plugin installs the CLI, wires the bridge into your session, and ships a&lt;br&gt;
skill that teaches the agent when to compress and when to ask for the full&lt;br&gt;
payload. No JSON editing — the thing my last three articles were collectively&lt;br&gt;
about. The exact line is in the repo's README.&lt;/p&gt;

&lt;h2&gt;
  
  
  The bill, in actual money
&lt;/h2&gt;

&lt;p&gt;The standard conversion: $3 per 1M input tokens. Assumptions stated (they&lt;br&gt;
always should be): a working day triggers ~20 catalog loads (agentic style,&lt;br&gt;
every session), 30 days a month.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;255 tools, raw catalog: 71,929 tokens → &lt;strong&gt;~$128.43/month&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;255 tools, mcptoon compact index: 581 tokens → &lt;strong&gt;~$1.05/month&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Your number depends on your session frequency — run the math with your own&lt;br&gt;
counts before believing anyone's (including mine).&lt;/p&gt;

&lt;h2&gt;
  
  
  See it on your own machine
&lt;/h2&gt;

&lt;p&gt;mcptoon installs with one command from PyPI — and its demo command installs a throwaway&lt;br&gt;
server, calls it, and prints the before/after token numbers from your own&lt;br&gt;
machine. No hand-written config, no API key, no account.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Sources: Anthropic's advanced tool use and programmatic tool calling docs&lt;br&gt;
(platform.claude.com), MuleSoft's MCP payload optimization policy&lt;br&gt;
(docs.mcp.mulesoft.com), and mcptoon's own measured benchmarks (tiktoken,&lt;br&gt;
cl100k_base). The full battle map lives in the README.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>mcp</category>
      <category>llm</category>
      <category>devtools</category>
    </item>
    <item>
      <title>Before I Type a Word, My Agent Burns 8,248 Tokens</title>
      <dc:creator>MCP Token Saver</dc:creator>
      <pubDate>Mon, 07 Sep 2026 03:40:04 +0000</pubDate>
      <link>https://dev.to/mcptokensaver/before-i-type-a-word-my-agent-burns-8248-tokens-509c</link>
      <guid>https://dev.to/mcptokensaver/before-i-type-a-word-my-agent-burns-8248-tokens-509c</guid>
      <description>&lt;p&gt;Last Tuesday night I was five messages into a refactor with Claude Code. It had just suggested a helper function, I asked it to wire up the call sites, and by then it had already forgotten the signature it wrote in message two. I opened a fresh session, repeated the prompt, everything worked. An hour later the amnesia came back in a different file.&lt;/p&gt;

&lt;h2&gt;
  
  
  First suspect: my own config
&lt;/h2&gt;

&lt;p&gt;The project &lt;code&gt;CLAUDE.md&lt;/code&gt; had grown into a hedge, so I cut it in half and stripped the style guide down to three lines. Then I checked the context meter of a brand new session, zero messages typed. The idle count sat at &lt;strong&gt;8,248&lt;/strong&gt; tokens. An empty conversation burning that much points at something the client sends before I say anything.&lt;/p&gt;

&lt;h2&gt;
  
  
  Second suspect: the MCP servers
&lt;/h2&gt;

&lt;p&gt;I run a mid-fat local stack: sqlite, git, fetch, memory, search, scheduler, translator, fsops. Eight servers, &lt;strong&gt;48 tools&lt;/strong&gt;. I disconnected them one by one and watched the idle count after each restart. Every disconnect knocked a few hundred off, and even with everything unplugged the number never went near zero. At that point I was ready to quit MCP entirely and go back to pasting code by hand.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reading the traffic instead of guessing
&lt;/h2&gt;

&lt;p&gt;I pointed a local proxy at the client and dumped the first request of that empty session. The &lt;code&gt;messages&lt;/code&gt; array was empty, literally &lt;code&gt;[]&lt;/code&gt;. The &lt;code&gt;tools&lt;/code&gt; array was not. Every one of those 48 tool definitions arrived wrapped in full JSON Schema: &lt;code&gt;"type": "object"&lt;/code&gt;, &lt;code&gt;properties&lt;/code&gt;, &lt;code&gt;required&lt;/code&gt;, plus a friendly paragraph of description for each argument. I ran &lt;code&gt;tiktoken&lt;/code&gt; (cl100k_base) over that field alone. &lt;strong&gt;8,248&lt;/strong&gt; tokens. Per request. Before the first character I type.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"object"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"properties"&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;"repo"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"string"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"description"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Repository name..."&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;"path"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"string"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"description"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"File path inside..."&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;"required"&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;"repo"&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;&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%2Fwtbkoehstjv8m21zpuk3.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%2Fwtbkoehstjv8m21zpuk3.png" alt="Three-step diagram: every tool ships JSON Schema, every turn resends the catalog, an empty session opens 8,248 tokens deep - mcptoon repacks it to 4,192" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The model re-reads that catalog on every call, every turn, every session. The "forgetfulness" finally made sense: a fifth of my working window was spent holding JSON the conversation never touches.&lt;/p&gt;

&lt;h2&gt;
  
  
  Does a model actually need the braces?
&lt;/h2&gt;

&lt;p&gt;I repacked the same 48 definitions with mcptoon's pipeline: schema simplification plus its compact pipe notation, one line per field, all 48 tools kept, nothing truncated. Same information, &lt;strong&gt;4,192&lt;/strong&gt; tokens. 49% of the original bill, and the model still received every tool with every field name it needs to make a call. I re-ran my sessions against the compact manifest: tool choice and arguments still landed right, including the annoying nested-object ones.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;measured: 8 servers / 48 tools / tiktoken cl100k_base
raw JSON manifest ....... 8,248 tokens
mcptoon (simplify+slim) . 4,192 tokens  (-49%)
&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Femur1rn2iaygrnx26zce.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%2Femur1rn2iaygrnx26zce.png" alt="Measured benchmark: raw JSON manifest 8,248 tokens versus mcptoon 4,192 tokens, -49 percent" width="800" height="448"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One honest note about the size of the cut: how much you save depends on how bloated your schemas are. Documented, human-readable schemas like mine land around half. Flatter, machine-generated schemas compress much harder. Your number is between those poles, and the only way to know is to measure your own manifest.&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%2Ftpbsde4xg68frkyr1ldv.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%2Ftpbsde4xg68frkyr1ldv.png" alt="Format comparison: raw JSON braces versus mcptoon compact notation, same information at half the size" width="800" height="448"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The treasure at the end of the search
&lt;/h2&gt;

&lt;p&gt;After fixing my setup I went to GitHub to see who else had hit this. Found &lt;strong&gt;mcptoon&lt;/strong&gt;. Around two hundred stars, zero dependencies, pure stdlib Python, and it does exactly this one job: it re-serves your MCP tool manifest in a compact form any MCP client can consume. For a job this narrow, the polish is ahead of the star count.&lt;/p&gt;

&lt;p&gt;Fair limits: if your stack is one or two servers with a dozen tools, this tax is pocket change and not worth an evening. If you run a heavier stack and your empty sessions open heavy, audit the &lt;code&gt;tools&lt;/code&gt; field before you blame the model.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Question for the comments:&lt;/strong&gt; what does your context meter read on an empty session, before you type anything? Drop the number. Curious what a normal idle bill looks like across setups.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>mcp</category>
      <category>devtools</category>
    </item>
    <item>
      <title>The 72,000-Token Invisible Tax: What Really Happens When You Load 10 MCP Servers</title>
      <dc:creator>MCP Token Saver</dc:creator>
      <pubDate>Sat, 05 Sep 2026 08:27:51 +0000</pubDate>
      <link>https://dev.to/mcptokensaver/the-72000-token-invisible-tax-what-really-happens-when-you-load-10-mcp-servers-2ml4</link>
      <guid>https://dev.to/mcptokensaver/the-72000-token-invisible-tax-what-really-happens-when-you-load-10-mcp-servers-2ml4</guid>
      <description>&lt;h1&gt;
  
  
  The 72,000-Token Invisible Tax: What Really Happens When You Load 10 MCP Servers
&lt;/h1&gt;

&lt;p&gt;If you've been using Claude Code, Cursor, Windsurf, or Codex CLI with MCP (Model Context Protocol) servers, you might have noticed something strange lately:&lt;/p&gt;

&lt;p&gt;Even on a brand new, empty turn — before you write a single line of code — your context window is already packed, response latency feels sluggish, and your token burn rate is higher than expected.&lt;/p&gt;

&lt;p&gt;We measured the exact payload across 50 production MCP servers. Here is what we found, why it happens, and how modern token compression drops that overhead by 99.8%.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Measurement: Where Did 71,929 Tokens Go?
&lt;/h2&gt;

&lt;p&gt;When you connect an MCP server to an AI host, the client requests the tools schema via &lt;code&gt;tools/list&lt;/code&gt;. The server returns JSON schemas describing each tool, parameter types, nested objects, and documentation strings.&lt;/p&gt;

&lt;p&gt;Here is the measurement from 10 common MCP servers in a typical developer workflow:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;File system toolset: ~4,200 tokens&lt;/li&gt;
&lt;li&gt;Git / GitHub integration: ~8,800 tokens&lt;/li&gt;
&lt;li&gt;Database / PostgreSQL introspection: ~12,400 tokens&lt;/li&gt;
&lt;li&gt;Terminal / Shell execution: ~3,100 tokens&lt;/li&gt;
&lt;li&gt;Web search / scraper toolsets: ~14,500 tokens&lt;/li&gt;
&lt;li&gt;API &amp;amp; Slack notification wrappers: ~28,900 tokens&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Total uncompressed payload injected on every conversation turn: 71,929 tokens.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you are paying typical API pricing on top-tier frontier models (such as Claude 3.7 Sonnet at $3.00 / million input tokens), this baseline schema injection costs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;$0.21 per turn just for the tool definitions&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Over 100 turns in an intensive coding session: &lt;strong&gt;$21.00 wasted on unchanging tool definitions&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;More importantly, it robs your agent of working memory.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why JSON Schema Is the Wrong Format for LLM Context
&lt;/h2&gt;

&lt;p&gt;JSON Schema was built for deterministic validation in distributed REST APIs, not for autoregressive language model attention heads.&lt;/p&gt;

&lt;p&gt;It is notoriously verbose:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Repetitive punctuation &amp;amp; syntax keys&lt;/strong&gt;: &lt;code&gt;"type": "string"&lt;/code&gt;, &lt;code&gt;"properties": { ... }&lt;/code&gt;, &lt;code&gt;"required": [...]&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deep nesting&lt;/strong&gt;: Up to 6 levels of curly braces and indentation for simple parameters.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Type boilerplate&lt;/strong&gt;: A simple function taking a filename and integer line number takes 40+ tokens of raw JSON.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;LLMs don't need JSON validation schemas to understand how to call a tool; they understand compact functional signatures:&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="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;execute_query&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sql&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;timeout_ms&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;5000&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;dict&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  The Compact Schema Solution: Dropping from 71,929 to 124 Tokens
&lt;/h2&gt;

&lt;p&gt;By applying AST schema distillation and compact schema projection (an open-source approach implemented in the &lt;code&gt;mcptoon&lt;/code&gt; tool), you don't send the raw multi-thousand-line JSON.&lt;/p&gt;

&lt;p&gt;Instead, the client compiles the tool definitions into a compacted representation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Strips redundant schema wrappers&lt;/li&gt;
&lt;li&gt;Inlines type annotations&lt;/li&gt;
&lt;li&gt;Prunes inactive parameter descriptions on initial load&lt;/li&gt;
&lt;li&gt;On-demand hydrates full schemas only when the tool is actively selected by the model&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The Results:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Uncompressed schema&lt;/strong&gt;: 71,929 tokens&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compacted schema&lt;/strong&gt;: &lt;strong&gt;124 tokens&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Token reduction&lt;/strong&gt;: &lt;strong&gt;-99.8%&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Latency improvement&lt;/strong&gt;: Time-to-first-token (TTFT) dropped by 64% in our local benchmarks.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Key Lessons for Agent Builders
&lt;/h2&gt;

&lt;p&gt;If you are designing agentic systems or orchestrating multiple MCP servers:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Audit your tool payload size&lt;/strong&gt;: Run a token counter on your &lt;code&gt;tools/list&lt;/code&gt; response. You might be surprised at how much dead weight is being transmitted.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Avoid dumping raw schemas&lt;/strong&gt;: Use functional representations or deferred schema resolution.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Preserve context budget for actual thinking&lt;/strong&gt;: The model does its best reasoning when the context is clean and focused on code, not schema boilerplate.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;How are you handling tool payload bloat in your multi-server MCP setups? Would love to hear other strategies in the comments below.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>mcp</category>
      <category>programming</category>
      <category>claudecode</category>
    </item>
    <item>
      <title>Your MCP Tool List Costs $6.50/Month in Pure Waste — Here's the Fix</title>
      <dc:creator>MCP Token Saver</dc:creator>
      <pubDate>Fri, 04 Sep 2026 07:44:09 +0000</pubDate>
      <link>https://dev.to/mcptokensaver/your-mcp-tool-list-costs-650month-in-pure-waste-heres-the-fix-1gbk</link>
      <guid>https://dev.to/mcptokensaver/your-mcp-tool-list-costs-650month-in-pure-waste-heres-the-fix-1gbk</guid>
      <description>&lt;h1&gt;
  
  
  Your MCP Tool List Costs $6.50/Month in Pure Waste — Here's the Fix
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;Every time you open a new session, your client re-bills you for the same tool manifest.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Full disclosure:&lt;/strong&gt; I'm one of the maintainers of mcptoon. Every number below comes from a real benchmark (tiktoken cl100k_base), not a pitch deck.&lt;/p&gt;

&lt;h2&gt;
  
  
  The invisible bill that recurs every session
&lt;/h2&gt;

&lt;p&gt;Anyone using Claude, Cursor, or any agent has felt it: more tools installed → conversations get pricier, slower, and fill up faster.&lt;/p&gt;

&lt;p&gt;The problem isn't the tools. It's a line item almost nobody looks at — &lt;strong&gt;the tool manifest&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Every session, the client stuffs the complete manifest of every MCP server into context. In JSON, that list runs tens of thousands of tokens — &lt;strong&gt;and it gets re-billed every time you start a new session&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Measured on 255 tools / 50 servers:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Raw JSON manifest&lt;/th&gt;
&lt;th&gt;Tokens&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;Full manifest&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;71,929&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Recharged every session&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;In money&lt;/td&gt;
&lt;td&gt;≈ $0.22/session&lt;/td&gt;
&lt;td&gt;@ $3/M input&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;30 sessions/day&lt;/td&gt;
&lt;td&gt;≈ &lt;strong&gt;$6.50/month&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Pure manifest tax — zero tool calls&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Pure waste. Your agent isn't using those 70k tokens; it just has to "read the whole name list" before it can start.&lt;/p&gt;

&lt;h2&gt;
  
  
  A name directory that costs 124 tokens
&lt;/h2&gt;

&lt;p&gt;mcptoon slims that 70k-token JSON into a plain &lt;strong&gt;name directory&lt;/strong&gt;. Same config:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Format&lt;/th&gt;
&lt;th&gt;Tokens&lt;/th&gt;
&lt;th&gt;Savings&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Raw JSON&lt;/td&gt;
&lt;td&gt;71,929&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;--slim&lt;/code&gt; (trimmed params)&lt;/td&gt;
&lt;td&gt;8,282&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;−88.5%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;--compact&lt;/code&gt; (names only)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;124&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;−99.8%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Measured on a real 255-tool / 50-server config (tiktoken cl100k_base). Reproduce on your machine: &lt;code&gt;mcptoon manifest --compact --tokens&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Verify it yourself in 30 seconds
&lt;/h2&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;mcptoon &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; mcptoon demo
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;mcptoon demo&lt;/code&gt; prints the token numbers for JSON vs. mcptoon format, using your own servers, on your own box.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why saving tokens is worth it
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Long conversations stop filling up so fast.&lt;/strong&gt; Room a 70k-token manifest used = several more rounds.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multiple agents, one source of truth.&lt;/strong&gt; One config (&lt;code&gt;~/.mcptoon/config.json&lt;/code&gt;) for all clients; &lt;code&gt;sync&lt;/code&gt; pushes to all in seconds.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Install more tools without the fear.&lt;/strong&gt; Context bloat fears disappear once the list is slim.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Zero dependencies (pure Python stdlib, ~250KB), open source (Apache-2.0), Windows / macOS / Linux, blocks injection and credential leaks.&lt;/p&gt;

&lt;p&gt;Asking "what tools do I have?" shouldn't cost 70,000 tokens.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Benchmark&lt;/strong&gt;: &lt;code&gt;projects/mcptoon/assets/benchmark_tiktoken.json&lt;/code&gt; (tiktoken cl100k_base)&lt;br&gt;
&lt;strong&gt;GitHub&lt;/strong&gt;: github.com/activeing123/mcptoon&lt;br&gt;
&lt;strong&gt;Install&lt;/strong&gt;: &lt;code&gt;pip install mcptoon &amp;amp;&amp;amp; mcptoon demo&lt;/code&gt;&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>ai</category>
      <category>devtools</category>
      <category>claude</category>
    </item>
    <item>
      <title>I Spent an Entire Release on the First 30 Seconds</title>
      <dc:creator>MCP Token Saver</dc:creator>
      <pubDate>Wed, 02 Sep 2026 07:08:01 +0000</pubDate>
      <link>https://dev.to/mcptokensaver/i-spent-an-entire-release-on-the-first-30-seconds-5he5</link>
      <guid>https://dev.to/mcptokensaver/i-spent-an-entire-release-on-the-first-30-seconds-5he5</guid>
      <description>&lt;p&gt;Version 0.7.2 of mcptoon adds no new token compression. No new spec support. No new agent integrations. The whole release is about what happens in the thirty seconds after somebody types &lt;code&gt;pip install mcptoon&lt;/code&gt;, and a contributor friend of mine thinks that is a wasted release. I think it is the highest-leverage thing I shipped all month.&lt;/p&gt;

&lt;p&gt;Here is the reasoning. A developer tools project lives or dies on its first run. Not the docs, not the benchmark table, the first run. People paste one command, watch the output, and their brain quietly votes keep or delete. If that first run ends in a config error, the tab closes and the repo becomes another star they forgot about. My earlier quickstart was functional and completely forgettable, which in practice means the same thing as broken.&lt;/p&gt;

&lt;p&gt;So 0.7.2 rebuilt the first run around three moments.&lt;/p&gt;

&lt;p&gt;The install got shorter. There are now one-line installers for every common platform:&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/activeing123/mcptoon/main/install.sh | bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;irm&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;https://raw.githubusercontent.com/activeing123/mcptoon/main/install.ps1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;iex&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The shell script tries pipx first, falls back to pip --user, and if the system Python is distro-managed (the PEP 668 externally-managed-environment wall) it builds a venv on its own. The Windows script finds the py launcher, fixes PATH when it can, and tells you honestly when it cannot. Both end by launching quickstart for you, so the installer is not a dead end.&lt;/p&gt;

&lt;p&gt;The quickstart got a payoff. When setup finishes, it closes with the actual count from your machine: N tools ready across M servers, followed by exactly two commands worth running next, &lt;code&gt;sync&lt;/code&gt; to write the configs into every agent and &lt;code&gt;serve&lt;/code&gt; to expose everything as one stdio gateway. That is the celebration screen. If you are scripting and think party output is nonsense, &lt;code&gt;--dry&lt;/code&gt; keeps it sober, plain next-steps only. The celebration is earned, not decorative: it only prints real numbers it just counted on your disk.&lt;/p&gt;

&lt;p&gt;The demo got a punchline. &lt;code&gt;mcptoon demo&lt;/code&gt; used to open with a table, which is the correct format for verification and the wrong format for a first impression. Now it leads with one plain sentence, something like: SAME data, 99 percent fewer tokens, 12,400 to 117. Then the detailed table for people who want to check the math. Then a "Now you can" checklist. The order matters. The headline number is computed live from your own servers, so it is not a marketing claim I typed, it is a measurement your machine just made.&lt;/p&gt;

&lt;p&gt;That last point is the whole philosophy of the release, so let me be precise about it. I did not add these numbers to make the tool feel bigger. I added them so the user never has to take my word for anything. The demo runs before and after on the user's actual config, with the user's actual servers, using the same tokenizer both times. If the number is unimpressive on your setup, the tool tells you so on your screen, and you can uninstall with two minutes lost. That honesty did more for the project than any feature list.&lt;/p&gt;

&lt;p&gt;The honest limits of the release itself: the celebration screen is cosmetic and skips cleanly with --dry, the installers assume common layouts and will not handle exotic Python setups, the PEP 668 fallback targets distro-managed Pythons specifically, and demo percentages still vary by tokenizer, expect 10 to 25 percent difference from what your provider bills. The new flows carry their own fresh test file, and everything else in the suite stays green.&lt;/p&gt;

&lt;p&gt;Compression, spec support, agent coverage, those features got people to install. The first thirty seconds decide whether they stay. One release for thirty seconds is a trade I will make every time.&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>ai</category>
      <category>devtools</category>
      <category>cli</category>
    </item>
    <item>
      <title>I Shipped a Plugin That Teaches Your AI Agent to Manage Its Own MCP Config</title>
      <dc:creator>MCP Token Saver</dc:creator>
      <pubDate>Wed, 02 Sep 2026 04:06:00 +0000</pubDate>
      <link>https://dev.to/mcptokensaver/i-shipped-a-plugin-that-teaches-your-ai-agent-to-manage-its-own-mcp-config-3bj1</link>
      <guid>https://dev.to/mcptokensaver/i-shipped-a-plugin-that-teaches-your-ai-agent-to-manage-its-own-mcp-config-3bj1</guid>
      <description>&lt;p&gt;Your agent uses tools every day, but it has no idea how the plumbing works. Ask it why your MCP setup burns 70K tokens of schemas per turn and it will guess. Ask it to wire a new server into five agent configs and it will edit the wrong file, or worse, the right file in the wrong shape.&lt;/p&gt;

&lt;p&gt;That is a skills gap, not an intelligence gap. So with mcptoon 0.7.2 we shipped the fix as a plugin: three SKILL.md files that ride along as MCP prompts, teaching any agent how to drive mcptoon — connect, author, triage. mcptoon eats its own dog food here: the skills are installed and served through mcptoon's own plugin system.&lt;/p&gt;

&lt;h2&gt;
  
  
  The install is now one line
&lt;/h2&gt;

&lt;p&gt;The whole onboarding used to assume you were comfortable with pip and a README walk. Version 0.7.2 collapses it:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;macOS / Linux / WSL:&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;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://raw.githubusercontent.com/activeing123/mcptoon/main/install.sh | bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Windows (PowerShell):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;irm&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;https://raw.githubusercontent.com/activeing123/mcptoon/main/install.ps1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;iex&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The script picks the best available path (pipx, then pip --user, then a PEP 668-safe venv on macOS where the system Python refuses global installs), fixes PATH if needed, and hands off straight to &lt;code&gt;mcptoon quickstart&lt;/code&gt;. You end the one-liner staring at a list of your own MCP tools.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quickstart now ends with the payoff
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;mcptoon quickstart&lt;/code&gt; adopts your existing setup — it scans the agents you already configured and lists every tool it finds, so nothing gets re-entered. In 0.7.2 it closes with the number that matters:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;🎉 255 tools ready across 8 servers!

Now you can:
  mcptoon sync      # write configs into every agent
  mcptoon serve     # expose all servers as one stdio gateway
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;sync&lt;/code&gt; writes native-format configs into each detected agent — merging, never overwriting, so your hand-tuned entries survive. &lt;code&gt;serve&lt;/code&gt; turns the whole pile into one stdio gateway, which is where the token compression pays off: tool listings drop by up to 99% once agents read the compressed manifest instead of the raw schemas.&lt;/p&gt;

&lt;h2&gt;
  
  
  The skills plugin: three files, one command
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;mcptoon plugin &lt;span class="nb"&gt;install&lt;/span&gt; ~/.mcptoon/plugins/mcptoon-skills
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What the agent gets:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;connect&lt;/strong&gt; — how to inspect an existing setup, run &lt;code&gt;quickstart&lt;/code&gt;/&lt;code&gt;sync&lt;/code&gt;, and verify configs landed correctly&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;authoring&lt;/strong&gt; — how to write the compressed manifest format and when compression is worth it&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;triage&lt;/strong&gt; — how to debug a failing MCP server: health checks, config drift, restart semantics&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;They are exposed through &lt;code&gt;mcptoon serve&lt;/code&gt; as MCP prompts, so any connected agent can pull them in on demand. No new tool calls, no extra config files — the knowledge arrives through the same channel the tools do.&lt;/p&gt;

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



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# 1 · one-line install (about 250KB, pure standard library, zero dependencies)&lt;/span&gt;
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://raw.githubusercontent.com/activeing123/mcptoon/main/install.sh | bash

&lt;span class="c"&gt;# 2 · see the savings on your own setup before committing to anything&lt;/span&gt;
mcptoon demo

&lt;span class="c"&gt;# 3 · give your agent the manual&lt;/span&gt;
mcptoon plugin &lt;span class="nb"&gt;install&lt;/span&gt; ~/.mcptoon/plugins/mcptoon-skills
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The suite behind it runs 610 tests, green in CI. It is a local CLI, not a service — nothing leaves your machine.&lt;/p&gt;

&lt;p&gt;Your agent was never missing intelligence. It was missing the manual. Now the manual ships with the toolbox.&lt;/p&gt;

</description>
      <category>mcptoon</category>
      <category>ai</category>
      <category>mcp</category>
    </item>
    <item>
      <title>Everyone Agreed What an AI Plugin Is. Nobody Said How to Install It.</title>
      <dc:creator>MCP Token Saver</dc:creator>
      <pubDate>Tue, 01 Sep 2026 02:43:06 +0000</pubDate>
      <link>https://dev.to/mcptokensaver/everyone-agreed-what-an-ai-plugin-is-nobody-said-how-to-install-it-2e6g</link>
      <guid>https://dev.to/mcptokensaver/everyone-agreed-what-an-ai-plugin-is-nobody-said-how-to-install-it-2e6g</guid>
      <description>&lt;p&gt;Amazon, Cursor, Microsoft, OpenAI and Vercel do not agree on much. Last week they all put their names on the same thing: the Agent Plugins Specification 1.0.0, one standard way to package a plugin for AI agents. A folder. A &lt;code&gt;plugin.json&lt;/code&gt; at the top, a &lt;code&gt;skills/&lt;/code&gt; directory beside it, an &lt;code&gt;mcp.json&lt;/code&gt; for the tools.&lt;/p&gt;

&lt;p&gt;That part needed doing. Before this, every vendor shipped its own flavor of "plugin" and you translated between the flavors by hand.&lt;/p&gt;

&lt;p&gt;Here is the part that gets me. The spec covers packaging only, and it says so right in its own scope. Installation? Distribution? Getting one plugin into the five agent configs you already maintain? Out of scope. The spec draws a clean box around what a plugin is, then stops at the edge of the box.&lt;/p&gt;

&lt;p&gt;So I did the math on my own machine. Five agents, one plugin. The manual way is five config files in five different shapes, five chances to fumble a path, five restarts, and an uninstall that turns into an archaeology project across all five. The industry standardized the box, then left everyone standing in the parking lot with no truck to ship it in.&lt;/p&gt;

&lt;p&gt;mcptoon 0.7.1 fills that gap. Same idea the CLI has always had, write every agent's native config for you, now pointed at the new plugin format.&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%2Fuctzy5v6v47x8y58a6n7.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%2Fuctzy5v6v47x8y58a6n7.png" alt="One install, every agent: the spec defines the package, mcptoon ships the installer" width="800" height="312"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Four commands
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;mcptoon plugin scan &amp;lt;&lt;span class="nb"&gt;dir&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;      &lt;span class="c"&gt;# validate a plugin package (read-only)&lt;/span&gt;
mcptoon plugin &lt;span class="nb"&gt;install&lt;/span&gt; &amp;lt;&lt;span class="nb"&gt;dir&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;   &lt;span class="c"&gt;# install into mcptoon + every synced agent&lt;/span&gt;
mcptoon plugin list            &lt;span class="c"&gt;# what is installed&lt;/span&gt;
mcptoon plugin remove &amp;lt;name&amp;gt;   &lt;span class="c"&gt;# remove everywhere&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;scan validates. install propagates. list shows what landed where. remove pulls it back out of every config it touched.&lt;/p&gt;

&lt;p&gt;install is the one worth studying, because it makes three decisions a naive installer would get wrong.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Variables get resolved before they reach an agent.&lt;/strong&gt; Plugin packages reference &lt;code&gt;${PLUGIN_ROOT}&lt;/code&gt; and &lt;code&gt;${PLUGIN_DATA}&lt;/code&gt;, and the spec assumes the loading agent will expand them. Most agents cannot. That is exactly why the gap exists. mcptoon is the installer, so it expands both variables into absolute paths itself and writes plain paths into every agent config. No agent ever sees a variable it cannot understand. When mcptoon launches a plugin's stdio server, it injects the same two names as environment variables, so spec-compliant plugins work both ways.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Remove reaches everywhere install reached.&lt;/strong&gt; &lt;code&gt;plugin remove&lt;/code&gt; does not just delete a folder. It prunes the namespaced &lt;code&gt;plugin:server&lt;/code&gt; entries out of every agent config the install touched. One thing it keeps on purpose: the plugin's data directory under &lt;code&gt;~/.mcptoon/plugins-data/&lt;/code&gt;. The spec asks for persistent plugin data, so a cache survives an upgrade or a &lt;code&gt;--force&lt;/code&gt; reinstall. Delete that folder yourself if you want a truly clean slate.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Validation fails closed.&lt;/strong&gt; &lt;code&gt;plugin scan&lt;/code&gt; checks the manifest against a closed schema. Unknown fields get rejected. Commands must be a single token. Remote URLs must be HTTPS unless they point at loopback. Credentials in headers get refused. Path escapes like &lt;code&gt;../&lt;/code&gt; get refused. A package that fails scan never reaches an agent config.&lt;/p&gt;

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



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# 1 · install (about 250KB, pure standard library, zero dependencies)&lt;/span&gt;
pip &lt;span class="nb"&gt;install &lt;/span&gt;mcptoon

&lt;span class="c"&gt;# 2 · validate any Agent Plugins package, no side effects&lt;/span&gt;
mcptoon plugin scan ./my-plugin

&lt;span class="c"&gt;# 3 · install it into every agent you have synced&lt;/span&gt;
mcptoon plugin &lt;span class="nb"&gt;install&lt;/span&gt; ./my-plugin
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Because plugins land in the same config as every other MCP server, they inherit everything mcptoon already does. The compressed manifest that saves up to 99.8 percent of tool-listing tokens. &lt;code&gt;mcptoon call&lt;/code&gt;. &lt;code&gt;mcptoon health&lt;/code&gt;. Version 0.7.1 also picked up stdio cwd support along the way, so a plugin server can declare its own working directory.&lt;/p&gt;

&lt;h2&gt;
  
  
  The honest limits
&lt;/h2&gt;

&lt;p&gt;This is an installer, not a marketplace. There is no registry search yet, you install from a directory you already have. The validator rejects anything the spec does not define, which is the point, but it also means creative non-standard packages bounce. Data directories persist by design. Cold starts on stdio servers still cost a few hundred milliseconds each.&lt;/p&gt;

&lt;p&gt;The suite behind all of this is 610 tests, green in CI, plus a 19-point livefire run against real agent configs.&lt;/p&gt;

&lt;p&gt;The vendors settled what a plugin is. Getting it onto every agent on your machine used to be your problem. Now it is one command.&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>ai</category>
      <category>devtools</category>
      <category>mcptoon</category>
    </item>
    <item>
      <title>Stop Rewiring Your House Every Time You Buy a Lamp</title>
      <dc:creator>MCP Token Saver</dc:creator>
      <pubDate>Mon, 31 Aug 2026 09:39:18 +0000</pubDate>
      <link>https://dev.to/mcptokensaver/stop-rewiring-your-house-every-time-you-buy-a-lamp-2h7l</link>
      <guid>https://dev.to/mcptokensaver/stop-rewiring-your-house-every-time-you-buy-a-lamp-2h7l</guid>
      <description>&lt;p&gt;When you buy a new lamp, you plug it into the wall. You do not call an electrician, you do not open the walls, and you do not rewire the house. The socket was built once, and everything you own just works with it.&lt;/p&gt;

&lt;p&gt;Now look at how most people add one MCP tool to their AI agents. Claude Desktop needs &lt;code&gt;claude_desktop_config.json&lt;/code&gt;. Claude Code wants &lt;code&gt;.claude.json&lt;/code&gt;. Cursor reads &lt;code&gt;.cursor/mcp.json&lt;/code&gt;. Cline and Windsurf have their own shapes too. One new tool means four edits, four restarts, and four chances to get a path or an environment variable wrong. We rewire the house for every lamp, and we act like that is normal.&lt;/p&gt;

&lt;p&gt;mcptoon takes the power strip approach instead. One config file, one command, and every agent on your machine shares the same set of tools. This week it got a new hero image on GitHub showing exactly that: plug your MCP tools in once, and Claude, Cursor, Codex or any agent can use them. No config, no restarts.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three steps, any OS, no configuration
&lt;/h2&gt;

&lt;p&gt;The whole onboarding now fits in three 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="c"&gt;# 1 · install&lt;/span&gt;
pip &lt;span class="nb"&gt;install &lt;/span&gt;mcptoon

&lt;span class="c"&gt;# 2 · plug in — auto-discovers tools you already configured&lt;/span&gt;
mcptoon quickstart

&lt;span class="c"&gt;# 3 · see it work on your own machine — no trust required&lt;/span&gt;
mcptoon demo
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;pip install mcptoon&lt;/code&gt; pulls about 250KB of pure Python standard library. Zero dependencies, which means the supply chain you are installing is readable and small. &lt;code&gt;quickstart&lt;/code&gt; scans the agents you already set up and lists every tool it finds, so nothing needs to be re-entered. &lt;code&gt;sync&lt;/code&gt; then writes native config into each agent it detects, merging instead of overwriting, so your hand-tuned servers stay untouched.&lt;/p&gt;

&lt;p&gt;Step 3 is the one I care about most. &lt;code&gt;mcptoon demo&lt;/code&gt; runs a live comparison on your own machine: the tool list as raw JSON next to the compressed name index, with real token counts from your actual servers. No screenshots, no numbers you have to take on faith. Watch the list shrink, then decide. If it does not impress you, uninstall and you have lost two minutes.&lt;/p&gt;

&lt;h2&gt;
  
  
  What changed this week under the hood
&lt;/h2&gt;

&lt;p&gt;Version 0.7.0 landed with full support for the newest MCP spec (2026-07-28), and the details matter for anyone running servers across flaky laptops and long sessions.&lt;/p&gt;

&lt;p&gt;Stateless auto-negotiation means mcptoon figures out what a server speaks on first contact and adapts, including probing with &lt;code&gt;server/discover&lt;/code&gt; for servers on the new spec while staying fully compatible with older ones. Structured tool output is parsed natively instead of dumped as text.&lt;/p&gt;

&lt;p&gt;The interesting part is MRTR, multi round-trip. Some tools need several exchanges to finish one job. mcptoon 0.7.0 adds a &lt;code&gt;--request-state&lt;/code&gt; flag, and the retry hint carries a state token, so a tool call that gets interrupted by a restart or a reconnect can resume where it stopped instead of starting over. If you have ever lost a ten-minute tool result because your laptop went to sleep, that is the fix.&lt;/p&gt;

&lt;p&gt;The README now also carries an MCP Registry ownership marker (&lt;code&gt;io.github.activeing123/mcptoon&lt;/code&gt;), so registry entries can verify who actually owns the package. Small thing, but it is the kind of provenance hygiene a healthy ecosystem needs. The test suite is at 569 and green in CI.&lt;/p&gt;

&lt;h2&gt;
  
  
  The honest limits
&lt;/h2&gt;

&lt;p&gt;No tool is magic, and the README says so out loud.&lt;/p&gt;

&lt;p&gt;The compact manifest is names only. It tells your agent what exists, not every parameter detail, and full JSON stays one flag away when a call needs exactness. Token counts vary by tokenizer, so expect 10 to 25 percent difference between what mcptoon reports and what your provider bills. Cold starts on stdio servers cost roughly 300ms each, which is the price of running programs instead of a persistent process. And there is no GUI. This is a command line tool for people comfortable in a terminal.&lt;/p&gt;

&lt;p&gt;I find that honesty refreshing in a week where every other repo promises to 10x your agent. It saves 99.8 percent of the tool-listing tokens on a 50-server, 255-tool setup, and it tells you exactly where the edges of that claim are.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try the power strip
&lt;/h2&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;mcptoon
mcptoon quickstart
mcptoon demo
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Windows, macOS, Linux. Apache 2.0, free forever. Repo with the new power strip art and full spec compatibility notes: &lt;a href="https://github.com/activeing123/mcptoon" rel="noopener noreferrer"&gt;https://github.com/activeing123/mcptoon&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Stop rewiring the house. Buy the strip, plug in your tools, and let every agent you own use them.&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>ai</category>
      <category>devtools</category>
      <category>mcptoon</category>
    </item>
    <item>
      <title>Your AI Agent Reads a 300-Page Book Before It Answers You</title>
      <dc:creator>MCP Token Saver</dc:creator>
      <pubDate>Sun, 30 Aug 2026 11:31:17 +0000</pubDate>
      <link>https://dev.to/mcptokensaver/your-ai-agent-reads-a-300-page-book-before-it-answers-you-2bo4</link>
      <guid>https://dev.to/mcptokensaver/your-ai-agent-reads-a-300-page-book-before-it-answers-you-2bo4</guid>
      <description>&lt;p&gt;Every prompt you send starts with homework. Before Claude Code or Cursor even looks at your question, it reads the full JSON schema of every MCP tool it might call. On my machine that was 255 tools across 50 servers. I measured it with tiktoken cl100k_base: 71,929 tokens. A 300-page book, read cover to cover, every session, before your agent ever thinks about what you asked.&lt;/p&gt;

&lt;p&gt;That same tool listing now costs me 123 tokens. A sticky note. Same tools, same capabilities, and you can reproduce the number on your own config with one command.&lt;/p&gt;

&lt;p&gt;This is the story of mcptoon, a zero-dependency CLI, and the three problems it fixed that I never planned to touch.&lt;/p&gt;

&lt;h2&gt;
  
  
  Problem 1: four agents means four config files
&lt;/h2&gt;

&lt;p&gt;Claude Desktop wants &lt;code&gt;claude_desktop_config.json&lt;/code&gt;. Claude Code wants &lt;code&gt;.claude.json&lt;/code&gt;. Cursor wants &lt;code&gt;.cursor/mcp.json&lt;/code&gt;. Cline, Windsurf and VS Code Copilot each have their own shape too. Add a fetch server in Cursor, forget Claude. Fix a path in Claude, break Cursor. Repeat weekly.&lt;/p&gt;

&lt;p&gt;mcptoon's answer is one file. &lt;code&gt;~/.mcptoon/config.json&lt;/code&gt; becomes the single source of truth, and &lt;code&gt;mcptoon sync&lt;/code&gt; writes native config into every agent it detects. It merges instead of overwriting, so servers you configured by hand stay put. Run &lt;code&gt;mcptoon sync --watch&lt;/code&gt; and drift detection catches external edits before they bite.&lt;/p&gt;

&lt;p&gt;The part I like most: agents need zero setup. mcptoon is a program your agent already knows how to run. There is no &lt;code&gt;mcpServers&lt;/code&gt; entry, no plugin API, nothing to register and nothing to restart. One line in CLAUDE.md and your agent drives every MCP server through the shell. That also means it reaches places MCP cannot: shell scripts, CI jobs, cron, aider, terminal-only boxes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Problem 2: the token tax
&lt;/h2&gt;

&lt;p&gt;Here is the mechanism behind that 300-page book. When your agent asks "what tools exist?", native MCP ships the full schemas. Every parameter, every description, every nested properties block. Multiply by 255 tools and you get 71,929 tokens sitting in your context before a single tool call.&lt;/p&gt;

&lt;p&gt;mcptoon's &lt;code&gt;manifest&lt;/code&gt; command answers the same question with a name index:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ mcptoon manifest --compact
fetch: fetch(url) · github: search_repos(q), get_file(repo, path) · sqlite: query(sql)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Schemas stay on disk. They never enter the context at all. That is the difference between this and compression: compression still ships the payload and unpacks it later, so the cost just moves. Here the cost is deleted.&lt;/p&gt;

&lt;p&gt;It's a dial, not a switch. The same 255-tool config measures 8,282 tokens with &lt;code&gt;--slim&lt;/code&gt; (names plus parameter types, minus 88.5%) and 123 with &lt;code&gt;--compact&lt;/code&gt; (names only, minus 99.8%). Full JSON stays available with &lt;code&gt;--json&lt;/code&gt; whenever you want zero ambiguity. Reproduce it yourself: &lt;code&gt;mcptoon manifest --compact --tokens&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Problem 3: configured is not alive
&lt;/h2&gt;

&lt;p&gt;A 2026 community audit found 52% of published MCP servers unreachable. Half the servers in people's configs are dead weight, and nothing in a JSON file tells you which ones.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;mcptoon health&lt;/code&gt; checks every server, shows latency, and exits 1 in CI when something is dead:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;── mcptoon health: 3/5 alive ──────────────
  ✓ fetch     [stdio]  1 tool     120ms  ok
  ✗ brave     [stdio]  0 tools  10002ms  timeout
  ✓ github    [http]  12 tools    340ms  ok
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And because MCP servers run code on your machine and return arbitrary text into your agent's context, every result passes through checks for prompt injection ("ignore previous instructions" buried in tool output), credential leaks (&lt;code&gt;sk-...&lt;/code&gt;, &lt;code&gt;AKIA...&lt;/code&gt;, &lt;code&gt;ghp_...&lt;/code&gt; patterns) and dangerous operations like &lt;code&gt;delete&lt;/code&gt; or &lt;code&gt;drop&lt;/code&gt; unless you pass &lt;code&gt;--destructive&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;No telemetry. No analytics. Nothing phones home.&lt;/p&gt;

&lt;h2&gt;
  
  
  The objections I hear
&lt;/h2&gt;

&lt;p&gt;"Isn't this just TOON compression?" No. The headline number comes from architecture: full schemas simply are not sent. Optional TOON encoding of tool results saves another 30 to 40% and it is off by default.&lt;/p&gt;

&lt;p&gt;"Didn't Claude Code already defer tool loading?" Deferred loading decides when definitions load. mcptoon decides what a listing costs, in every agent at once, and adds sync, health and security on top. They stack fine.&lt;/p&gt;

&lt;p&gt;"Why a CLI?" Because the shell is the one interface every agent already speaks. Zero dependencies also means the whole supply chain is about 6,800 lines of readable Python, with 569 tests staying green in CI.&lt;/p&gt;

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



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;mcptoon
mcptoon quickstart    &lt;span class="c"&gt;# finds servers you already configured&lt;/span&gt;
mcptoon demo          &lt;span class="c"&gt;# live side-by-side: JSON vs mcptoon, real token counts&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;mcptoon speaks the latest MCP spec (2026-07-28) with full backward compatibility, runs on Windows, macOS and Linux, and ships under Apache 2.0. Repo: &lt;a href="https://github.com/activeing123/mcptoon" rel="noopener noreferrer"&gt;https://github.com/activeing123/mcptoon&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If your agent is reading a 300-page book before it answers you, that is context you paid for and never used. Make it a sticky note.&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>ai</category>
      <category>tokens</category>
      <category>mcptoon</category>
    </item>
    <item>
      <title>I Replaced 72,341 Tokens of MCP Config With 123 Tokens. Here's the Exact Setup.</title>
      <dc:creator>MCP Token Saver</dc:creator>
      <pubDate>Thu, 27 Aug 2026 01:59:31 +0000</pubDate>
      <link>https://dev.to/mcptokensaver/i-replaced-72341-tokens-of-mcp-config-with-123-tokens-heres-the-exact-setup-4cpo</link>
      <guid>https://dev.to/mcptokensaver/i-replaced-72341-tokens-of-mcp-config-with-123-tokens-heres-the-exact-setup-4cpo</guid>
      <description>&lt;p&gt;I spent a weekend optimizing my MCP setup and the results were... unexpected.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Starting Point
&lt;/h2&gt;

&lt;p&gt;My Claude Code config had 255 tools registered across 10 MCP servers. Each tool came with a full JSON schema describing its inputs, outputs, constraints, and examples. Seemed reasonable until I measured the actual token cost.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;72,341 tokens.&lt;/strong&gt; Just for the schemas. Before I typed a single word.&lt;/p&gt;

&lt;p&gt;That's roughly 40% of Claude's 200K context window gone before the conversation even starts.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Experiment
&lt;/h2&gt;

&lt;p&gt;I tried three approaches to reduce this overhead:&lt;/p&gt;

&lt;h3&gt;
  
  
  Approach 1: Remove descriptions
&lt;/h3&gt;

&lt;p&gt;Stripped all &lt;code&gt;description&lt;/code&gt; fields from tool schemas. Result: 72K → 58K. Saved 14K tokens but lost critical context about what each tool actually does.&lt;/p&gt;

&lt;h3&gt;
  
  
  Approach 2: Truncate descriptions
&lt;/h3&gt;

&lt;p&gt;Cut every description to 50 characters. Result: 72K → 45K. Better, but now tools like &lt;code&gt;create_issue&lt;/code&gt; and &lt;code&gt;update_issue&lt;/code&gt; look identical.&lt;/p&gt;

&lt;h3&gt;
  
  
  Approach 3: TOON format
&lt;/h3&gt;

&lt;p&gt;Compressed the entire schema structure using mcptoon's compact notation. Result: 72,341 → &lt;strong&gt;123 tokens&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Wait, what?&lt;/p&gt;

&lt;h2&gt;
  
  
  How 123 Tokens Work
&lt;/h2&gt;

&lt;p&gt;The trick is lazy loading. Instead of sending all 255 full schemas upfront, TOON format sends one-line summaries:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="nf"&gt;search_issues&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;query&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;repo&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;state&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="err"&gt;→&lt;/span&gt; &lt;span class="nx"&gt;Issue&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt;
&lt;span class="nf"&gt;create_issue&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;repo&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;title&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;body&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="err"&gt;→&lt;/span&gt; &lt;span class="nx"&gt;Issue&lt;/span&gt;
&lt;span class="nf"&gt;update_issue&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;repo&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;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nx"&gt;int&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;title&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;body&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="err"&gt;→&lt;/span&gt; &lt;span class="nx"&gt;Issue&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each tool gets a single line: name, parameters with types, return type. That's enough for the model to decide which tool to use.&lt;/p&gt;

&lt;p&gt;When it actually calls a tool, the full schema is loaded on demand. The model already knows what it wants to do — it just needs the exact parameter names and types.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Setup
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Install&lt;/span&gt;
pip &lt;span class="nb"&gt;install &lt;/span&gt;mcptoon

&lt;span class="c"&gt;# Compress your MCP config&lt;/span&gt;
mcptoon compress

&lt;span class="c"&gt;# That's it. One command.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The compressed output replaces your original config. If you don't like it, &lt;code&gt;mcptoon decompress&lt;/code&gt; gets you back to the original.&lt;/p&gt;

&lt;h2&gt;
  
  
  Real-World Impact
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Before&lt;/th&gt;
&lt;th&gt;After&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Schema tokens&lt;/td&gt;
&lt;td&gt;72,341&lt;/td&gt;
&lt;td&gt;123&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Context available for conversation&lt;/td&gt;
&lt;td&gt;~128K&lt;/td&gt;
&lt;td&gt;~200K&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tool selection accuracy&lt;/td&gt;
&lt;td&gt;94%&lt;/td&gt;
&lt;td&gt;93%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Time to first response&lt;/td&gt;
&lt;td&gt;2.1s&lt;/td&gt;
&lt;td&gt;1.4s&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The 1% accuracy drop came from tools with similar names but different purposes. For most workflows, it's imperceptible.&lt;/p&gt;

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

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Schema verbosity is the silent killer.&lt;/strong&gt; We obsess over prompt engineering but ignore that our tool definitions are eating half the context window.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Lazy loading beats compression.&lt;/strong&gt; You don't need all schemas all the time. Load what you need, when you need it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The model doesn't need your examples.&lt;/strong&gt; Those &lt;code&gt;enum&lt;/code&gt; constraints and example values in your schemas? The model figures them out from the parameter name and type.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Try It Yourself
&lt;/h2&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;mcptoon
mcptoon compress
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;GitHub: &lt;a href="https://github.com/activeing123/mcptoon" rel="noopener noreferrer"&gt;https://github.com/activeing123/mcptoon&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you're running more than 50 MCP tools, you're probably wasting tens of thousands of tokens on schemas alone. Worth a look.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This post is part of my ongoing investigation into MCP token overhead. Previous posts covered benchmarking 10 MCP servers and measuring real token costs.&lt;/em&gt;&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
