Behaviour implemented by every tool the agent can execute.
@callback description() :: String.t()
@callback execute(map()) :: {:ok, term()} | {:error, term()}
@callback name() :: atom()