All Articles
Absorbing the Claude API "Tool Result Submitted" Error in a Retry Layer: A Small Conversation-History Repair
How I absorbed the Claude API "Tool result could not be submitted because the previous turn was not a tool use" error inside a small retry layer, with the diagnosis order I followed after it hit a production batch.
Absorbing Claude API 529 Overloaded in Production — Resilience Patterns from a 50M-Download Indie Studio
529 Overloaded won't go away with a naive exponential backoff. Drawing on lessons from 50 million app downloads, this piece walks through queue-based absorption, model-aware fallback, and circuit-breaker design with working code.
Adding Priority and Fairness to a Claude API Job Queue — Backpressure Patterns from a 50M-Download Indie App
A practical design for adding three-tier priority queues and Deficit Round Robin fairness to a Claude API worker. Drawn from running review-automation pipelines across an indie app catalog with 50M cumulative downloads, with full Python code and production metrics from a year of operation.
Designing a Model-Selection Fallback That Survives this model is currently unavailable on Claude API
The 'this model is currently unavailable' error from Claude API behaves nothing like a 529 Overloaded or a rate limit. After six months running it across six auto-publishing pipelines as an indie developer at Dolice, I'm sharing the failure conditions I observed and the per-request model-fallback implementation that ended my weekend firefighting.
Allocating the 200K Context Window in Claude API — Budgeting System, Tools, Memory, and History in Production
Treat Claude API's 200K context as a budget rather than an open shelf. A TypeScript-backed allocation architecture that carves system, tools, memory, history, and headroom into explicit envelopes — built and tuned in a wallpaper app earning real ad revenue.
Why tool_result could not be submitted Keeps Coming Back, and How to Build a Recovery Handler That Actually Holds
Run a Claude agent long enough and one day it starts: 'tool_result could not be submitted', back to back, and retries change nothing. The error message hides four completely different root causes. Here is what I learned debugging it on the always-on agent jobs I run as an indie developer, with the TypeScript recovery handler I now ship in production.
A Morning Digest Agent across App Store Connect, Play Console, Crashlytics, and AdMob — 30 days of running it on Claude Agent SDK
Opening four dashboards each morning across six apps used to eat 30 to 50 minutes of my day. Here is the Claude Agent SDK recipe that compressed it into one email, with the measured numbers from a full month.
Forecasting Claude API token costs with ±10% accuracy from the first three days
A practical EWMA + seasonality decomposition model that forecasts month-end Claude API costs from only the first three days of token usage, with three-tier automated guardrails for prompt caching, model routing, and rate limiting.
Resolving Tool Name Collisions When Bundling Multiple MCP Servers in the Claude Agent SDK
When the GitHub MCP and Linear MCP both expose create_issue, Sonnet 4.6 cannot tell them apart. This article covers the structure of MCP tool name collisions, a TypeScript reconciler implementation, and a measured correction: the schemaHash I originally published missed all five schema drifts I tested it against.
Compressing Tool Results in Claude Agents — Aggregating Large Responses Without Bloating Context
When a database returns 8,000 rows, a scrape returns 200KB of HTML, or a file read returns several megabytes, dropping the raw payload into your Claude tool result wrecks both cost and quality. This guide presents a three-layer compression architecture — schema projection, summarization, and reference handles — with TypeScript examples from a production agent pipeline.
Hierarchical Chat History Summarization with Claude API: A 3-Tier Design That Cut Tokens by 70%
Working TypeScript design for compressing long in-app chat histories into three tiers — recent turns kept verbatim, mid-range episodes summarized with Haiku 4.5, and long-range memory distilled to JSON by Sonnet 4.6. Includes seven weeks of production data showing input tokens down 70% and monthly API cost down from $480 to $145.
Installing Safety Valves in Claude Agents: A Three-Layer Kill-Switch Design for Solo Operators
A design record from a real production incident — three hours of runaway retries that cost $32 — that led me to rebuild every Claude agent with a three-layer kill switch: in-process guards, platform-level kill flags on Cloudflare KV, and an observer worker that catches the warning signs within three minutes. Working TypeScript and operational metrics included.