Close all connections and clear the discovery caches.
Cancels the current epoch, so in-flight requests reject and a reconnect waiting on its backoff wakes and gives up instead of resurrecting a connection. Concurrent calls share one teardown.
The adapter stays usable afterwards: the server configuration survives, so
a later listTools() discovers again and builds fresh clients rather than
restoring the closed ones. A discovery that arrives mid-close waits for
teardown and then runs in the new epoch.