What is the overall goal of wiring up multiple tools to Claude?	To allow Claude to answer complex user queries that require sequential use of different tools.
In a multi-tool scenario, what is the sequence of events after Claude requests the first tool use?	The code executes the tool, sends the result back to Claude, and Claude then decides if a second tool use is needed.
What is the primary assumption that must be made when submitting a query to Claude in an application?	That Claude might want to use multiple tools in a row to answer the query.
What is the core logic of the `runConversation` function?	It uses a loop to repeatedly call Claude, running tools when requested, until Claude provides a final response without tool use.
Why were the `addUserMessage` and `addAssistantMessage` helper functions refactored?	To allow them to handle and store entire message blocks (including tool use blocks), not just plain text.
How was the `chat` function updated to support tool usage?	It was updated to accept a list of tool schemas and was changed to return the entire message received from Claude.
What is the purpose of the new `textFromMessage` helper function?	To extract and join all text content from a message that contains multiple blocks.
If Claude's response does not contain a tool use block, what does the `runConversation` function do?	It delivers the final response to the user.
What must be done to the message history when a tool is used in the conversation loop?	The tool result blocks must be added into a user message before running Claude again.
What is the key difference between the old and new implementation of the `chat` function's return value?	The old function assumed a single text block and returned only the text; the new function returns the entire message object.
