The base definition of a tool that can be used during a call. Exactly one implementation (http or client) should be set.

modelToolName
string

The name of the tool, as presented to the model. Must match ^[a-zA-Z0-9_-]{1,64}$.

description
string

The description of the tool.

dynamicParameters
object[]

The parameters that the tool accepts.

staticParameters
object[]

The static parameters added when the tool is invoked.

automaticParameters
object[]

Additional parameters that are automatically set by the system when the tool is invoked.

requirements
object

Requirements that must be fulfilled when creating a call for the tool to be used.

timeout
string

The maximum amount of time the tool is allowed for execution. The conversation is frozen while tools run, so prefer sticking to the default unless you're comfortable with that consequence. If your tool is too slow for the default and can't be made faster, still try to keep this timeout as low as possible.

precomputable
boolean

The tool is guaranteed to be non-mutating, repeatable, and free of side-effects. Such tools can safely be executed speculatively, reducing their effective latency. However, the fact they were called may not be reflected in the call history if their result ends up unused.

http
object

Details for an HTTP tool.

client
object

Details for a client-implemented tool. Only body parameters are allowed for client tools.