May 3, 2026•blog
I built an MCP proxy for security — a layer in front of a server that can filter or rewrite each call before it goes through. But watching what actually flowed across it, I kept noticing something it wasn’t built for: waste. Tools returning tens of thousands of tokens where a few hundred would do; blank fields and base64 blobs nobody asked for. So I built jqi to give an LLM the leverage to inspect those oversized MCP responses directly — to read the shape of a giant JSON blob without paying to read all of it, and judge how the tools and their return shapes could be simplified.
Both of those steps were manual: I had to notice a bloated tool, then point the model at it. claudenlos closes the loop agentically. It’s an automated discovery system that reads the JSONL conversation logs Claude already keeps under ~/.claude/projects and tells you, tool by tool and MCP by MCP, where the tokens are actually going — no noticing required. No instrumentation, no gateway, no change to how you work; the data is already on disk, and this just reads it. (The name puns on kostenlos, German for “free of charge”; the goal is to get a little closer to it.)
I pointed it at my own logs, and three installed servers paid for themselves on the first pass:
null you already suspected, every false, every empty array. Omitting them is the entire fix. (This is the server I took apart with jqi.)Neither of these took any prior suspicion on my part. claudenlos read the logs and ranked them to the top, each with a file:line pointer to a call I could go read. The discovery is mechanical enough that I could rerun it across any set of installed servers and expect it to surface the next one.
It computes three things from your logs:
file:line pointer, so you can go read the call that triggered it.The categories map onto fixes:
It runs in one line over whatever logs it can find:
uv run claudenlos --alias gh,github --chars-per-token 3.5 -v
It auto-discovers Claude profiles across ~/.claude*/projects, deduplicates aliases that point at the same MCP, and writes tab-separated output you can paste straight into a spreadsheet and sort.
One caveat: claudenlos is a simple tool — a few hundred lines that read logs and count characters. It’s a starting point, not an oracle, and the plain TSV is deliberate: feed it into an LLM and let that do the investigating. The model can rank the findings, follow each file:line to the call that triggered it and propose the fix. The tool identifies, you have to diagnose.
Token cost is easy to wave away one call at a time — what’s another few thousand tokens? But tool and MCP overhead compounds: the same wasteful response, on every call, across every conversation, for as long as that server stays installed. The leverage is large and nearly invisible, because almost nobody reads their own logs.
claudenlos doesn’t fix anything itself. It points, with numbers, at the handful of tools where an hour of work pays for itself many times over — and then jqi, or a proxy filter, or a deleted round-trip does the rest. Measure first.