class EnableFuelRateTool: name = 'enable_fuel_rate' route_path = '/mcp/tools/enableFuelRate' backend = 'base' def __init__(self, api_client=None): self.api_client = api_client def metadata(self): return { 'name': self.name, 'description': ( '使用场景:把燃油系数生效或启用。燃油代码必须来自query_fuel_rate_list,格式为RY加数字。' '可以一次启用多条,最多20条。草稿和失效都可以启用。' '已经启用的不能再次启用。' '禁止使用:新增、编辑、失效、删除、手填不存在的燃油代码。' '参数只用于工具内部调用;最终回答只能展示中文业务名称和燃油代码。' ), 'input_schema': { 'type': 'object', 'properties': { 'fuel_no': { 'type': 'array', 'minItems': 1, 'maxItems': 20, 'items': { 'type': 'string', 'minLength': 1, 'maxLength': 20, }, 'description': '要启用的燃油代码,例如["RY12"]。', }, }, 'required': ['fuel_no'], 'additionalProperties': False, }, } def call(self, fuel_no, request_id='rq_enable_fuel_rate'): if self.api_client is None: raise RuntimeError('api client is required for enable_fuel_rate') return self.api_client.call_tool( self.name, self.route_path, {'fuel_no': _fuel_numbers(fuel_no)}, request_id, ) def _fuel_numbers(value): if isinstance(value, str): value = [value] if not isinstance(value, list) or not value or len(value) > 20: raise ValueError('fuel_no is invalid') numbers = [] seen = set() for item in value: if not isinstance(item, str) or not item.strip() or len(item.strip()) > 20: raise ValueError('fuel_no is invalid') number = item.strip() if number in seen: continue seen.add(number) numbers.append(number) return numbers