Why must the code be written defensively when processing tool use parts from Claude?	Claude may decide to use multiple tools in parallel within a single response.
What criteria should be used to identify a tool use part within a list of message parts?	The part object must contain the key `tool use`.
What are the three required properties of a tool result part sent back to Claude?	`tool use ID`, `content` (serialized output), and `status` (success or error).
What is the primary purpose of the `tool use ID` in the tool result part?	To allow Claude to match the specific output result back to its original tool use request, especially when multiple tools run in parallel.
When executing a tool function, how are the arguments provided to the function?	The dictionary of arguments from the tool input must be "splatted" using `**`.
What should happen if the tool name provided by Claude does not match an existing tool schema?	An exception should be raised with "unknown tool name."
Why is it important to wrap the tool execution logic in a `try...except` block?	To ensure that if a tool function fails, an error status is sent back to Claude instead of crashing the process.
