serveTools now serves each tool on serve.<module>.<tool> instead of one tools.invoke that dispatched by name — so a module's account is scoped to serve.<module>.* and one module cannot answer another's calls. toolKey and invokeTool are the caller's side. A tool name need only be unique within its module now, not across the mesh.