Wow, this is actually very good description of program flow. There are only few small mistakes. For example:
> navigate through the history (when input starts with a digit)
Should be more like: navigate to link from currently displayed page (when input starts with a digit).
> It prints the response to `stdout` and also stores it in the temporary file.
Response is not printed to `stdout` at all. It is only stored in temporary file.
Also the possibility to use first program argument to overwrite the `less` command was ignored.
But overall very good job.