TL;DR pg_restore expects the a directory when reading from directory dumps:
pg_restore -l <dump_directory_name>
So, in the case above, it is pg_restore -l mydb.dump.
After a more careful reading of the pg_restore man page, I found the -F option:
-F format
--format=format
Specify format of the archive. It is not necessary to specify the format, since pg_restore will determine the format automatically. If specified, it can be one of the following: (c custom, d directory, t tar)
So I tried pg_restore -l mydb.dump/toc.dat -Fd next; the result:
pg_restore: error: could not open input file "mydb.dump/toc.dat/toc.dat": Not a directory
Then pg_restore -l mydb.dump -Fd, which worked, so I gave it try deleting -Fd from the end, which also did.
update: Could have avoided this experimentation if I had actually paid attention to the man page (emphasis mine):
Options
pg_restore accepts the following command line arguments.
filename
Specifies the location of the archive file (or directory, for a directory-format archive) to be restored. If not specified, the standard input is used.