What you built
You started with a single hardcoded tool call and ended with a production-shaped agent that handles multiple tools, parallel calls, and errors, then collapsed all of that into the Tool Runner. Along the way you saw every piece of the tool-use protocol: tool_use blocks, tool_result blocks, tool_use_id matching, stop_reason checking, and is_error signaling.