Select your cookie preferences

We use essential cookies and similar tools that are necessary to provide our site and services. We use performance cookies to collect anonymous statistics, so we can understand how customers use our site and make improvements. Essential cookies cannot be deactivated, but you can choose “Customize” or “Decline” to decline performance cookies.

If you agree, AWS and approved third parties will also use cookies to provide useful site features, remember your preferences, and display relevant content, including relevant advertising. To accept or decline all non-essential cookies, choose “Accept” or “Decline.” To make more detailed choices, choose “Customize.”

Invoking a tool

Focus mode
Invoking a tool - Amazon Nova

If Amazon Nova decides to call a tool, a tool use block will be returned as a part of the assistant message and the stop reason will be "tool_use". The tool block will contain the name of the tool and it's inputs.

Note

To improve the accuracy of tool calls, the default behavior of Amazon Nova models is to use chain of thought reasoning for tool calling. The thought process will be made available to you in the assistant message and will be contained in <thinking> tags. It is possible to have multiple tool calls and thinking blocks in a response so your application should take this into account.

If tool choice is configured to any or tool, this will override the chain of thought behavior and the response will only contain the necessary tool calls.

{ "toolUse": { "toolUseId": "tooluse_20Z9zl0BQWSXjFuLKdTJcA", "name": "top_song", "input": { "sign": "WZPZ" } } }

To actually call the tool, the tool name and arguments can be extracted from the message and the application can then invoke it.

Here is an example for how you can process a tool call.

def get_top_song(sign): print(f"Getting the top song at {sign}") return ("Espresso", "Sabrina Carpenter") stop_reason = response["stopReason"] tool, song, artist = None, None, None if stop_reason == "tool_use": thought_process = next( block["text"] for block in response["output"]["message"]["content"] if "text" in block ) print(thought_process) tool = next( block["toolUse"] for block in response["output"]["message"]["content"] if "toolUse" in block ) if tool["name"] == "top_song": song, artist = get_top_song(tool["input"]["sign"])

It is important to keep security in mind when you are defining and invoking tools. LLMs like Amazon Nova don't have access to the session details so permissions should be validated when necessary before invoking a tool. Rely on user details from your session instead of augmenting the prompt and allowing Amazon Nova to inject it into the tool call.

PrivacySite termsCookie preferences
© 2025, Amazon Web Services, Inc. or its affiliates. All rights reserved.