toolcall() ← all concepts

// concept · model routing

You're paying your best model to do filing.

Every step of the pipeline calls the same model — including the one that just pulls a date out of a form. That step costs exactly what the hard step costs.

// the assumption

You picked a model when you started the project, and everything calls it. That is a reasonable default: one client, one config, nothing to think about. It is also why the cheapest work in your system is billed at your most expensive rate.

# one model, five steps plan the reply → BIG draft it → BIG check the tone → BIG sort the request → BIG # does not need it find the date → BIG # really does not need it

The price ladder is steeper than people expect

Published per-token rates span a wide range across a single vendor's lineup. Comparing the top tier to the smallest in the same family, the gap is roughly five to one on both input and output; comparing the very largest to the smallest it is closer to ten to one. The exact multiple depends on which two you line up.

# same family, per million tokens (ratio, not dollars) largest ██████████ 10x opus tier █████ 5x sonnet tier ███ 3x smallest 1x # output is ~5x input on every tier
Do not hard-code a multiple. Vendors reprice, introductory rates expire, and a tier you benchmarked last quarter may not be the one you would pick today. Treat "about a fifth" as a sense of scale and check the live pricing page before you build a cost model on it.

What actually moves

The work that does not need a frontier model has a recognisable shape: one question in, one answer out, nothing to reason about. Anthropic's own surface guidance puts classification, summarisation, extraction and question answering in the "single call" tier — the simplest thing that meets the need.

pull one field out of a document sort a message into a bucket summarise a passage answer a closed question plan a multi-step change decide what to do next anything where being wrong is expensive

If a step is on the top list, it is a candidate. If you would not trust the answer without checking it, it is not.

The trap: caches belong to one model

Here is the part that turns a saving into a loss. Prompt caches are scoped to a single model. Switch models partway through a conversation and the cached prefix is invalidated — not partially, but the whole thing: tools, system prompt and message history all rebuild at full price on the next call.

# what a mid-conversation swap costs you turn 1-9 model A cache hit ~0.1x input turn 10 model B FULL REBUILD # tools + system + history, all of it

A model switch is the most destructive tier of cache invalidation there is. Changing tool_choice, attaching an image or toggling thinking all leave the tools-and-system cache intact. Changing the model does not.

This is why naive routing loses money. If the cheap step sits in the middle of a long cached conversation, the rebuild can cost more than the step ever saved. The saving is real; the placement is what decides whether you keep it.

The fix

Do not swap the model mid-conversation. Give the cheap step its own call. A classification or extraction step almost never needs the conversation history — it needs one input and one instruction. Pull it out into a standalone request on the small model and the main loop's cache is untouched.

1 find steps that are one-in, one-out # sort, extract, summarise 2 give each its OWN call # no shared history 3 keep the main loop on ONE model # cache stays warm 4 turn the effort setting down # second lever, same bill

For agent architectures the documented pattern is the same idea with a name: spawn a subagent on the cheaper model for the sub-task, and leave the main loop where it is. The subagent gets its own context, so nothing the parent cached is disturbed.

The other lever on the same bill is effort — how hard the model works on a given request. Lower effort means fewer, more consolidated tool calls and less preamble. It is often the cheaper change to make first, because it does not move any step to a different model at all.

Related: prompt caching covers why that repeated prefix is worth protecting in the first place, and the agent loop covers why an agent's transcript grows the way it does.

Sources: Anthropic — pricing per million tokens (the ratios above are arithmetic on that table; check it before relying on a multiple) · Anthropic — prompt caching, on caches being model-scoped and what each change invalidates · Anthropic — the effort parameter.

One concept a week. Free.

The deeper, copy-paste version of each ToolCall short — in your inbox.

// total: 0.00 · spam: void · unsubscribe: one click