Convert to JSON map for MCP response
Map<String, dynamic> toJson() { return { 'tools': tools.map((t) => t.toJson()).toList(), }; }