Dispatches a tool call to the module registered for it.
The registry itself holds no tools — callers pass a tools map
(%{atom() => module}, each module implementing BeamAgent.Tools.Behaviour)
through BeamAgent.API.run/2's :tools option, and it flows down to every
call here. This keeps the harness domain-agnostic: it ships no built-in
tools of its own, only the dispatch mechanism.
Summary
Functions
Looks up tool_name in tools and executes it with args.