tooluniverse.execute_function 模块

ToolUniverse 功能执行模块

该模块提供了用于管理和执行各种科学与数据工具的核心 ToolUniverse 类。它支持从 JSON 配置加载工具,按类别进行组织,验证函数调用,并在执行工具时实现完善的错误处理与缓存机制。

该模块支持以下功能: - GraphQL 工具(OpenTarget、OpenTarget Genetics) - RESTful API 工具(Monarch、ChEMBL、PubChem 等) - FDA 药物标签及不良事件工具 - 临床试验工具 - 文献检索工具(EuropePMC、Semantic Scholar、PubTator) - 生物学数据库(HPA、Reactome、UniProt) - MCP(模型上下文协议)客户端及自动加载器 - 富集分析工具 - 软件包管理工具

类:

ToolUniverse:工具管理与执行的主类

常量:

default_tool_files:工具类别到 JSON 文件路径的默认映射 tool_type_mappings:工具类型字符串到其实现类的映射

class tooluniverse.execute_function._BatchCacheInfo[源代码]

基类:object

_BatchCacheInfo(namespace: str, version: str, cache_key: str)_

namespace: str
version: str
cache_key: str
__init__(namespace, version, cache_key)
class tooluniverse.execute_function._BatchJob[源代码]

基类:object

_BatchJob(signature: str, call: Dict[str, Any], function_name: str, arguments: Dict[str, Any], indices: List[int] = <factory>, tool_instance: Any = None, cache_info: Optional[tooluniverse.execute_function._BatchCacheInfo] = None, cache_key_composed: Optional[str] = None, skip_execution: bool = False)_

signature: str
call: Dict[str, Any]
function_name: str
arguments: Dict[str, Any]
indices: List[int]
tool_instance: Any = None
cache_info: _BatchCacheInfo | None = None
cache_key_composed: str | None = None
skip_execution: bool = False
__init__(signature, call, function_name, arguments, indices=<factory>, tool_instance=None, cache_info=None, cache_key_composed=None, skip_execution=False)
class tooluniverse.execute_function.ToolCallable[源代码]

基类:object

用于验证关键字参数并调用 run_one_function 的工具的可调用包装器。

该类为工具提供动态函数接口,使其能够像常规的 Python 函数一样使用关键字参数进行调用。

__init__(engine, tool_name)[源代码]
__call__(*, stream_callback=None, use_cache=False, validate=True, **kwargs)[源代码]

使用提供的关键字参数执行该工具。

Context-aware execution - works in both sync and async contexts.

In sync context:

result = tu.tools.some_tool(param=”value”) # Returns result directly

In async context:

result = await tu.tools.some_tool(param=”value”) # Returns coroutine

参数:
  • stream_callback – 用于流式响应的可选回调

  • use_cache – 是否使用结果缓存

  • validate – 是否根据模式验证参数

  • **kwargs – 工具专用参数

返回:

Tool execution result (sync) or coroutine (async)

_call_sync(function_call, stream_callback, use_cache, validate)[源代码]

Synchronous execution - handles both sync and async tools.

async _call_async(function_call, stream_callback, use_cache, validate)[源代码]

Asynchronous execution.

class tooluniverse.execute_function.ToolNamespace[源代码]

基类:object

用于将工具作为可调用函数访问的动态命名空间。

此类提供 tu.tools.tool_name(**kwargs) 接口,动态为每个可用工具创建 ToolCallable 实例。

__init__(engine)[源代码]
__getattr__(name)[源代码]

为请求的工具名称返回一个 ToolCallable。

__len__()[源代码]

Return the number of available tools.

__iter__()[源代码]

Iterate over tool names.

__contains__(name)[源代码]

检查工具是否存在。

refresh()[源代码]

刷新工具发现(重新发现 MCP/远程工具)。

eager_load(names=None)[源代码]

预先实例化工具以减少首次调用延迟。

class tooluniverse.execute_function.ToolUniverse[源代码]

基类:object

一个用于加载、组织和执行各种科学与数据工具的综合工具管理系统。

ToolUniverse 类提供了一个集中的接口,用于管理不同类型的工具,包括 GraphQL 工具、RESTful API、MCP 客户端以及专用的科学工具。它负责工具的加载、筛选、缓存和执行。

all_tools

已加载工具配置列表

类型:

列表

all_tool_dict

将工具名称映射到其配置的字典

类型:

dict

tool_category_dicts

按类别组织工具的字典

类型:

dict

tool_files

将类别名称映射到其 JSON 文件路径的字典

类型:

dict

callable_functions

已实例化工具对象的缓存

类型:

dict

MAX_TOOL_NAME_LENGTH = 45
__init__(tool_files={'ChEMBL': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/chembl_tools.json', 'EFO': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/efo_tools.json', 'Enrichr': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/enrichr_tools.json', 'EuropePMC': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/europe_pmc_tools.json', 'HumanBase': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/humanbase_tools.json', 'OpenAlex': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/openalex_tools.json', 'ada_aha_nccn': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/ada_aha_nccn_tools.json', 'addgene': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/addgene_tools.json', 'admetai': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/admetai_tools.json', 'adverse_event': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/adverse_event_tools.json', 'agents': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/agentic_tools.json', 'aging_cohort': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/aging_cohort_tools.json', 'allen_brain': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/allen_brain_tools.json', 'alliance_genome': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/alliance_genome_tools.json', 'alphafold': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/alphafold_tools.json', 'alphamissense': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/alphamissense_tools.json', 'anaconda': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/anaconda_tools.json', 'aopwiki': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/aopwiki_tools.json', 'appris': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/appris_tools.json', 'archs4': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/archs4_tools.json', 'arrayexpress': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/arrayexpress_tools.json', 'artic': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/artic_tools.json', 'arxiv': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/arxiv_tools.json', 'bgee': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/bgee_tools.json', 'bigg_models': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/bigg_models_tools.json', 'bindingdb': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/bindingdb_tools.json', 'bioconductor': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/bioconductor_tools.json', 'biogrid': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/biogrid_tools.json', 'bioimage_archive': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/bioimage_archive_tools.json', 'biomodels_tools': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/biomodels_tools.json', 'bioportal': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/bioportal_tools.json', 'bioregistry': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/bioregistry_tools.json', 'biorxiv': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/biorxiv_tools.json', 'biorxiv_ext': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/biorxiv_ext_tools.json', 'biosamples': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/biosamples_tools.json', 'biostudies': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/biostudies_tools.json', 'biothings': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/biothings_tools.json', 'biotools_registry': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/biotools_registry_tools.json', 'blast': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/blast_tools.json', 'bmrb': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/bmrb_tools.json', 'brenda': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/brenda_tools.json', 'bridgedb': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/bridgedb_tools.json', 'bvbrc': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/bvbrc_tools.json', 'cadd': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/cadd_tools.json', 'cancer_prognosis': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/cancer_prognosis_tools.json', 'cancervar': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/cancervar_tools.json', 'cath': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/cath_tools.json', 'cbioportal': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/cbioportal_tools.json', 'cdc': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/cdc_tools.json', 'ceda': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/ceda_tools.json', 'cellmarker': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/cellmarker_tools.json', 'cellosaurus': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/cellosaurus_tools.json', 'cellpainting': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/cellpainting_tools.json', 'cellxgene_census': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/cellxgene_census_tools.json', 'cellxgene_discovery': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/cellxgene_discovery_tools.json', 'channelsdb': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/channelsdb_tools.json', 'chebi': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/chebi_tools.json', 'chem_compute': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/chem_compute_tools.json', 'chipatlas': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/chipatlas_tools.json', 'civic': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/civic_tools.json', 'clingen': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/clingen_tools.json', 'clingen_allele': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/clingen_allele_tools.json', 'clingen_ar': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/clingen_ar_tools.json', 'clingen_dosage': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/clingen_dosage_api_tools.json', 'clinical_guidelines': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/clinical_guidelines_tools.json', 'clinical_trials': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/clinicaltrials_gov_tools.json', 'clinvar': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/clinvar_tools.json', 'clue': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/clue_tools.json', 'cod_crystal': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/cod_crystal_tools.json', 'col': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/col_tools.json', 'compact_mode': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/compact_mode_tools.json', 'complex_portal': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/complex_portal_tools.json', 'compose': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/compose_tools.json', 'core': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/core_tools.json', 'cosmic': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/cosmic_tools.json', 'cpic': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/cpic_tools.json', 'cran': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/cran_tools.json', 'crossref': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/crossref_tools.json', 'cryoet': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/cryoet_tools.json', 'crystal_structure': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/crystal_structure_tools.json', 'ctd': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/ctd_tools.json', 'dailymed': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/dailymed_tools.json', 'data_quality': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/data_quality_tools.json', 'datacite': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/datacite_tools.json', 'datagov': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/datagov_tools.json', 'dataone': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/dataone_tools.json', 'dataset': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/dataset_tools.json', 'dataverse': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/dataverse_tools.json', 'dbfetch': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/dbfetch_tools.json', 'dblp': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/dblp_tools.json', 'dbpedia': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/dbpedia_tools.json', 'dbsnp': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/dbsnp_tools.json', 'deepgo': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/deepgo_tools.json', 'degrees_of_unsaturation': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/degrees_of_unsaturation_tools.json', 'depmap': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/depmap_tools.json', 'dfam': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/dfam_tools.json', 'dgidb': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/dgidb_tools.json', 'disease_ontology': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/disease_ontology_tools.json', 'disease_sh_ext': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/disease_sh_ext_tools.json', 'disease_target_score': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/disease_target_score_tools.json', 'diseasesh': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/diseasesh_tools.json', 'disgenet': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/disgenet_tools.json', 'disprot': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/disprot_tools.json', 'dna_tools': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/dna_tools.json', 'doaj': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/doaj_tools.json', 'dose_response': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/dose_response_tools.json', 'drug_discovery_agents': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/drug_discovery_agents.json', 'drug_properties': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/drug_properties_tools.json', 'drug_synergy': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/drug_synergy_tools.json', 'drugcentral': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/drugcentral_tools.json', 'dryad': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/dryad_tools.json', 'dynamut2': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/dynamut2_tools.json', 'ebi_proteins_coordinates': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/ebi_proteins_coordinates_tools.json', 'ebi_proteins_epitope': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/ebi_proteins_epitope_tools.json', 'ebi_proteins_ext': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/ebi_proteins_ext_tools.json', 'ebi_proteins_features': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/ebi_proteins_features_tools.json', 'ebi_proteins_interactions': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/ebi_proteins_interactions_tools.json', 'ebi_search': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/ebi_search_tools.json', 'ebi_taxonomy': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/ebi_taxonomy_tools.json', 'ebird_taxonomy': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/ebird_taxonomy_tools.json', 'elixir_tess': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/elixir_tess_tools.json', 'elm': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/elm_tools.json', 'embedding': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/embedding_tools.json', 'emdb': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/emdb_tools.json', 'emolecules': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/emolecules_tools.json', 'empiar': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/empiar_tools.json', 'ena_browser': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/ena_browser_tools.json', 'ena_portal': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/ena_portal_tools.json', 'enamine': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/enamine_tools.json', 'encode': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/encode_tools.json', 'enrichr_ext': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/enrichr_ext_tools.json', 'ensembl': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/ensembl_tools.json', 'ensembl_archive': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/ensembl_archive_tools.json', 'ensembl_compara': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/ensembl_compara_tools.json', 'ensembl_info': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/ensembl_info_tools.json', 'ensembl_ld': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/ensembl_ld_tools.json', 'ensembl_map': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/ensembl_map_tools.json', 'ensembl_overlap': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/ensembl_overlap_tools.json', 'ensembl_phenotype': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/ensembl_phenotype_tools.json', 'ensembl_regulation': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/ensembl_regulation_tools.json', 'ensembl_sequence': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/ensembl_sequence_tools.json', 'ensembl_variation_ext': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/ensembl_variation_ext_tools.json', 'ensembl_vep': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/ensembl_vep_tools.json', 'ensembl_xrefs': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/ensembl_xrefs_tools.json', 'eol': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/eol_tools.json', 'epidemiology': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/epidemiology_tools.json', 'epigenomics': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/epigenomics_tools.json', 'epigraphdb': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/epigraphdb_tools.json', 'epmc_annotations': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/epmc_annotations_tools.json', 'eqtl': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/eqtl_tools.json', 'erddap': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/erddap_tools.json', 'esm': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/esm_tools.json', 'esmfold': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/esmfold_tools.json', 'euhealth': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/euhealth_tools.json', 'europepmc_annotations': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/europepmc_annotations_tools.json', 'europepmc_citations': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/europepmc_citations_tools.json', 'eurostat': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/eurostat_tools.json', 'eva': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/eva_tools.json', 'eve': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/eve_tools.json', 'expression_atlas': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/expression_atlas_tools.json', 'faers_analytics': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/faers_analytics_tools.json', 'fatcat': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/fatcat_tools.json', 'fda_drug_adverse_event': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/fda_drug_adverse_event_tools.json', 'fda_drug_adverse_event_detail': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/fda_drug_adverse_event_detail_tools.json', 'fda_drug_label': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/fda_drug_labeling_tools.json', 'fda_gsrs': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/fda_gsrs_tools.json', 'fda_orange_book': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/fda_orange_book_tools.json', 'fda_pharmacogenomic_biomarkers': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/fda_pharmacogenomic_biomarkers_tools.json', 'figshare': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/figshare_tools.json', 'file_download': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/file_download_tools.json', 'finngen': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/finngen_tools.json', 'flybase': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/flybase_tools.json', 'flymine': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/flymine_tools.json', 'foldseek': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/foldseek_tools.json', 'fooddata_central': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/fooddata_central_tools.json', 'fourdn': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/fourdn_tools.json', 'fpbase': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/fpbase_tools.json', 'gbif': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/gbif_tools.json', 'gbif_ext': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/gbif_ext_tools.json', 'gdc': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/gdc_tools.json', 'gencc': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/gencc_tools.json', 'gene2phenotype': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/gene2phenotype_tools.json', 'genenetwork': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/genenetwork_tools.json', 'genenetwork_ext': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/genenetwork_ext_tools.json', 'genome_nexus': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/genome_nexus_tools.json', 'geo': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/geo_tools.json', 'github': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/github_tools.json', 'glygen': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/glygen_tools.json', 'gmrepo': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/gmrepo_tools.json', 'gnomad': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/gnomad_tools.json', 'gnps': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/gnps_tools.json', 'go': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/gene_ontology_tools.json', 'go_api': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/go_api_tools.json', 'gpcrdb': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/gpcrdb_tools.json', 'gprofiler': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/gprofiler_tools.json', 'gtdb': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/gtdb_tools.json', 'gtex': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/gtex_tools.json', 'gtex_v2': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/gtex_v2_tools.json', 'gtopdb': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/gtopdb_tools.json', 'guidelines': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/unified_guideline_tools.json', 'gwas': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/gwas_tools.json', 'gwas_sumstats': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/gwas_sumstats_tools.json', 'gxa': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/gxa_tools.json', 'hal': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/hal_tools.json', 'harmonizome': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/harmonizome_tools.json', 'hca_tools': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/hca_tools.json', 'health_disparities': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/health_disparities_tools.json', 'hgnc': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/hgnc_tools.json', 'hocomoco': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/hocomoco_tools.json', 'hpa': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/hpa_tools.json', 'hpo': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/hpo_tools.json', 'hubmap': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/hubmap_tools.json', 'huggingface': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/huggingface_tools.json', 'humanmine': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/humanmine_tools.json', 'icd': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/icd_tools.json', 'icite': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/icite_tools.json', 'identifiers_org': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/identifiers_org_tools.json', 'idigbio': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/idigbio_tools.json', 'idmap': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/idmap_tools.json', 'idr': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/idr_tools.json', 'idt': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/idt_tools.json', 'iedb_ext': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/iedb_ext_tools.json', 'iedb_prediction': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/iedb_prediction_tools.json', 'iedb_tools': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/iedb_tools.json', 'igsr': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/igsr_tools.json', 'imgt': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/imgt_tools.json', 'immport': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/immport_tools.json', 'impc': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/impc_tools.json', 'inaturalist': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/inaturalist_tools.json', 'indra': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/indra_tools.json', 'inspirehep': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/inspirehep_tools.json', 'intact': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/intact_tools.json', 'interpro': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/interpro_tools.json', 'interpro_domain_arch': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/interpro_domain_arch_tools.json', 'interpro_entry': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/interpro_entry_tools.json', 'interpro_ext': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/interpro_ext_tools.json', 'interproscan': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/interproscan_tools.json', 'intervar': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/intervar_tools.json', 'intogen': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/intogen_tools.json', 'iptmnet': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/iptmnet_tools.json', 'itis': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/itis_tools.json', 'jaspar': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/jaspar_tools.json', 'jpl_horizons': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/jpl_horizons_tools.json', 'kegg': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/kegg_tools.json', 'kegg_brite': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/kegg_brite_tools.json', 'kegg_conv_link': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/kegg_conv_link_tools.json', 'kegg_disease_drug': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/kegg_disease_drug_tools.json', 'kegg_ext': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/kegg_ext_tools.json', 'kegg_network_variant': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/kegg_network_variant_tools.json', 'klifs': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/klifs_tools.json', 'l1000fwd': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/l1000fwd_tools.json', 'lincs': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/lincs_tools.json', 'lipidmaps': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/lipidmaps_tools.json', 'literature_search': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/literature_search_tools.json', 'litvar': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/litvar_tools.json', 'lncrna': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/lncrna_tools.json', 'loinc': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/loinc_tools.json', 'lotus': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/lotus_tools.json', 'lovd': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/lovd_tools.json', 'marine_regions': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/marine_regions_tools.json', 'markitdown': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/markitdown_tools.json', 'massbank': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/massbank_tools.json', 'massive': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/massive_tools.json', 'mavedb': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/mavedb_tools.json', 'mcp_auto_loader_boltz': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/boltz_mcp_loader_tools.json', 'mcp_auto_loader_esm': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/mcp_auto_loader_esm.json', 'mcp_auto_loader_expert_feedback': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/expert_feedback_tools.json', 'mcp_auto_loader_txagent': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/txagent_client_tools.json', 'mcp_auto_loader_uspto_downloader': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/uspto_downloader_tools.json', 'mcule': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/mcule_tools.json', 'medgen': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/medgen_tools.json', 'medlineplus': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/medlineplus_tools.json', 'medrxiv': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/medrxiv_tools.json', 'meme': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/meme_tools.json', 'mesh': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/mesh_tools.json', 'meta_analysis': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/meta_analysis_tools.json', 'metaboanalyst': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/metaboanalyst_tools.json', 'metabolights': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/metabolights_tools.json', 'metabolite': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/metabolite_tools.json', 'metabolomics_workbench': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/metabolomics_workbench_tools.json', 'metacyc': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/metacyc_tools.json', 'metnorway': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/metnorway_tools.json', 'mgi': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/mgi_tools.json', 'mgnify': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/mgnify_tools.json', 'mgnify_expanded': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/mgnify_expanded_tools.json', 'mibig': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/mibig_tools.json', 'mirna': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/mirna_tools.json', 'mobidb': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/mobidb_tools.json', 'modeldb': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/modeldb_tools.json', 'modomics': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/modomics_tools.json', 'monarch': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/monarch_tools.json', 'monarch_new': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/monarch_new_tools.json', 'monarch_v3': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/monarch_v3_tools.json', 'mondo': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/mondo_tools.json', 'mousemine': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/mousemine_tools.json', 'mpd': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/mpd_tools.json', 'msigdb': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/msigdb_tools.json', 'mutalyzer': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/mutalyzer_tools.json', 'mydisease': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/mydisease_tools.json', 'nasa_cmr': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/nasa_cmr_tools.json', 'nasa_donki': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/nasa_donki_tools.json', 'nasa_eonet': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/nasa_eonet_tools.json', 'nasa_exoplanet': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/nasa_exoplanet_tools.json', 'nasa_ned': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/nasa_ned_tools.json', 'nasa_neows': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/nasa_neows_tools.json', 'nasa_sbdb': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/nasa_sbdb_tools.json', 'nca': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/nca_tools.json', 'ncbi_datasets': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/ncbi_datasets_tools.json', 'ncbi_gene': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/ncbi_gene_tools.json', 'ncbi_nucleotide': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/ncbi_nucleotide_tools.json', 'ncbi_sra': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/ncbi_sra_tools.json', 'ncbi_variation': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/ncbi_variation_tools.json', 'nci_cactus': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/nci_cactus_tools.json', 'nci_drugdict': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/nci_drugdict_tools.json', 'nci_thesaurus': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/nci_thesaurus_tools.json', 'ndex': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/ndex_tools.json', 'neb_tm': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/neb_tm_tools.json', 'neuromorpho': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/neuromorpho_tools.json', 'neurovault': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/neurovault_tools.json', 'nextstrain': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/nextstrain_tools.json', 'nhanes': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/nhanes_tools.json', 'nominatim': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/nominatim_tools.json', 'nvidia_nim': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/nvidia_nim_tools.json', 'nws': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/nws_tools.json', 'obis': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/obis_tools.json', 'odphp': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/odphp_tools.json', 'ols': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/ols_tools.json', 'oma': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/oma_tools.json', 'omicsdi': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/omicsdi_tools.json', 'omim': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/omim_tools.json', 'omnipath': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/omnipath_tools.json', 'oncokb': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/oncokb_tools.json', 'oncotree': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/oncotree_tools.json', 'open_meteo': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/open_meteo_tools.json', 'open_meteo_airquality': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/open_meteo_airquality_tools.json', 'open_meteo_climate': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/open_meteo_climate_tools.json', 'open_meteo_flood': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/open_meteo_flood_tools.json', 'open_meteo_marine': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/open_meteo_marine_tools.json', 'openaire': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/openaire_tools.json', 'openaire_dataset': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/openaire_dataset_tools.json', 'opencitations': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/opencitations_tools.json', 'opencravat': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/opencravat_tools.json', 'openfda': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/openfda_tools.json', 'openfda_approvals': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/openfda_approval_tools.json', 'openfda_labels': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/openfda_label_tools.json', 'openfoodfacts': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/openfoodfacts_tools.json', 'openml': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/openml_tools.json', 'openneuro': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/openneuro_tools.json', 'opentarget': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/opentarget_tools.json', 'opentarget_genetics': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/opentarget_genetics_tools.json', 'opentopodata': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/opentopodata_tools.json', 'opentree': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/opentree_tools.json', 'optimizer': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/optimizer_tools.json', 'orcid': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/orcid_tools.json', 'orphanet': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/orphanet_tools.json', 'orthodb': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/orthodb_tools.json', 'osdr': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/osdr_tools.json', 'osf_preprints': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/osf_preprints_tools.json', 'output_summarization': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/output_summarization_tools.json', 'oxo': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/oxo_tools.json', 'package_discovery_tools': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/package_discovery_tools.json', 'paleobiology': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/paleobiology_tools.json', 'panelapp': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/panelapp_tools.json', 'panther': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/panther_tools.json', 'pathwaycommons': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/pathwaycommons_tools.json', 'pdb_redo': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/pdb_redo_tools.json', 'pdbe_api': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/pdbe_api_tools.json', 'pdbe_compound': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/pdbe_compound_tools.json', 'pdbe_graph': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/pdbe_graph_tools.json', 'pdbe_kb': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/pdbe_kb_tools.json', 'pdbe_ligands': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/pdbe_ligands_tools.json', 'pdbe_search': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/pdbe_search_tools.json', 'pdbe_sifts': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/pdbe_sifts_tools.json', 'pdbe_validation': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/pdbe_validation_tools.json', 'pdbepisa': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/pdbepisa_tools.json', 'pdc': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/pdc_tools.json', 'pfam': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/pfam_tools.json', 'pharmacodb': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/pharmacodb_tools.json', 'pharmgkb': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/pharmgkb_tools.json', 'pharmvar': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/pharmvar_tools.json', 'pharos': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/pharos_tools.json', 'plant_reactome': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/plant_reactome_tools.json', 'pmc': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/pmc_tools.json', 'pombase': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/pombase_tools.json', 'popgen': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/popgen_tools.json', 'powo': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/powo_tools.json', 'ppi': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/ppi_tools.json', 'pride': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/pride_tools.json', 'progenetix': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/progenetix_tools.json', 'prosite': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/prosite_tools.json', 'protacdb': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/protacdb_tools.json', 'proteins_api': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/proteins_api_tools.json', 'proteinsplus': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/proteinsplus_tools.json', 'proteomexchange': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/proteomexchange_tools.json', 'proteomicsdb': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/proteomicsdb_tools.json', 'protparam': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/protparam_tools.json', 'protvar': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/protvar_tools.json', 'pubchem': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/pubchem_tools.json', 'pubchem_bioassay': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/pubchem_bioassay_tools.json', 'pubchem_tox': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/pubchem_tox_tools.json', 'pubmed': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/pubmed_tools.json', 'pubtator': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/pubtator_tools.json', 'pubtator3_ext': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/pubtator3_ext_tools.json', 'pypi_package_inspector_tools': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/pypi_package_inspector_tools.json', 'python_executor': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/python_executor_tools.json', 'quickgo': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/quickgo_tools.json', 'rcsb_advanced_search': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/rcsb_advanced_search_tools.json', 'rcsb_chemcomp': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/rcsb_chemcomp_tools.json', 'rcsb_data': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/rcsb_data_tools.json', 'rcsb_graphql': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/rcsb_graphql_tools.json', 'rcsb_pdb': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/rcsb_pdb_tools.json', 'rcsb_search': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/rcsb_search_tools.json', 'rdkit_cheminfo': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/rdkit_cheminfo_tools.json', 're3data': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/re3data_tools.json', 'reactome': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/reactome_tools.json', 'reactome_analysis': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/reactome_analysis_tools.json', 'reactome_content': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/reactome_content_tools.json', 'reactome_interactors': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/reactome_interactors_tools.json', 'regulomedb': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/regulomedb_tools.json', 'remap': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/remap_tools.json', 'rfam': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/rfam_tools.json', 'rgd': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/rgd_tools.json', 'rhea': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/rhea_tools.json', 'rnacentral': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/rnacentral_tools.json', 'ror': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/ror_tools.json', 'rxclass': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/rxclass_tools.json', 'rxnorm': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/rxnorm_tools.json', 'rxnorm_extended': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/rxnorm_extended_tools.json', 'sabdab': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/sabdab_tools.json', 'sabiork': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/sabiork_tools.json', 'sasbdb': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/sasbdb_tools.json', 'scanprosite': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/scanprosite_tools.json', 'scientific_calculator': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/scientific_calculator_tools.json', 'scite': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/scite_tools.json', 'screen': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/screen_tools.json', 'scxa': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/scxa_tools.json', 'sdss': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/sdss_tools.json', 'semantic_scholar': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/semantic_scholar_tools.json', 'semantic_scholar_ext': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/semantic_scholar_ext_tools.json', 'sequence_analyze': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/sequence_analyze_tools.json', 'sgd': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/sgd_tools.json', 'sider': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/sider_tools.json', 'signor': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/signor_tools.json', 'simbad': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/simbad_tools.json', 'smiles_verify': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/smiles_verify_tools.json', 'smolagents': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/smolagent_tools.json', 'software_bioinformatics': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/packages/bioinformatics_core_tools.json', 'software_cheminformatics': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/packages/cheminformatics_tools.json', 'software_earth_sciences': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/packages/earth_sciences_tools.json', 'software_genomics': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/packages/genomics_tools.json', 'software_image_processing': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/packages/image_processing_tools.json', 'software_machine_learning': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/packages/machine_learning_tools.json', 'software_neuroscience': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/packages/neuroscience_tools.json', 'software_physics_astronomy': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/packages/physics_astronomy_tools.json', 'software_scientific_computing': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/packages/scientific_computing_tools.json', 'software_single_cell': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/packages/single_cell_tools.json', 'software_structural_biology': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/packages/structural_biology_tools.json', 'software_visualization': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/packages/visualization_tools.json', 'special_tools': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/special_tools.json', 'spliceai': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/spliceai_tools.json', 'sra': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/sra_tools.json', 'stitch': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/stitch_tools.json', 'string_ext': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/string_ext_tools.json', 'string_network': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/string_network_tools.json', 'sunrise_sunset': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/sunrise_sunset_tools.json', 'survival': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/survival_tools.json', 'swiss_target': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/swiss_target_tools.json', 'swissadme': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/swissadme_tools.json', 'swissdock': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/swissdock_tools.json', 'swissmodel': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/swissmodel_tools.json', 'synbiohub': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/synbiohub_tools.json', 'synergxdb': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/synergxdb_tools.json', 't3db': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/t3db_tools.json', 'targetmine': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/targetmine_tools.json', 'tcdb': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/tcdb_tools.json', 'tcia': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/tcia_tools.json', 'therasabdab': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/therasabdab_tools.json', 'three_d_beacons': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/three_d_beacons_tools.json', 'timer': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/timer_tools.json', 'tool_composition': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/tool_composition_tools.json', 'tool_discovery_agents': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/tool_discovery_agents.json', 'tool_finder': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/finder_tools.json', 'tooluniverse_page': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/tooluniverse_page_tools.json', 'ucsc_genome': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/ucsc_genome_tools.json', 'umls': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/umls_tools.json', 'unichem': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/unichem_tools.json', 'uniparc': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/uniparc_tools.json', 'uniprot': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/uniprot_tools.json', 'uniprot_idmapping': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/uniprot_idmapping_tools.json', 'uniprot_locations': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/uniprot_locations_tools.json', 'uniprot_proteomes': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/uniprot_proteomes_tools.json', 'uniprot_ref': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/uniprot_ref_tools.json', 'uniprot_taxonomy': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/uniprot_taxonomy_tools.json', 'uniref': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/uniref_tools.json', 'unpaywall': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/unpaywall_tools.json', 'url': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/url_fetch_tools.json', 'uscensus': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/uscensus_tools.json', 'usgs_earthquake': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/usgs_earthquake_tools.json', 'usgs_water': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/usgs_water_tools.json', 'uspto': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/uspto_tools.json', 'variant_validator': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/variant_validator_tools.json', 'vdjdb': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/vdjdb_tools.json', 'veupathdb': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/veupathdb_tools.json', 'visualization_molecule_2d': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/molecule_2d_tools.json', 'visualization_molecule_3d': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/molecule_3d_tools.json', 'visualization_protein_3d': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/protein_structure_3d_tools.json', 'waqi': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/waqi_tools.json', 'web_search_tools': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/web_search_tools.json', 'wfgy_promptbundle': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/wfgy_promptbundle_tools.json', 'who_gho': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/who_gho_tools.json', 'wikidata_entity': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/wikidata_entity_tools.json', 'wikidata_sparql': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/wikidata_sparql_tools.json', 'wikipathways': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/wikipathways_tools.json', 'wikipathways_ext': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/wikipathways_ext_tools.json', 'wikipedia': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/wikipedia_tools.json', 'wikipedia_ext': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/wikipedia_ext_tools.json', 'worldbank': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/worldbank_tools.json', 'wormbase': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/wormbase_tools.json', 'worms': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/worms_tools.json', 'xenbase': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/xenbase_tools.json', 'xml': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/xml_tools.json', 'zenodo': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/zenodo_tools.json', 'zfin': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/zfin_tools.json', 'zinc': '/home/runner/work/ToolUniverse/ToolUniverse/src/tooluniverse/data/zinc_tools.json'}, keep_default_tools=True, log_level=None, hooks_enabled=False, hook_config=None, hook_type=None, enable_name_shortening=False, profile=None, workspace=None, use_global=False)[源代码]

使用工具文件配置初始化ToolUniverse。

参数:
  • tool_files (dict, optional) – 将类别名称映射到JSON文件路径的字典。默认为default_tool_files。

  • keep_default_tools (bool, optional) – 当提供自定义工具文件时,是否保留默认工具。默认为 True。

  • log_level (str, optional) – 此实例的日志级别。可以为 ‘DEBUG’、’INFO’、’WARNING’、’ERROR’、’CRITICAL’。如果为 None,则使用全局设置。

  • hooks_enabled (bool, optional) – 是否启用输出钩子。默认为 False。

  • hook_config (dict, optional) – 钩子的配置。如果为 None,则使用默认配置。

  • hook_type (str or list, optional) – 简单的钩子类型选择。可以是 ‘SummarizationHook’、’FileSaveHook’,或者两者的列表。默认值为 ‘SummarizationHook’。如果同时提供了 hook_config 和 hook_type,则以 hook_config 为准。

  • enable_name_shortening (bool, optional) – Whether to enable automatic tool name shortening for MCP compatibility. Defaults to False.

  • profile (str, optional) – URI of a Profile configuration to load automatically (e.g. "./my-profile.yaml", "hf:user/repo"). Overrides the TOOLUNIVERSE_PROFILE environment variable. When provided, load_profile() is called after initialization.

  • workspace (str, optional) – Path to the local workspace directory for user-defined tools. Overrides the TOOLUNIVERSE_HOME environment variable and the default ./.tooluniverse directory.

  • use_global (bool, optional) – When True, use the global ~/.tooluniverse directory as the default workspace instead of ./.tooluniverse. Has no effect if workspace or TOOLUNIVERSE_HOME is set.

static _resolve_workspace(workspace, use_global=False)[源代码]

Resolve the effective workspace directory.

Priority order: 1. workspace parameter (if provided) — directory is created if absent 2. TOOLUNIVERSE_HOME environment variable — directory is created if absent 3. ~/.tooluniverse when use_global=True 4. ./.tooluniverse (current directory, default local mode)

The default directories (3 & 4) are NOT auto-created; if they do not exist no workspace tools are loaded and workspace profile.yaml is silently skipped.

register_custom_tool(tool_class, tool_name=None, tool_config=None, instantiate=False, tool_instance=None)[源代码]

Register a custom tool class or instance at runtime.

参数:
  • tool_class – The tool class to register (required if tool_instance is None)

  • tool_name (str, optional) – 注册名称。如果未指定,则使用类名。

  • tool_config (dict, optional) – 工具配置字典,添加到 all_tools 中

  • instantiate (bool, optional) – If True, immediately instantiate and cache the tool. Defaults to False for backward compatibility.

  • tool_instance (optional) – Pre-instantiated tool object. If provided, tool_class is inferred from the instance.

返回:

工具注册时使用的名称

返回类型:

str

示例

# Register tool class only (lazy instantiation) tu.register_custom_tool(MyTool, tool_config={…})

# Register and immediately instantiate tu.register_custom_tool(MyTool, tool_config={…}, instantiate=True)

# Register pre-instantiated tool instance = MyTool({…}) tu.register_custom_tool(tool_class=MyTool, tool_instance=instance, tool_config={…})

force_full_discovery()[源代码]

强制完整工具发现,立即导入所有工具模块。

当您需要确保所有工具立即可用,绕过延迟加载时,这非常有用。

返回:

已更新工具注册表,包含所有已发现的工具

返回类型:

dict

get_lazy_loading_status()[源代码]

获取有关懒加载状态及可用工具的信息。

返回:

带有懒加载状态和工具计数的字典

返回类型:

dict

get_tool_types()[源代码]

获取工具文件中可用的工具类型。

返回:

工具类型名称列表(类别键)。

返回类型:

list

_get_api_key(key_name)[源代码]

Get API key from environment variables.

_check_api_key_requirements(tool_config)[源代码]

Check if a tool’s required API keys are available. Also supports optional_api_keys which enhance performance but don’t block loading.

参数:

tool_config (dict) – 工具配置包含可选的“required_api_keys”和“optional_api_keys”字段

返回:

(bool, list) - (all_keys_available,missing_keys)

返回类型:

tuple

generate_env_template(all_missing_keys, output_file='.env.template')[源代码]

Generate a template .env file with all required API keys (only writes if content changed).

_create_hook_config_from_type(hook_type)[源代码]

从简单的 hook_type 参数创建钩子配置。

参数:

hook_type (str or list) – 启用的钩子类型。可以是 ‘SummarizationHook’、’FileSaveHook’,或两者的列表。

返回:

生成的钩子配置

返回类型:

dict

load_tools(categories=None, tool_type=None, exclude_tools=None, exclude_categories=None, include_tools=None, tool_config_files=None, tools_file=None, include_tool_types=None, exclude_tool_types=None, python_files=None, quiet=True)[源代码]

Load tools into the instance, with optional filtering.

参数:
  • categories (list, optional) – Tool category names to load. If None, all categories are loaded. Use list_categories() to see available names.

  • tool_type (list, optional) – Deprecated alias for categories.

  • exclude_tools (list, optional) – Tool names to exclude. Supports glob patterns (e.g. ["EuropePMC_*"]).

  • exclude_categories (list, optional) – Category names to skip entirely.

  • include_tools (list or str, optional) – Only load these tools. Supports glob patterns (e.g. ["EuropePMC_*", "ChEMBL_*"]). Pass a file path string to read names from a text file (one per line).

  • tool_config_files (dict, optional) – Extra JSON config files to load. Format: {"category_name": "/path/to/config.json"}.

  • tools_file (str, optional) – Deprecated. Pass a file path to include_tools instead.

  • python_files (list, optional) – List of Python file paths (str or Path) to import as user tools. Each file should contain @register_tool-decorated classes. Example: python_files=["/path/to/my_tool.py"].

  • include_tool_types (list, optional) – Only load tools whose type field is in this list (e.g. ["RESTTool", "GraphQLTool"]).

  • exclude_tool_types (list, optional) – Skip tools whose type field is in this list.

  • quiet (bool, optional) – Suppress missing-API-key warnings and .env.template generation. Default True. Pass False to see which keys are missing.

示例

# Load everything (default) tu.load_tools()

# Load only two categories tu.load_tools(categories=[“ChEMBL”, “EuropePMC”])

# Load tools by name with glob wildcards tu.load_tools(include_tools=[“EuropePMC_*”, “ChEMBL_get_molecule_*”])

# Combine: exclude one category, exclude specific tools tu.load_tools(

exclude_categories=[“tool_finder”], exclude_tools=[“EuropePMC_slow_tool”],

请提供需要翻译的具体英文文本,我将为您提供符合要求的中文翻译。

_load_tool_names_from_file(file_path)[源代码]

从文本文件中加载工具名称(每行一个工具名称)。

参数:

file_path (str) – 包含工具名称的文本文件路径

返回:

从文件加载的工具名称列表

返回类型:

list

_filter_and_deduplicate_tools(exclude_tools_set, include_tools_set, include_tool_types_set=None, exclude_tool_types_set=None, existing_tool_names=None, quiet=True)[源代码]

根据包含/排除标准筛选工具并去除重复项。

参数:
  • exclude_tools_set (set) – 要排除的工具名称集合

  • include_tools_set (set or None) – 要包含的工具名称集合(如果为 None,则包含全部)

  • include_tool_types_set (set or None) – 要包含的工具类型集合(如果为 None,则包含所有)

  • exclude_tool_types_set (set or None) – 要排除的工具类型集合(如果为 None,则不排除任何类型)

  • existing_tool_names (set or None) – Set of tool names that were already loaded before this call. These tools will be preserved even if not in include_tools_set. Used for merge mode when loading specific tools.

_get_user_tool_files()[源代码]

Return (python_files, json_files) from the configured workspace directory.

self._workspace_dir is always set (defaults to ./.tooluniverse for local mode, or ~/.tooluniverse when use_global=True). If the directory does not exist, an empty list pair is returned.

Supports two layout conventions: - Flat: *.py / *.json directly in the workspace root - Organised: tools/*.py and data/ or configs/*.json

_import_user_python_tools(python_files)[源代码]

Import user Python tool files so their @register_tool decorators run.

Uses spec_from_file_location so files do not need to live inside the tooluniverse package. Each file is registered in sys.modules under a name derived from its path hash. On subsequent calls, the file’s mtime is compared to the cached value; if the file was edited, the module is reloaded so the changes take effect without a process restart.

_load_user_json_configs(json_files)[源代码]

Load JSON tool configs from user directories and append to all_tools.

Each file may contain a single config dict or a list of config dicts. Files named ‘profile.yaml’ / ‘profile.json’ are skipped (handled separately).

_load_tools_from_sources(loader, sources)[源代码]

Phase 4: Load Python tool files and JSON configs from external Profile sources.

Each entry in sources is a URI (local path, hf:user/repo, GitHub URL, or https:// file URL). The URI is resolved to a local directory by ProfileLoader.resolve_to_local_dir(), which handles downloading and caching automatically. The directory is then scanned for tool files using ProfileLoader.get_tool_files_from_dir().

Last-seen definition wins: sources are processed in order, so later entries override earlier ones for duplicate tool names.

参数:
  • loaderProfileLoader instance (already has a cache dir).

  • sources (list) – List of URI strings from the Profile config’s sources field.

_load_auto_discovered_configs()[源代码]

Load auto-discovered configs from the decorator registry and sub-package list registry.

Configs registered via @register_tool(config=...) are loaded from the singleton-per-type config registry. Configs registered by sub-package __init__.py files via register_tool_configs() are loaded from the flat list registry — this supports multiple tool instances per class (e.g. JLCSearch has 8 distinct configs).

_process_mcp_auto_loaders()[源代码]

处理所有 MCPAutoLoaderTool 实例,以自动发现并注册 MCP 工具。

该方法扫描所有已加载的工具,查找 MCPAutoLoaderTool 实例,并运行其自动发现流程,以从配置的服务器中查找并注册 MCP 工具。该方法正确处理异步操作,包含清理和错误处理机制。

副作用:
  • 可以向工具注册表中添加新工具

  • 打印有关发现过程的调试信息

  • 在MCP注册后更新工具计数

list_built_in_tools(mode='config', scan_all=False)[源代码]

列出所有内置工具类别及其在不同模式下的统计数据。

此方法提供了对 ToolUniverse 中所有可用工具的全面概览,并按类别进行组织。它直接从默认工具文件中读取数据以收集统计信息,因此即使在调用 load_tools() 之前也能正常工作。

参数:
  • mode (str, optional) – 工具的组织模式。默认值为 ‘config’。 - ‘config’:按配置文件类别组织(原始行为) - ‘type’:按工具类型(实现类)组织 - ‘list_name’:返回所有工具名称的列表 - ‘list_spec’:返回所有工具规格的列表

  • scan_all (bool, optional) – 是否递归扫描数据目录中的所有 JSON 文件。如果为 True,则扫描 data/ 及其子目录中的所有 JSON 文件。如果为 False(默认值),则使用预定义的工具文件映射。

返回:

  • 对于“config”和“type”模式:包含工具统计信息的字典

  • 对于“list_name”模式:所有工具名称的列表

  • 对于“list_spec”模式:所有工具规格的列表

返回类型:

dict or list

示例

>>> tool_universe = ToolUniverse()
>>> # Group by config file categories (predefined files only)
>>> stats = tool_universe.list_built_in_tools(mode='config')
>>> # Scan all JSON files in data directory recursively
>>> stats = tool_universe.list_built_in_tools(mode='config', scan_all=True)
>>> # Get all tool names from all JSON files
>>> tool_names = tool_universe.list_built_in_tools(mode='list_name', scan_all=True)

备注

  • 此方法直接从工具文件中读取数据,无需调用 load_tools()。

  • 工具已在各类别中去重,因此同一工具不会被重复计数。

  • 当调用此方法时,摘要会自动打印到控制台(list_name 和 list_spec 模式除外)。

  • 当 scan_all=True 时,系统会扫描 data/ 目录及其子目录中的所有 JSON 文件

_read_tools_from_file(file_path)[源代码]

从单个 JSON 文件中读取工具并进行错误处理。

参数:

file_path (str) – Path to the JSON file

返回:

List of tool configurations from the file

返回类型:

list

_scan_predefined_files()[源代码]

扫描预定义的工具文件(原始行为)。

返回:

(all_tools,all_tool_names),其中 all_tools 是工具配置的列表,all_tool_names 是用于去重的工具名称集合

返回类型:

tuple

_scan_all_json_files()[源代码]

递归扫描数据目录及其子目录中的所有 JSON 文件。

返回:

(all_tools,all_tool_names),其中 all_tools 是工具配置的列表,all_tool_names 是用于去重的工具名称集合

返回类型:

tuple

refresh_tool_name_desc(enable_full_desc=False, include_names=None, exclude_names=None, include_categories=None, exclude_categories=None)[源代码]

使用可选的过滤条件刷新工具名称和描述的映射。

此方法会重建内部工具字典,并根据提供的筛选条件生成经过筛选的工具名称和描述列表。

参数:
  • enable_full_desc (bool, optional) – 如果为 True,则包含完整的工具 JSON 作为描述。如果为 False,则使用“名称: 描述”格式。默认为 False。

  • include_names (list, optional) – 要包含的工具名称列表。

  • exclude_names (list, optional) – 要排除的工具名称列表。

  • include_categories (list, optional) – 包含的类别列表。

  • exclude_categories (list, optional) – 要排除的类别列表。

返回:

过滤后包含 (tool_name_list, tool_desc_list) 的元组。

返回类型:

tuple

prepare_one_tool_prompt(tool)[源代码]

为便于快速使用,请配置单一工具,并筛选出必要的关键项。

参数:

tool (dict) – 工具配置字典

返回:

仅使用必要的键进行工具配置以触发提示。

返回类型:

dict

prepare_tool_prompts(tool_list, mode='prompt', valid_keys=None)[源代码]

Prepare a list of tool configurations for different usage modes.

参数:
  • tool_list (list) – 工具配置字典列表

  • mode (str) – 准备模式。选项: - ‘prompt’:保留用于提示的关键字段(name、description、parameter、required) - ‘example’:保留用于示例的扩展关键字段(name、description、parameter、required、query_schema、fields、label、type) - ‘custom’:使用自定义的 valid_keys 参数

  • valid_keys (list, optional) – 自定义键列表,用于在 mode=’custom’ 时保留。

返回:

List of tool configurations with only specified keys.

返回类型:

list

get_tool_specification_by_names(tool_names, format='default')[源代码]

使用 tool_specification 方法通过工具名称获取工具规格。

参数:
  • tool_names (list) – 工具名称检索列表

  • format (str, optional) – 输出格式。选项:’default’,’openai’。如果选择 ‘openai’,将返回 OpenAI 函数调用格式。默认为 ‘default’。

返回:

指定名称的工具规格清单。未找到的工具将被报告,但不会包含在结果中。

返回类型:

list

get_one_tool_by_one_name(tool_name, return_prompt=True)[源代码]

根据名称检索单个工具规格,并可选择准备用于提示。

这是一个便捷方法,用于调用 get_one_tool_by_one_name。

参数:
  • tool_name (str) – 要检索的工具名称。

  • return_prompt (bool, optional) – 如果为 True,则返回用于提示的工具。 如果为 False,则返回完整的工具配置。 默认为 True。

返回:

如果找到工具配置,则返回;否则返回None。

返回类型:

dict or None

_sanitize_schema_for_openai(schema)[源代码]

Recursively sanitize a JSON Schema object for OpenAI function calling compatibility.

Handles three categories of issues that cause OpenAI to reject schemas:

  1. Legacy required flagsrequired: True/False embedded on individual property schemas (not valid JSON Schema). Collected and rebuilt as a proper top-level required array on the enclosing object schema.

  2. Array type unionstype: ["string", "null"] (JSON Schema draft-4 shorthand). OpenAI only accepts a single string for type; this converts them to anyOf: [{"type": "string"}, {"type": "null"}].

  3. ``additionalProperties: True`` — OpenAI’s validator rejects this value; the key is removed.

Recurses into properties, items, and anyOf / oneOf / allOf so that deeply-nested sub-schemas are also cleaned up.

参数:

schema (dict) – A JSON Schema dict to sanitize (not mutated in place).

返回:

A new dict with all issues resolved.

返回类型:

dict

tool_specification(tool_name, return_prompt=False, format='default')[源代码]

根据名称检索单个工具配置。

参数:
  • tool_name (str) – 要检索的工具名称。

  • return_prompt (bool, optional) – 如果为 True,则返回用于提示的工具。 如果为 False,则返回完整的工具配置。 默认为 False。

  • format (str, optional) – 输出格式。选项:’default’,’openai’。如果选择 ‘openai’,将返回 OpenAI 函数调用格式。默认为 ‘default’。

返回:

如果找到工具配置,则返回;否则返回None。

返回类型:

dict or None

get_tool_type_by_name(tool_name)[源代码]

根据工具名称获取其类型。

参数:

tool_name (str) – 工具名称。

返回:

工具的类型。

返回类型:

str

抛出:

KeyError – 如果在已加载的工具中未找到该工具名称。

call_id_gen()[源代码]

为函数调用生成随机调用 ID。

返回:

一个由字母和数字组成的随机9字符字符串。

返回类型:

str

tool_to_str(tool_list)[源代码]

将工具配置列表转换为格式化字符串。

参数:

tool_list (list) – 工具配置字典列表

返回:

JSON 格式的字符串表示工具,每个工具之间以双换行符分隔。

返回类型:

str

extract_function_call_json(lst, return_message=False, verbose=True, format='llama')[源代码]

从输入数据中提取函数调用的JSON。

此方法委托给实用函数 extract_function_call_json。

参数:
  • lst – 输入数据包含函数调用信息。

  • return_message (bool, optional) – 是否随 JSON 一同返回消息。默认为 False。

  • verbose (bool, optional) – 是否启用详细输出。默认为 True。

  • format (str, optional) – 提取的格式类型。默认值为“llama”。

返回:

函数调用 JSON,如果 return_message 为 True,则可选择包含消息。

返回类型:

dict or tuple

return_all_loaded_tools()[源代码]

返回所有已加载工具的深拷贝。

返回:

对 all_tools 列表进行深拷贝,以防止外部修改。

返回类型:

list

_execute_function_call_list(function_calls, stream_callback=None, use_cache=False, max_workers=None)[源代码]

执行一系列函数调用,可选择并行执行。

参数:
  • function_calls (List[Dict[str, Any]]) – Ordered list of function call dictionaries.

  • stream_callback – 可选的流式回调。

  • use_cache (bool) – Whether to enable cache lookups for each call.

  • max_workers (int | None) – 最大并行工作线程数;值 <=1 时将回退到顺序执行。

返回:

与``function_calls``顺序一致的结果列表。

返回类型:

List[Any]

_build_batch_jobs(function_calls)[源代码]
_prime_batch_cache(jobs, use_cache, results)[源代码]
_execute_batch_jobs(jobs_to_run, results, *, stream_callback, use_cache, max_workers)[源代码]
_ensure_tool_instance(job)[源代码]
_get_tool_semaphore(job, tool_semaphores)[源代码]
run(fcall_str, return_message=False, verbose=True, format='llama', stream_callback=None, use_cache=False, max_workers=None)[源代码]

Context-aware execution - works in both sync and async contexts.

In sync context:

result = tu.run(…) # Returns result directly (may block for async tools)

In async context:

result = await tu.run(…) # Returns coroutine, non-blocking

This method automatically detects the context and behaves appropriately.

参数:
  • fcall_str – 输入字符串或数据,其中包含函数调用信息。

  • return_message (bool, optional) – 是否返回格式化消息。默认为 False。

  • verbose (bool, optional) – 是否启用详细输出。默认为 True。

  • format (str, optional) – 解析的格式类型。默认为“llama”。

  • stream_callback – Optional callback for streaming responses.

  • use_cache (bool, optional) – Whether to use result caching. Defaults to False.

  • max_workers (Optional[int]) – Max workers for parallel batch execution (sync only).

返回:

Result (sync) or coroutine (async) depending on context.

_run_sync(fcall_str, return_message=False, verbose=True, format='llama', stream_callback=None, use_cache=False, max_workers=None)[源代码]

Synchronous execution implementation (original run logic).

For async tools, this will create an event loop if needed.

_format_batch_as_messages(batch_results, function_call_json, message)[源代码]

Format batch results as tool/assistant message dicts for return_message mode.

async _run_async(fcall_str, return_message=False, verbose=True, format='llama', stream_callback=None, use_cache=False)[源代码]

Asynchronous execution implementation (non-blocking).

Handles both sync and async tools in async context.

async _execute_function_call_list_async(function_call_list, stream_callback=None, use_cache=False)[源代码]

Execute multiple function calls asynchronously and in parallel.

Uses return_exceptions=True so one failure does not abort others.

_resolve_tool_name(function_name)[源代码]

Resolve tool name to its primary identifier.

Uses the ToolNameMapper to handle: 1. Aliases (e.g., old tool names) -> primary name 2. Original names -> shortened names (if shortening enabled) 3. Already primary names -> return as-is

参数:

function_name (str) – Tool name (can be alias, original, or shortened)

返回:

Resolved tool name (primary identifier in all_tool_dict)

返回类型:

str

run_one_function(function_call_json, stream_callback=None, use_cache=False, validate=True)[源代码]

执行单个函数调用。

此方法用于验证函数调用,必要时初始化工具,并使用提供的参数执行。如果启用了钩子,还会应用输出钩子来处理结果。

参数:
  • function_call_json (dict) – 包含函数名称和参数的字典。

  • stream_callback (callable, optional) – 用于流式响应的回调函数。

  • use_cache (bool, optional) – Whether to use result caching. Defaults to False.

  • validate (bool, optional) – Whether to validate parameters against schema. Defaults to True.

返回:

工具执行结果,或在验证失败时返回的错误信息。

返回类型:

str or dict

async run_one_function_async(function_call_json, stream_callback=None, use_cache=False, validate=True)[源代码]

Async version of run_one_function.

Execute a single function call asynchronously (non-blocking). Handles both sync and async tools intelligently.

_execute_tool_with_stream(tool_instance, arguments, stream_callback, use_cache=False, validate=True)[源代码]

Invoke a tool, forwarding stream callbacks and other parameters when supported.

async _invoke_tool_async(tool_instance, tool_arguments, **kwargs)[源代码]

Invoke tool.run, using await for async tools or a thread pool for sync tools.

async _execute_tool_with_stream_async(tool_instance, arguments, stream_callback, use_cache=False, validate=True)[源代码]

Async version of _execute_tool_with_stream.

Handles both sync and async tools: async tools are awaited directly, sync tools run in a thread pool.

toggle_hooks(enabled)[源代码]

全局启用或禁用输出钩子。

此方法允许在运行时控制挂钩系统。启用时,如果 HookManager 尚未初始化,则会对其进行初始化。禁用时,则会停用 HookManager。

参数:

enabled (bool) – True 表示启用钩子,False 表示禁用

init_tool(tool=None, tool_name=None, add_to_cache=True)[源代码]

从配置或名称初始化工具实例。

此方法使用工具类型映射创建一个新的工具实例,并可选择将其缓存以供将来使用。它还处理一些特殊情况,例如 OpentargetToolDrugNameMatch,这种情况需要额外的依赖项。

参数:
  • tool (dict, optional) – 工具配置字典。必须提供此项或 tool_name。

  • tool_name (str, optional) – 用于初始化的工具类型名称。必须提供此项或工具。

  • add_to_cache (bool, optional) – 是否缓存已初始化的工具。默认为 True。

返回:

Initialized tool instance or None if initialization fails.

返回类型:

object

抛出:

KeyError – 如果在 tool_type_mappings 中未找到工具类型。

_get_tool_instance(function_name, cache=True)[源代码]

获取或创建工具实例,并可选择启用缓存。

_auto_load_tools_if_empty(function_name=None)[源代码]

Automatically load tools if the tools dictionary is empty.

参数:

function_name (str) – Optional tool name to check after loading

返回:

True if tools were loaded successfully, False otherwise

返回类型:

bool

_make_cache_key(function_name, arguments, tool_instance=None)[源代码]

通过委托给 BaseTool 生成缓存键。

参数:
  • function_name (str) – Name of the tool/function

  • arguments (dict) – Arguments passed to the tool

  • tool_instance – Optional pre-fetched tool instance to avoid recreation

返回:

Cache key string

返回类型:

str

_coerce_value_to_type(value, schema)[源代码]

Coerce a value to match the schema’s expected type.

This function attempts to convert string values to integers, floats, or booleans when the schema expects those types. This makes the system more lenient with user input from LLMs that provide numeric values as strings.

参数:
  • value (Any) – The value to coerce

  • schema (dict) – The JSON schema definition for this value

返回:

The coerced value (or original if coercion fails or not applicable)

返回类型:

Any

_coerce_arguments_to_schema(function_name, arguments)[源代码]

Coerce all arguments for a tool to match their schema expectations.

参数:
  • function_name (str) – Name of the tool

  • arguments (dict) – Dictionary of arguments to coerce

返回:

New dictionary with coerced arguments

返回类型:

dict

_validate_parameters(function_name, arguments)[源代码]

通过委托给 BaseTool 验证参数。

_check_basic_type(value, expected_type)[源代码]

检查值是否符合预期的基本类型。

_classify_exception(exception, function_name, arguments)[源代码]

通过委派至 BaseTool 对异常进行分类。

_create_dual_format_error(error)[源代码]

创建双格式错误响应以确保向后兼容。

refresh_tools()[源代码]

Re-scan workspace and reload all tool configurations.

Picks up new JSON/Python tool files added to the workspace .tooluniverse/tools/ directory since startup, and re-discovers entry-point plugins installed since the process started. Clears the existing tool registry first so the result is always a clean reload.

eager_load_tools(names=None)[源代码]

预先实例化工具以减少首次调用延迟。

property _cache

用于测试目的访问内部缓存。

clear_cache()[源代码]

清除结果缓存。

clear_tools(clear_cache=False)[源代码]

Clear all loaded tools from the registry.

This method resets the tool registry to its initial empty state, allowing you to: - Free memory after loading many tools - Reset state between different workflows - Load a fresh set of tools for a new context - Control which tools are visible to tool finder

参数:

clear_cache (bool, optional) – Whether to also clear the result cache. Defaults to False.

示例

# Clear tools but keep cached results tu.clear_tools()

# Clear both tools and cached results tu.clear_tools(clear_cache=True)

# Load specific tools after clearing tu.clear_tools() tu.load_tools(include_tools=[“UniProt_get_entry_by_accession”])

备注

  • This does not affect tool instances in callable_functions cache

  • Subsequent tool access will trigger on-demand loading

  • Use clear_cache=True if you also want to clear result cache

get_cache_stats()[源代码]

返回缓存统计数据。

dump_cache(namespace=None)[源代码]

仅迭代缓存条目(仅限持久层)。

close()[源代码]

释放资源。

get_tool_health(tool_name=None)[源代码]

获取工具的健康状态。

check_function_call(fcall_str, function_config=None, format='llama')[源代码]

根据工具配置验证函数调用。

此方法通过验证函数名称是否存在以及参数是否与预期参数匹配来检查函数调用是否有效。

参数:
  • fcall_str – 函数调用字符串或数据以进行验证。

  • function_config (dict, optional) – 用于验证的特定功能配置。如果为 None,则使用已加载的工具配置。

  • format (str, optional) – 解析的格式类型。默认为“llama”。

返回:

一个元组 (is_valid, message),其中: - is_valid (bool):如果函数调用有效,则为 True;否则为 False - message (str):如果无效,则为错误信息;如果有效,则为空

返回类型:

tuple

export_tool_names(output_file, category_filter=None)[源代码]

将工具名称导出到文本文件(每行一个)。

参数:
  • output_file (str) – 输出文件的路径

  • category_filter (list, optional) – 筛选类别列表

filter_tools(include_tools=None, exclude_tools=None, include_tool_types=None, exclude_tool_types=None)[源代码]

Filter tools based on inclusion/exclusion criteria.

参数:
  • include_tools (set, optional) – Set of tool names to include

  • exclude_tools (set, optional) – 要排除的工具名称集合

  • include_tool_types (set, optional) – Set of tool types to include

  • exclude_tool_types (set, optional) – Set of tool types to exclude

返回:

Filtered list of tool configurations

返回类型:

list

get_required_parameters(tool_name)[源代码]

获取特定工具所需的参数。

参数:

tool_name (str) – Name of the tool

返回:

所需参数名称列表

返回类型:

list

get_available_tools(category_filter=None, name_only=True)[源代码]

获取可用工具,并可选择按类别筛选。

参数:
  • category_filter (list, optional) – 筛选类别列表

  • name_only (bool) – 如果为 True,则仅返回工具名称;如果为 False,则返回完整配置

返回:

工具名称或工具配置列表

返回类型:

list

find_tools_by_pattern(pattern, search_in='name', case_sensitive=False)[源代码]

查找名称或描述中符合特定模式的工具。

参数:
  • pattern (str) – 搜索模式

  • search_in (str) – 搜索范围 - “名称”、“描述”或“两者”

  • case_sensitive (bool) – 是否应区分大小写进行搜索

返回:

匹配工具配置列表

返回类型:

list

get_tool_by_name(tool_names, format='default')[源代码]

根据工具名称检索配置。

已弃用:请改用 tool_specification()。

参数:
  • tool_names (list) – 工具名称检索列表

  • format (str, optional) – 输出格式。选项:’default’,’openai’。如果选择 ‘openai’,将返回 OpenAI 函数调用格式。默认为 ‘default’。

返回:

指定名称的工具配置列表。未找到的工具将被报告,但不会包含在结果中。

返回类型:

list

get_tool_description(tool_name)[源代码]

根据工具名称获取其描述。

已弃用:请改用 tool_specification()。

参数:

tool_name (str) – 工具名称。

返回:

如果找到工具配置,则返回;否则返回None。

返回类型:

dict or None

remove_keys(tool_list, invalid_keys)[源代码]

从工具配置列表中移除指定的键。

已弃用:请使用 prepare_tool_prompts(mode=’custom’, valid_keys=…) 替代。

参数:
  • tool_list (list) – 工具配置字典列表

  • invalid_keys (list) – 每个工具配置中需要移除的键列表。

返回:

深度复制工具列表,并移除指定的键。

返回类型:

list

prepare_tool_examples(tool_list)[源代码]

为示例使用准备工具配置,同时保留扩展的密钥集。

已弃用:请改用 prepare_tool_prompts(mode=’example’)。

参数:

tool_list (list) – 工具配置字典列表

返回:

仅复制工具列表中与示例相关的关键项。

返回类型:

list

select_tools(include_names=None, exclude_names=None, include_categories=None, exclude_categories=None)[源代码]

根据工具名称和/或类别(tool_files 键)选择工具。

已弃用:请改用 filter_tools()。

参数:
  • include_names (list, optional) – 要包含的工具名称列表。如果为 None,则包含所有工具。

  • exclude_names (list, optional) – 要排除的工具名称列表。

  • include_categories (list, optional) – 包含的类别列表(tool_files 键)。如果为 None,则包含所有类别。

  • exclude_categories (list, optional) – 要排除的类别列表(tool_files 键)。

返回:

所选工具配置列表。

返回类型:

list

filter_tool_lists(tool_name_list, tool_desc_list, include_names=None, exclude_names=None, include_categories=None, exclude_categories=None)[源代码]

根据名称和/或类别直接筛选工具名称和描述列表。

已弃用:请改用 filter_tools() 并手动进行列表过滤。

参数:
  • tool_name_list (list) – 工具名称筛选列表。

  • tool_desc_list (list) – 用于筛选的工具描述列表(必须与 tool_name_list 对应)。

  • include_names (list, optional) – 要包含的工具名称列表。

  • exclude_names (list, optional) – 要排除的工具名称列表。

  • include_categories (list, optional) – 包含的类别列表。

  • exclude_categories (list, optional) – 要排除的类别列表。

返回:

包含 (filtered_tool_name_list, filtered_tool_desc_list) 的元组。

返回类型:

tuple

load_tools_from_names_list(tool_names, clear_existing=True)[源代码]

仅通过工具名称加载特定工具。

已弃用:请使用 load_tools(include_tools=…) 替代。

参数:
  • tool_names (list) – 要加载的工具名称列表

  • clear_existing (bool) – 是否先清除现有工具

返回:

成功加载的工具数量

返回类型:

int

load_profile(uri, _merge_workspace=True, **kwargs)[源代码]

Load Profile configuration and apply it to the ToolUniverse instance.

This is a high-level method that loads a Profile configuration from various sources (HuggingFace, local files, HTTP URLs) and applies the tool settings to the current instance.

When a workspace profile.yaml exists and _merge_workspace=True (the default), the workspace config is used as the base and the loaded config is deep-merged on top — so any key in the loaded config overrides the workspace default.

参数:
  • uri (str) – Profile URI (e.g., “hf:user/repo”, “./config.yaml”, “https://example.com/config.yaml”)

  • _merge_workspace (bool) – Whether to merge the workspace profile.yaml as a base config. Set to False when auto-applying the workspace yaml itself.

  • **kwargs – Additional parameters to override Profile configuration (e.g., exclude_tools=[“tool1”], include_tools=[“tool2”])

返回:

The loaded (and possibly merged) Profile configuration

返回类型:

dict

示例

# Load from HuggingFace config = tu.load_profile(“hf:community/proteomics-toolkit”)

# Load local file with overrides config = tu.load_profile(“./my-config.yaml”, exclude_tools=[“slow_tool”])

# Load from HTTP URL config = tu.load_profile(”https://example.com/config.yaml”)

_apply_log_level_config(log_level)[源代码]

Apply log level from Profile config.

_apply_cache_config(cache_config)[源代码]

Reconfigure the cache manager from Profile cache settings.

Only the keys present in cache_config are changed; omitted keys keep their current values.

_apply_llm_config(llm_config)[源代码]

Apply LLM configuration from Profile.

参数:

llm_config (Dict[str, Any]) – LLM configuration dictionary

_apply_hooks_config(hooks_config)[源代码]

Apply hooks configuration from Profile.

参数:

hooks_config (List[Dict[str, Any]]) – Hooks configuration list

_load_tools_from_mcp_server(server_url, config)

从特定的MCP服务器加载工具。

discover_mcp_tools(server_urls=None, **kwargs)

在不加载的情况下,发现来自MCP服务器的可用工具。

此方法连接到MCP服务器,以发现可用的工具,而无需实际将它们注册到ToolUniverse中。适用于探索和选择性加载工具。

参数:
  • server_urls (list of str, optional) – 要发现的MCP服务器URL列表

  • **kwargs – 附加选项: - timeout(int):连接超时时间(默认值:30) - include_schemas(bool):包含工具参数模式(默认值:True)

返回:

按服务器组织的工具发现结果

返回类型:

dict

示例

tu = ToolUniverse()

# Discover what's available
discovery = tu.discover_mcp_tools([
    "http://localhost:8001",
    "http://ml-server:8002"
])

# Show available tools
for server, info in discovery["servers"].items():
    print(f"\n{server}:")
    for tool in info.get("tools", []):
        print(f"  - {tool['name']}: {tool['description']}")
list_mcp_connections()

列出所有活动的MCP连接和已加载的工具。

返回:

关于MCP连接、自动加载器和已加载工具的信息

返回类型:

dict

示例

tu = ToolUniverse()
tu.load_mcp_tools(["http://localhost:8001"])

connections = tu.list_mcp_connections()
print(f"Active MCP connections: {len(connections['connections'])}")
load_mcp_tools(server_urls=None, **kwargs)

将MCP工具从远程服务器加载到此ToolUniverse实例中。

此方法会自动从MCP服务器中发现工具,并将其注册为ToolUniverse工具,从而实现远程功能的无缝使用。

参数:
  • server_urls (list of str, optional) –

    MCP 服务器 URL 列表,用于加载工具。示例:

    如果为 None,则尝试从本地 MCP 工具注册表中发现。

  • **kwargs

    其他配置选项:

    • tool_prefix(字符串):加载工具名称的前缀(默认值:”mcp_”)

    • timeout(int):连接超时时间(单位:秒)(默认值:30)

    • auto_register(布尔值):是否自动注册发现的工具(默认值:True)

    • selected_tools (list): 从每个服务器加载的特定工具

    • 类别(列表):用于筛选的工具类别

返回:

已加载工具的摘要,包括数量及遇到的任何错误。

返回类型:

dict

示例

Load from specific servers:

tu = ToolUniverse()

# Load tools from multiple MCP servers
result = tu.load_mcp_tools([
    "http://localhost:8001",  # Local analysis server
    "http://ml-server:8002",  # Remote ML server
    "ws://realtime:9000"      # WebSocket server
])

print(f"Loaded {result['total_tools']} tools from {result['servers_connected']} servers")

Load with custom configuration:

tu.load_mcp_tools(
server_urls=["http://localhost:8001"],
tool_prefix="analysis\_",
timeout=60,
selected_tools=["protein_analysis", "drug_interaction"]

从本地注册表自动发现: `python # 如果您已在本地注册了MCP工具,自动发现其服务器 tu.load_mcp_tools()  # 使用来自mcp_tool_registry的服务器 `

_store_profile_metadata(config)[源代码]

Store Profile metadata for reference.

参数:

config (Dict[str, Any]) – Profile configuration dictionary

get_profile_llm_config()[源代码]

Get the current Profile LLM configuration.

返回:

LLM configuration dictionary or None if not set

返回类型:

Dict[str, Any] | None

get_profile_metadata()[源代码]

Get the current Profile metadata.

返回:

Profile metadata dictionary or None if not set

返回类型:

Dict[str, Any] | None