Hey, I'd appreciate it if you could support descriptions that are shared by multiple tools (for example, if multiple tools expect the same inputs and impose the same limits on these possible inputs, the shared instructions could be in a separate place).

Currently, the API allows adding a single separate description for each tool and its inputs:

@Tool(name = "get_current_time", description = "get current time by custom format. Supported formats are ...")
public Response getCurrentTime(@ToolParam(description = "the expected output") String format) {
    ...
}

(This is just an example)

If there are multiple time tools that expect the same formats, I'd like to send the common explanation only once for all of them (and add the specifics for each one as it is done today). This need arose from me getting the following exception:

java.util.concurrent.CompletionException: software.amazon.awssdk.services.bedrockruntime.model.ValidationException: The model returned the following errors: Input is too long for requested model. (Service: BedrockRuntime, Status Code: 400, Request ID: ...) (SDK Attempt Count: 1)
    at software.amazon.awssdk.utils.CompletableFutureUtils.errorAsCompletionException(CompletableFutureUtils.java:64)

So by enabling sending the shared data only once, we could send a lot less explanations to the LLM and stay within the allowed input length.

I'd suggest either adding an annotation above the entire class with the common description OR if we'd like to support more than one "family" inside the same class, adding an optional "common-description" field into the existing @Tool annotation which will point onto the shared description.

I considered adding this to my system prompt but I don't think it'll be good practice and also I have multiple tool families and i don't want to write all of them directly in the system prompt.

All the best, Daniel