diff --git a/matlab/TCV_IMAS/README b/matlab/TCV_IMAS/README
index 0c737364ccb47f2d9dac3655f8d8562709bda5e1..9dd6086ce2ce67e712e1a1497b3f2f751e6632f5 100644
--- a/matlab/TCV_IMAS/README
+++ b/matlab/TCV_IMAS/README
@@ -4,7 +4,7 @@
 %
 ids_list_all=ids_list;
 
-%ids_list_to_generate = {'core_profiles', 'core_sources', 'equilibrium', 'magnetics', 'pf_active', 'pf_passive', 'tf','wall'};
+% ids_list_to_generate = tcv_available_ids;
 ids_list_to_generate = ids_list_all;
 
 for i=1:length(ids_list_to_generate)
diff --git a/matlab/TCV_IMAS/ids2database.m b/matlab/TCV_IMAS/ids2database.m
index abbbfaec4f3ceac08b0529a6f04f46347b84c79c..f2b887ba90b8d714455d434603a56fdc641a0e99 100644
--- a/matlab/TCV_IMAS/ids2database.m
+++ b/matlab/TCV_IMAS/ids2database.m
@@ -88,8 +88,8 @@ try
     ids_full_list = IDS_list;
   end
 catch
-  ids_full_list = {'equilibrium', 'magnetics', 'tf', 'pf_active','wall','core_profiles','ec_launchers','nbi','pf_passive'};
-  warning(['IDS_list not available, quick fix introducing list of ids ready for TCV: ' fprintf('%s ',ids_full_list{:}) char(10)]);
+  ids_full_list = tcv_available_ids;
+  warning(['IDS_list not available, quick fix introducing list of ids available for TCV: ' fprintf('%s ',ids_full_list{:}) char(10)]);
 end
 ids_names_notok = setdiff(ids_names,ids_full_list);
 if ~isempty(ids_names_notok)
diff --git a/matlab/TCV_IMAS/tcv2ids.m b/matlab/TCV_IMAS/tcv2ids.m
index d6e2ecc92e2228686768659bcac239296e5ebafe..da618f38938e129e92e8816db3f204cc0a92b980 100644
--- a/matlab/TCV_IMAS/tcv2ids.m
+++ b/matlab/TCV_IMAS/tcv2ids.m
@@ -11,7 +11,7 @@ function [ids_from_tcv,varargout] = tcv2ids(shot,varargin);
 % mdsconnect('localhost:5555')
 %
 % varargin: 'ids_names': cell, idss to load, by default all defined so far (if empty or empty string or not given)
-%             {'equilibrium', 'magnetics', 'pf_active','wall','core_profiles','ec_launchers','nbi'} or a subset
+%             see tcv_available_ids for the list of IDSs available for TCV
 %           'error_bar': type (string)
 %                empty or 'delta' (default): meaning difference in upper is set (standard error_bar
 %                'added': errorbar is added: upper=data+delta and lower=data-delta
@@ -32,13 +32,13 @@ function [ids_from_tcv,varargout] = tcv2ids(shot,varargin);
 p = inputParser;
 % no required inputs here so one can call with empty args and get defaults parameters
 % effectively required inputs should have defaults as empty
-ids_names = {'equilibrium', 'magnetics', 'pf_active','wall', 'tf','core_profiles','ec_launchers','nbi', 'thomson_scattering'};
+ids_names = tcv_available_ids;
 p.addOptional('shot', [], @(x) (isnumeric(x) && isscalar(x) && (x == round(x)))); % integer
 p.addOptional('ids_names', ids_names, @(x) isempty(x) || iscell(x) ); % char or cell array
 p.addOptional('error_bar', 'delta', @(x) isempty(x) || ischar(x) ); % char or cell array
 p.addOptional('cocos_out', 11, @(x) isempty(x) || isnumeric(x) ); % char
-p.addOptional('ipsign_out', 0, @(x) isempty(x) || (x==0 | x==-1 | x==+1) ); % char
-p.addOptional('b0sign_out', 0, @(x) isempty(x) || (x==0 | x==-1 | x==+1) ); % char
+p.addOptional('ipsign_out', 0, @(x) isempty(x) || (isscalar(x) && (x==0 || x==-1 || x==+1)) );
+p.addOptional('b0sign_out', 0, @(x) isempty(x) || (isscalar(x) && (x==0 || x==-1 || x==+1)) );
 p.addOptional('nverbose', 1, @(x) isempty(x) || isnumeric(x) );
 p.addOptional('time_out', [], @(x) isempty(x) || isnumeric(x) );
 p.addOptional('trialindx', [], @(x) isempty(x) || isnumeric(x) );
diff --git a/matlab/TCV_IMAS/tcv2ids2database.m b/matlab/TCV_IMAS/tcv2ids2database.m
index 99b52f127177026d2f61ad94c9485fb1fd1c66d4..9166d42d3cb3b839076f7e15aa0bd33d158735a2 100644
--- a/matlab/TCV_IMAS/tcv2ids2database.m
+++ b/matlab/TCV_IMAS/tcv2ids2database.m
@@ -9,7 +9,7 @@ function [ids_from_tcv,varargout] = tcv2ids2database(shot,run_out,varargin);
 %
 % varargin: 'occurence': occurence value
 % varargin: 'ids_names': cell, ids to load, by default all defined so far (if empty or empty string or not given)
-%             {'equilibrium', 'magnetics', 'tf', 'pf_active','wall','core_profiles','ec_launchers','nbi'} or a subset
+%             see tcv_available_ids for the list of IDSs available for TCV
 % varargin: 'error_bar': type (string)
 %                'delta' or empty (default): meaning difference in upper is set (standard error_bar
 %                'added': errorbar is added: upper=data+delta and lower=data-delta
@@ -48,14 +48,15 @@ p = inputParser;
 p.addOptional('shot', [], @(x) (isnumeric(x) && isscalar(x) && (x == round(x)))); % integer
 p.addOptional('run_out', [], @(x) (isnumeric(x) && isscalar(x) && (x == round(x)))); % integer
 p.addOptional('occurence', 0, @(x) isempty(x) || (isnumeric(x) && isscalar(x) && (x == round(x)))); % integer
-p.addOptional('ids_names', {'equilibrium', 'magnetics', 'pf_active','wall', 'tf','core_profiles','ec_launchers','nbi'}, @(x) isempty(x) || iscell(x)); % char or cell array
+ids_names = tcv_available_ids;
+p.addOptional('ids_names', ids_names, @(x) isempty(x) || iscell(x)); % char or cell array
 p.addOptional('error_bar', 'delta', @(x) isempty(x) || ischar(x) ); % char or cell array
 p.addOptional('tree_user', getenv('USER'), @(x) isempty(x) || ischar(x) ); % char
 p.addOptional('tree_tokamak', 'tcv', @(x) isempty(x) || ischar(x) ); % char
 p.addOptional('tree_majorversion', '3', @(x) isempty(x) || ischar(x) ); % char
-p.addOptional('cocos_out', 11, @(x) isempty(x) || isnumeric(x) ); % char
-p.addOptional('ipsign_out', 0, @(x) isempty(x) || (x==0 | x==-1 | x==+1) ); % char
-p.addOptional('b0sign_out', 0, @(x) isempty(x) || (x==0 | x==-1 | x==+1) ); % char
+p.addOptional('cocos_out', 11, @(x) isempty(x) || isnumeric(x) );
+p.addOptional('ipsign_out', 0, @(x) isempty(x) || (isscalar(x) && (x==0 || x==-1 || x==+1)) );
+p.addOptional('b0sign_out', 0, @(x) isempty(x) || (isscalar(x) && (x==0 || x==-1 || x==+1)) );
 p.addOptional('nverbose', 1, @(x) isempty(x) || isnumeric(x) );
 p.addOptional('time_out', [], @(x) isempty(x) || isnumeric(x) );
 p.addOptional('trialindx', [], @(x) isempty(x) || isnumeric(x) );
diff --git a/matlab/TCV_IMAS/tcv_available_ids.m b/matlab/TCV_IMAS/tcv_available_ids.m
new file mode 100644
index 0000000000000000000000000000000000000000..a98cf4f10bf5c9379bbfca8f074fbeeecfdfca62
--- /dev/null
+++ b/matlab/TCV_IMAS/tcv_available_ids.m
@@ -0,0 +1,6 @@
+function list = tcv_available_ids()
+
+list = {'equilibrium', 'magnetics', 'tf', 'pf_active','wall','core_profiles','ec_launchers','nbi','pf_passive', ...
+        'thomson_scattering', 'summary'};
+
+end
\ No newline at end of file