A developer asks an LLM to "check the current weather in Tokyo and add it to my calendar for tomorrow's meeting notes." The LLM responds with the correct weather but cannot actually check weather or modify a calendar. A colleague says: "You need to give the model tools." What precisely does "giving the model tools" mean architecturally, and what changes in the execution flow?