tooluniverse 1.0.6__py3-none-any.whl → 1.0.8__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of tooluniverse might be problematic. Click here for more details.

Files changed (862) hide show
  1. tooluniverse/__init__.py +56 -10
  2. tooluniverse/admetai_tool.py +8 -4
  3. tooluniverse/agentic_tool.py +40 -4
  4. tooluniverse/arxiv_tool.py +2 -6
  5. tooluniverse/base_tool.py +210 -25
  6. tooluniverse/biogrid_tool.py +118 -0
  7. tooluniverse/biorxiv_tool.py +35 -16
  8. tooluniverse/build_optimizer.py +87 -0
  9. tooluniverse/cache/__init__.py +3 -0
  10. tooluniverse/cache/memory_cache.py +99 -0
  11. tooluniverse/cache/result_cache_manager.py +235 -0
  12. tooluniverse/cache/sqlite_backend.py +257 -0
  13. tooluniverse/cellosaurus_tool.py +1332 -0
  14. tooluniverse/clinvar_tool.py +90 -0
  15. tooluniverse/compose_scripts/enhanced_multi_agent_literature_search.py +310 -0
  16. tooluniverse/compose_scripts/multi_agent_literature_search.py +794 -0
  17. tooluniverse/compose_scripts/tool_graph_generation.py +68 -35
  18. tooluniverse/compose_scripts/tool_metadata_generator.py +205 -105
  19. tooluniverse/compose_tool.py +93 -8
  20. tooluniverse/core_tool.py +46 -44
  21. tooluniverse/crossref_tool.py +89 -4
  22. tooluniverse/custom_tool.py +28 -0
  23. tooluniverse/data/agentic_tools.json +1271 -1179
  24. tooluniverse/data/alphafold_tools.json +356 -105
  25. tooluniverse/data/arxiv_tools.json +85 -81
  26. tooluniverse/data/biorxiv_tools.json +69 -64
  27. tooluniverse/data/cellosaurus_tools.json +260 -0
  28. tooluniverse/data/chembl_tools.json +27 -12
  29. tooluniverse/data/clinicaltrials_gov_tools.json +377 -302
  30. tooluniverse/data/compose_tools.json +123 -16
  31. tooluniverse/data/core_tools.json +104 -99
  32. tooluniverse/data/crossref_tools.json +131 -63
  33. tooluniverse/data/dailymed_tools.json +17 -3
  34. tooluniverse/data/dataset_tools.json +1031 -588
  35. tooluniverse/data/dblp_tools.json +135 -64
  36. tooluniverse/data/disease_target_score_tools.json +20 -10
  37. tooluniverse/data/doaj_tools.json +131 -87
  38. tooluniverse/data/drug_discovery_agents.json +292 -0
  39. tooluniverse/data/embedding_tools.json +362 -299
  40. tooluniverse/data/enrichr_tools.json +34 -27
  41. tooluniverse/data/europe_pmc_tools.json +107 -16
  42. tooluniverse/data/fatcat_tools.json +71 -66
  43. tooluniverse/data/fda_drug_adverse_event_tools.json +1061 -445
  44. tooluniverse/data/fda_drug_labeling_tools.json +6858 -6901
  45. tooluniverse/data/finder_tools.json +32 -37
  46. tooluniverse/data/gene_ontology_tools.json +19 -7
  47. tooluniverse/data/genomics_tools.json +174 -0
  48. tooluniverse/data/geo_tools.json +86 -0
  49. tooluniverse/data/gwas_tools.json +1720 -959
  50. tooluniverse/data/hal_tools.json +69 -64
  51. tooluniverse/data/hpa_tools.json +53 -14
  52. tooluniverse/data/humanbase_tools.json +51 -43
  53. tooluniverse/data/idmap_tools.json +76 -70
  54. tooluniverse/data/literature_search_tools.json +306 -0
  55. tooluniverse/data/markitdown_tools.json +51 -0
  56. tooluniverse/data/mcp_client_tools_example.json +122 -107
  57. tooluniverse/data/medlineplus_tools.json +50 -10
  58. tooluniverse/data/medrxiv_tools.json +69 -64
  59. tooluniverse/data/molecule_2d_tools.json +134 -0
  60. tooluniverse/data/molecule_3d_tools.json +164 -0
  61. tooluniverse/data/monarch_tools.json +112 -110
  62. tooluniverse/data/odphp_tools.json +389 -119
  63. tooluniverse/data/openaire_tools.json +89 -79
  64. tooluniverse/data/openalex_tools.json +96 -31
  65. tooluniverse/data/opentarget_tools.json +1457 -1372
  66. tooluniverse/data/osf_preprints_tools.json +77 -73
  67. tooluniverse/data/packages/bioinformatics_core_tools.json +40 -10
  68. tooluniverse/data/packages/cheminformatics_tools.json +20 -5
  69. tooluniverse/data/packages/genomics_tools.json +36 -9
  70. tooluniverse/data/packages/machine_learning_tools.json +36 -9
  71. tooluniverse/data/packages/scientific_computing_tools.json +20 -5
  72. tooluniverse/data/packages/single_cell_tools.json +20 -5
  73. tooluniverse/data/packages/structural_biology_tools.json +16 -4
  74. tooluniverse/data/packages/visualization_tools.json +20 -5
  75. tooluniverse/data/pmc_tools.json +108 -103
  76. tooluniverse/data/ppi_tools.json +139 -0
  77. tooluniverse/data/protein_structure_3d_tools.json +138 -0
  78. tooluniverse/data/pubchem_tools.json +37 -12
  79. tooluniverse/data/pubmed_tools.json +124 -58
  80. tooluniverse/data/pubtator_tools.json +68 -60
  81. tooluniverse/data/rcsb_pdb_tools.json +1532 -1221
  82. tooluniverse/data/semantic_scholar_tools.json +54 -22
  83. tooluniverse/data/special_tools.json +8 -6
  84. tooluniverse/data/tool_composition_tools.json +112 -82
  85. tooluniverse/data/unified_guideline_tools.json +909 -0
  86. tooluniverse/data/url_fetch_tools.json +102 -82
  87. tooluniverse/data/uspto_tools.json +49 -30
  88. tooluniverse/data/wikidata_sparql_tools.json +42 -39
  89. tooluniverse/data/xml_tools.json +3274 -3113
  90. tooluniverse/data/zenodo_tools.json +83 -76
  91. tooluniverse/dblp_tool.py +76 -6
  92. tooluniverse/dbsnp_tool.py +71 -0
  93. tooluniverse/default_config.py +19 -0
  94. tooluniverse/doaj_tool.py +76 -17
  95. tooluniverse/doctor.py +48 -0
  96. tooluniverse/ensembl_tool.py +61 -0
  97. tooluniverse/europe_pmc_tool.py +132 -17
  98. tooluniverse/exceptions.py +170 -0
  99. tooluniverse/execute_function.py +930 -387
  100. tooluniverse/fatcat_tool.py +0 -1
  101. tooluniverse/generate_tools.py +481 -0
  102. tooluniverse/genomics_gene_search_tool.py +56 -0
  103. tooluniverse/geo_tool.py +116 -0
  104. tooluniverse/gnomad_tool.py +63 -0
  105. tooluniverse/hal_tool.py +1 -1
  106. tooluniverse/llm_clients.py +101 -124
  107. tooluniverse/markitdown_tool.py +159 -0
  108. tooluniverse/mcp_client_tool.py +10 -5
  109. tooluniverse/mcp_tool_registry.py +4 -1
  110. tooluniverse/medrxiv_tool.py +32 -13
  111. tooluniverse/memory_manager.py +166 -0
  112. tooluniverse/molecule_2d_tool.py +274 -0
  113. tooluniverse/molecule_3d_tool.py +441 -0
  114. tooluniverse/odphp_tool.py +49 -14
  115. tooluniverse/openaire_tool.py +5 -20
  116. tooluniverse/openalex_tool.py +34 -0
  117. tooluniverse/osf_preprints_tool.py +1 -1
  118. tooluniverse/pmc_tool.py +54 -56
  119. tooluniverse/protein_structure_3d_tool.py +295 -0
  120. tooluniverse/pubmed_tool.py +69 -6
  121. tooluniverse/remote/boltz/boltz_mcp_server.py +3 -1
  122. tooluniverse/remote/uspto_downloader/uspto_downloader_mcp_server.py +3 -1
  123. tooluniverse/semantic_scholar_tool.py +40 -10
  124. tooluniverse/smcp.py +149 -213
  125. tooluniverse/smcp_server.py +97 -55
  126. tooluniverse/string_tool.py +112 -0
  127. tooluniverse/tool_registry.py +35 -3
  128. tooluniverse/tools/ADMETAI_predict_BBB_penetrance.py +46 -0
  129. tooluniverse/tools/ADMETAI_predict_CYP_interactions.py +46 -0
  130. tooluniverse/tools/ADMETAI_predict_bioavailability.py +46 -0
  131. tooluniverse/tools/ADMETAI_predict_clearance_distribution.py +49 -0
  132. tooluniverse/tools/ADMETAI_predict_nuclear_receptor_activity.py +49 -0
  133. tooluniverse/tools/ADMETAI_predict_physicochemical_properties.py +49 -0
  134. tooluniverse/tools/ADMETAI_predict_solubility_lipophilicity_hydration.py +49 -0
  135. tooluniverse/tools/ADMETAI_predict_stress_response.py +46 -0
  136. tooluniverse/tools/ADMETAI_predict_toxicity.py +46 -0
  137. tooluniverse/tools/ADMETAnalyzerAgent.py +59 -0
  138. tooluniverse/tools/AdvancedCodeQualityAnalyzer.py +63 -0
  139. tooluniverse/tools/AdverseEventICDMapper.py +46 -0
  140. tooluniverse/tools/AdverseEventPredictionQuestionGenerator.py +52 -0
  141. tooluniverse/tools/AdverseEventPredictionQuestionGeneratorWithContext.py +59 -0
  142. tooluniverse/tools/ArXiv_search_papers.py +63 -0
  143. tooluniverse/tools/ArgumentDescriptionOptimizer.py +55 -0
  144. tooluniverse/tools/BioRxiv_search_preprints.py +52 -0
  145. tooluniverse/tools/BiomarkerDiscoveryWorkflow.py +55 -0
  146. tooluniverse/tools/CMA_Guidelines_Search.py +52 -0
  147. tooluniverse/tools/CORE_search_papers.py +67 -0
  148. tooluniverse/tools/CallAgent.py +46 -0
  149. tooluniverse/tools/ChEMBL_search_similar_molecules.py +59 -0
  150. tooluniverse/tools/ClinVar_search_variants.py +52 -0
  151. tooluniverse/tools/ClinicalTrialDesignAgent.py +63 -0
  152. tooluniverse/tools/CodeOptimizer.py +55 -0
  153. tooluniverse/tools/CodeQualityAnalyzer.py +71 -0
  154. tooluniverse/tools/CompoundDiscoveryAgent.py +59 -0
  155. tooluniverse/tools/ComprehensiveDrugDiscoveryPipeline.py +49 -0
  156. tooluniverse/tools/Crossref_search_works.py +55 -0
  157. tooluniverse/tools/DBLP_search_publications.py +52 -0
  158. tooluniverse/tools/DOAJ_search_articles.py +55 -0
  159. tooluniverse/tools/DailyMed_get_spl_by_setid.py +52 -0
  160. tooluniverse/tools/DailyMed_search_spls.py +79 -0
  161. tooluniverse/tools/DataAnalysisValidityReviewer.py +49 -0
  162. tooluniverse/tools/DescriptionAnalyzer.py +55 -0
  163. tooluniverse/tools/DescriptionQualityEvaluator.py +59 -0
  164. tooluniverse/tools/DiseaseAnalyzerAgent.py +52 -0
  165. tooluniverse/tools/DomainExpertValidator.py +63 -0
  166. tooluniverse/tools/DrugInteractionAnalyzerAgent.py +52 -0
  167. tooluniverse/tools/DrugOptimizationAgent.py +63 -0
  168. tooluniverse/tools/DrugSafetyAnalyzer.py +59 -0
  169. tooluniverse/tools/Ensembl_lookup_gene_by_symbol.py +52 -0
  170. tooluniverse/tools/EthicalComplianceReviewer.py +49 -0
  171. tooluniverse/tools/EuropePMC_Guidelines_Search.py +52 -0
  172. tooluniverse/tools/EuropePMC_search_articles.py +52 -0
  173. tooluniverse/tools/ExperimentalDesignScorer.py +55 -0
  174. tooluniverse/tools/FAERS_count_additive_administration_routes.py +52 -0
  175. tooluniverse/tools/FAERS_count_additive_adverse_reactions.py +71 -0
  176. tooluniverse/tools/FAERS_count_additive_event_reports_by_country.py +63 -0
  177. tooluniverse/tools/FAERS_count_additive_reaction_outcomes.py +63 -0
  178. tooluniverse/tools/FAERS_count_additive_reports_by_reporter_country.py +63 -0
  179. tooluniverse/tools/FAERS_count_additive_seriousness_classification.py +63 -0
  180. tooluniverse/tools/FAERS_count_country_by_drug_event.py +63 -0
  181. tooluniverse/tools/FAERS_count_death_related_by_drug.py +49 -0
  182. tooluniverse/tools/FAERS_count_drug_routes_by_event.py +52 -0
  183. tooluniverse/tools/FAERS_count_drugs_by_drug_event.py +63 -0
  184. tooluniverse/tools/FAERS_count_outcomes_by_drug_event.py +63 -0
  185. tooluniverse/tools/FAERS_count_patient_age_distribution.py +49 -0
  186. tooluniverse/tools/FAERS_count_reactions_by_drug_event.py +71 -0
  187. tooluniverse/tools/FAERS_count_reportercountry_by_drug_event.py +63 -0
  188. tooluniverse/tools/FAERS_count_seriousness_by_drug_event.py +63 -0
  189. tooluniverse/tools/FDA_get_abuse_dependence_info_by_drug_name.py +55 -0
  190. tooluniverse/tools/FDA_get_abuse_info_by_drug_name.py +55 -0
  191. tooluniverse/tools/FDA_get_accessories_info_by_drug_name.py +55 -0
  192. tooluniverse/tools/FDA_get_active_ingredient_info_by_drug_name.py +55 -0
  193. tooluniverse/tools/FDA_get_adverse_reactions_by_drug_name.py +55 -0
  194. tooluniverse/tools/FDA_get_alarms_by_drug_name.py +55 -0
  195. tooluniverse/tools/FDA_get_animal_pharmacology_info_by_drug_name.py +55 -0
  196. tooluniverse/tools/FDA_get_assembly_installation_info_by_drug_name.py +55 -0
  197. tooluniverse/tools/FDA_get_boxed_warning_info_by_drug_name.py +55 -0
  198. tooluniverse/tools/FDA_get_brand_name_generic_name.py +52 -0
  199. tooluniverse/tools/FDA_get_calibration_instructions_by_drug_name.py +55 -0
  200. tooluniverse/tools/FDA_get_carcinogenic_mutagenic_fertility_by_drug_name.py +55 -0
  201. tooluniverse/tools/FDA_get_child_safety_info_by_drug_name.py +55 -0
  202. tooluniverse/tools/FDA_get_clinical_pharmacology_by_drug_name.py +55 -0
  203. tooluniverse/tools/FDA_get_clinical_studies_info_by_drug_name.py +55 -0
  204. tooluniverse/tools/FDA_get_contact_for_questions_info_by_drug_name.py +55 -0
  205. tooluniverse/tools/FDA_get_contraindications_by_drug_name.py +55 -0
  206. tooluniverse/tools/FDA_get_controlled_substance_DEA_schedule_info_by_drug_name.py +55 -0
  207. tooluniverse/tools/FDA_get_dear_health_care_provider_letter_info_by_drug_name.py +55 -0
  208. tooluniverse/tools/FDA_get_dependence_info_by_drug_name.py +55 -0
  209. tooluniverse/tools/FDA_get_disposal_info_by_drug_name.py +55 -0
  210. tooluniverse/tools/FDA_get_do_not_use_info_by_drug_name.py +55 -0
  211. tooluniverse/tools/FDA_get_document_id_by_drug_name.py +55 -0
  212. tooluniverse/tools/FDA_get_dosage_and_storage_information_by_drug_name.py +55 -0
  213. tooluniverse/tools/FDA_get_dosage_forms_and_strengths_by_drug_name.py +55 -0
  214. tooluniverse/tools/FDA_get_drug_generic_name.py +46 -0
  215. tooluniverse/tools/FDA_get_drug_interactions_by_drug_name.py +55 -0
  216. tooluniverse/tools/FDA_get_drug_name_by_SPL_ID.py +55 -0
  217. tooluniverse/tools/FDA_get_drug_name_by_adverse_reaction.py +59 -0
  218. tooluniverse/tools/FDA_get_drug_name_by_calibration_instructions.py +59 -0
  219. tooluniverse/tools/FDA_get_drug_name_by_dependence_info.py +59 -0
  220. tooluniverse/tools/FDA_get_drug_name_by_document_id.py +55 -0
  221. tooluniverse/tools/FDA_get_drug_name_by_dosage_info.py +55 -0
  222. tooluniverse/tools/FDA_get_drug_name_by_environmental_warning.py +59 -0
  223. tooluniverse/tools/FDA_get_drug_name_by_inactive_ingredient.py +59 -0
  224. tooluniverse/tools/FDA_get_drug_name_by_info_on_conditions_for_doctor_consultation.py +55 -0
  225. tooluniverse/tools/FDA_get_drug_name_by_labor_and_delivery_info.py +59 -0
  226. tooluniverse/tools/FDA_get_drug_name_by_microbiology.py +59 -0
  227. tooluniverse/tools/FDA_get_drug_name_by_other_safety_info.py +55 -0
  228. tooluniverse/tools/FDA_get_drug_name_by_pharmacodynamics.py +59 -0
  229. tooluniverse/tools/FDA_get_drug_name_by_pharmacogenomics.py +59 -0
  230. tooluniverse/tools/FDA_get_drug_name_by_precautions.py +55 -0
  231. tooluniverse/tools/FDA_get_drug_name_by_pregnancy_or_breastfeeding_info.py +59 -0
  232. tooluniverse/tools/FDA_get_drug_name_by_principal_display_panel.py +59 -0
  233. tooluniverse/tools/FDA_get_drug_name_by_reference.py +55 -0
  234. tooluniverse/tools/FDA_get_drug_name_by_set_id.py +55 -0
  235. tooluniverse/tools/FDA_get_drug_name_by_stop_use_info.py +55 -0
  236. tooluniverse/tools/FDA_get_drug_name_by_storage_and_handling_info.py +55 -0
  237. tooluniverse/tools/FDA_get_drug_name_by_warnings.py +55 -0
  238. tooluniverse/tools/FDA_get_drug_name_from_patient_package_insert.py +59 -0
  239. tooluniverse/tools/FDA_get_drug_names_by_abuse_dependence_info.py +55 -0
  240. tooluniverse/tools/FDA_get_drug_names_by_abuse_info.py +63 -0
  241. tooluniverse/tools/FDA_get_drug_names_by_accessories.py +63 -0
  242. tooluniverse/tools/FDA_get_drug_names_by_active_ingredient.py +63 -0
  243. tooluniverse/tools/FDA_get_drug_names_by_alarm.py +63 -0
  244. tooluniverse/tools/FDA_get_drug_names_by_animal_pharmacology_info.py +63 -0
  245. tooluniverse/tools/FDA_get_drug_names_by_application_number_NDC_number.py +59 -0
  246. tooluniverse/tools/FDA_get_drug_names_by_assembly_installation_info.py +63 -0
  247. tooluniverse/tools/FDA_get_drug_names_by_boxed_warning.py +63 -0
  248. tooluniverse/tools/FDA_get_drug_names_by_child_safety_info.py +63 -0
  249. tooluniverse/tools/FDA_get_drug_names_by_clinical_pharmacology.py +63 -0
  250. tooluniverse/tools/FDA_get_drug_names_by_clinical_studies.py +63 -0
  251. tooluniverse/tools/FDA_get_drug_names_by_consulting_doctor_pharmacist_info.py +63 -0
  252. tooluniverse/tools/FDA_get_drug_names_by_contraindications.py +63 -0
  253. tooluniverse/tools/FDA_get_drug_names_by_controlled_substance_DEA_schedule.py +63 -0
  254. tooluniverse/tools/FDA_get_drug_names_by_dear_health_care_provider_letter_info.py +63 -0
  255. tooluniverse/tools/FDA_get_drug_names_by_disposal_info.py +63 -0
  256. tooluniverse/tools/FDA_get_drug_names_by_dosage_forms_and_strengths_info.py +63 -0
  257. tooluniverse/tools/FDA_get_drug_names_by_drug_interactions.py +63 -0
  258. tooluniverse/tools/FDA_get_drug_names_by_effective_time.py +63 -0
  259. tooluniverse/tools/FDA_get_drug_names_by_food_safety_warnings.py +63 -0
  260. tooluniverse/tools/FDA_get_drug_names_by_general_precautions.py +63 -0
  261. tooluniverse/tools/FDA_get_drug_names_by_geriatric_use.py +63 -0
  262. tooluniverse/tools/FDA_get_drug_names_by_health_claim.py +63 -0
  263. tooluniverse/tools/FDA_get_drug_names_by_indication.py +55 -0
  264. tooluniverse/tools/FDA_get_drug_names_by_info_for_nursing_mothers.py +63 -0
  265. tooluniverse/tools/FDA_get_drug_names_by_information_for_owners_or_caregivers.py +63 -0
  266. tooluniverse/tools/FDA_get_drug_names_by_ingredient.py +63 -0
  267. tooluniverse/tools/FDA_get_drug_names_by_instructions_for_use.py +63 -0
  268. tooluniverse/tools/FDA_get_drug_names_by_lab_test_interference.py +63 -0
  269. tooluniverse/tools/FDA_get_drug_names_by_lab_tests.py +63 -0
  270. tooluniverse/tools/FDA_get_drug_names_by_mechanism_of_action.py +63 -0
  271. tooluniverse/tools/FDA_get_drug_names_by_medication_guide.py +63 -0
  272. tooluniverse/tools/FDA_get_drug_names_by_nonclinical_toxicology_info.py +63 -0
  273. tooluniverse/tools/FDA_get_drug_names_by_nonteratogenic_effects.py +63 -0
  274. tooluniverse/tools/FDA_get_drug_names_by_overdosage_info.py +63 -0
  275. tooluniverse/tools/FDA_get_drug_names_by_pediatric_use.py +63 -0
  276. tooluniverse/tools/FDA_get_drug_names_by_pharmacokinetics.py +63 -0
  277. tooluniverse/tools/FDA_get_drug_names_by_population_use.py +63 -0
  278. tooluniverse/tools/FDA_get_drug_names_by_pregnancy_effects_info.py +63 -0
  279. tooluniverse/tools/FDA_get_drug_names_by_residue_warning.py +63 -0
  280. tooluniverse/tools/FDA_get_drug_names_by_risk.py +63 -0
  281. tooluniverse/tools/FDA_get_drug_names_by_route.py +63 -0
  282. tooluniverse/tools/FDA_get_drug_names_by_safe_handling_warning.py +63 -0
  283. tooluniverse/tools/FDA_get_drug_names_by_safety_summary.py +63 -0
  284. tooluniverse/tools/FDA_get_drug_names_by_spl_indexing_data_elements.py +63 -0
  285. tooluniverse/tools/FDA_get_drug_names_by_teratogenic_effects.py +63 -0
  286. tooluniverse/tools/FDA_get_drug_names_by_user_safety_warning.py +63 -0
  287. tooluniverse/tools/FDA_get_drug_names_by_warnings_and_cautions.py +63 -0
  288. tooluniverse/tools/FDA_get_drugs_by_carcinogenic_mutagenic_fertility.py +63 -0
  289. tooluniverse/tools/FDA_get_effective_time_by_drug_name.py +55 -0
  290. tooluniverse/tools/FDA_get_environmental_warning_by_drug_name.py +55 -0
  291. tooluniverse/tools/FDA_get_general_precautions_by_drug_name.py +55 -0
  292. tooluniverse/tools/FDA_get_geriatric_use_info_by_drug_name.py +55 -0
  293. tooluniverse/tools/FDA_get_health_claims_by_drug_name.py +55 -0
  294. tooluniverse/tools/FDA_get_inactive_ingredient_info_by_drug_name.py +55 -0
  295. tooluniverse/tools/FDA_get_indications_by_drug_name.py +55 -0
  296. tooluniverse/tools/FDA_get_info_for_nursing_mothers_by_drug_name.py +55 -0
  297. tooluniverse/tools/FDA_get_info_for_patients_by_drug_name.py +55 -0
  298. tooluniverse/tools/FDA_get_info_on_conditions_for_doctor_consultation_by_drug_name.py +55 -0
  299. tooluniverse/tools/FDA_get_info_on_consulting_doctor_pharmacist_by_drug_name.py +55 -0
  300. tooluniverse/tools/FDA_get_information_for_owners_or_caregivers_by_drug_name.py +55 -0
  301. tooluniverse/tools/FDA_get_ingredients_by_drug_name.py +55 -0
  302. tooluniverse/tools/FDA_get_instructions_for_use_by_drug_name.py +55 -0
  303. tooluniverse/tools/FDA_get_lab_test_interference_info_by_drug_name.py +55 -0
  304. tooluniverse/tools/FDA_get_lab_tests_by_drug_name.py +55 -0
  305. tooluniverse/tools/FDA_get_labor_and_delivery_info_by_drug_name.py +55 -0
  306. tooluniverse/tools/FDA_get_manufacturer_name_NDC_number_by_drug_name.py +55 -0
  307. tooluniverse/tools/FDA_get_mechanism_of_action_by_drug_name.py +55 -0
  308. tooluniverse/tools/FDA_get_medication_guide_info_by_drug_name.py +55 -0
  309. tooluniverse/tools/FDA_get_microbiology_info_by_drug_name.py +55 -0
  310. tooluniverse/tools/FDA_get_nonclinical_toxicology_info_by_drug_name.py +55 -0
  311. tooluniverse/tools/FDA_get_nonteratogenic_effects_by_drug_name.py +55 -0
  312. tooluniverse/tools/FDA_get_other_safety_info_by_drug_name.py +55 -0
  313. tooluniverse/tools/FDA_get_overdosage_info_by_drug_name.py +55 -0
  314. tooluniverse/tools/FDA_get_patient_package_insert_from_drug_name.py +55 -0
  315. tooluniverse/tools/FDA_get_pediatric_use_info_by_drug_name.py +55 -0
  316. tooluniverse/tools/FDA_get_pharmacodynamics_by_drug_name.py +55 -0
  317. tooluniverse/tools/FDA_get_pharmacogenomics_info_by_drug_name.py +55 -0
  318. tooluniverse/tools/FDA_get_pharmacokinetics_by_drug_name.py +55 -0
  319. tooluniverse/tools/FDA_get_population_use_info_by_drug_name.py +55 -0
  320. tooluniverse/tools/FDA_get_precautions_by_drug_name.py +55 -0
  321. tooluniverse/tools/FDA_get_pregnancy_effects_info_by_drug_name.py +55 -0
  322. tooluniverse/tools/FDA_get_pregnancy_or_breastfeeding_info_by_drug_name.py +55 -0
  323. tooluniverse/tools/FDA_get_principal_display_panel_by_drug_name.py +55 -0
  324. tooluniverse/tools/FDA_get_purpose_info_by_drug_name.py +55 -0
  325. tooluniverse/tools/FDA_get_recent_changes_by_drug_name.py +55 -0
  326. tooluniverse/tools/FDA_get_reference_info_by_drug_name.py +55 -0
  327. tooluniverse/tools/FDA_get_residue_warning_by_drug_name.py +55 -0
  328. tooluniverse/tools/FDA_get_risk_info_by_drug_name.py +55 -0
  329. tooluniverse/tools/FDA_get_route_info_by_drug_name.py +55 -0
  330. tooluniverse/tools/FDA_get_safe_handling_warnings_by_drug_name.py +55 -0
  331. tooluniverse/tools/FDA_get_safety_summary_by_drug_name.py +55 -0
  332. tooluniverse/tools/FDA_get_spl_indexing_data_elements_by_drug_name.py +55 -0
  333. tooluniverse/tools/FDA_get_spl_unclassified_section_by_drug_name.py +55 -0
  334. tooluniverse/tools/FDA_get_stop_use_info_by_drug_name.py +55 -0
  335. tooluniverse/tools/FDA_get_storage_and_handling_info_by_drug_name.py +55 -0
  336. tooluniverse/tools/FDA_get_teratogenic_effects_by_drug_name.py +55 -0
  337. tooluniverse/tools/FDA_get_user_safety_warning_by_drug_names.py +55 -0
  338. tooluniverse/tools/FDA_get_warnings_and_cautions_by_drug_name.py +55 -0
  339. tooluniverse/tools/FDA_get_warnings_by_drug_name.py +55 -0
  340. tooluniverse/tools/FDA_get_when_using_info.py +55 -0
  341. tooluniverse/tools/FDA_retrieve_device_use_by_drug_name.py +55 -0
  342. tooluniverse/tools/FDA_retrieve_drug_name_by_device_use.py +59 -0
  343. tooluniverse/tools/FDA_retrieve_drug_names_by_patient_medication_info.py +55 -0
  344. tooluniverse/tools/FDA_retrieve_patient_medication_info_by_drug_name.py +55 -0
  345. tooluniverse/tools/Fatcat_search_scholar.py +52 -0
  346. tooluniverse/tools/Finish.py +44 -0
  347. tooluniverse/tools/GIN_Guidelines_Search.py +52 -0
  348. tooluniverse/tools/GO_get_annotations_for_gene.py +46 -0
  349. tooluniverse/tools/GO_get_genes_for_term.py +55 -0
  350. tooluniverse/tools/GO_get_term_by_id.py +46 -0
  351. tooluniverse/tools/GO_get_term_details.py +46 -0
  352. tooluniverse/tools/GO_search_terms.py +46 -0
  353. tooluniverse/tools/GWAS_search_associations_by_gene.py +52 -0
  354. tooluniverse/tools/HAL_search_archive.py +52 -0
  355. tooluniverse/tools/HPA_get_biological_processes_by_gene.py +52 -0
  356. tooluniverse/tools/HPA_get_cancer_prognostics_by_gene.py +49 -0
  357. tooluniverse/tools/HPA_get_comparative_expression_by_gene_and_cellline.py +52 -0
  358. tooluniverse/tools/HPA_get_comprehensive_gene_details_by_ensembl_id.py +63 -0
  359. tooluniverse/tools/HPA_get_contextual_biological_process_analysis.py +52 -0
  360. tooluniverse/tools/HPA_get_disease_expression_by_gene_tissue_disease.py +59 -0
  361. tooluniverse/tools/HPA_get_gene_basic_info_by_ensembl_id.py +49 -0
  362. tooluniverse/tools/HPA_get_gene_tsv_data_by_ensembl_id.py +49 -0
  363. tooluniverse/tools/HPA_get_protein_interactions_by_gene.py +49 -0
  364. tooluniverse/tools/HPA_get_rna_expression_by_source.py +59 -0
  365. tooluniverse/tools/HPA_get_rna_expression_in_specific_tissues.py +52 -0
  366. tooluniverse/tools/HPA_get_subcellular_location.py +46 -0
  367. tooluniverse/tools/HPA_search_genes_by_query.py +49 -0
  368. tooluniverse/tools/HypothesisGenerator.py +63 -0
  369. tooluniverse/tools/LabelGenerator.py +67 -0
  370. tooluniverse/tools/LiteratureContextReviewer.py +55 -0
  371. tooluniverse/tools/LiteratureSearchTool.py +49 -0
  372. tooluniverse/tools/LiteratureSynthesisAgent.py +59 -0
  373. tooluniverse/tools/MedRxiv_search_preprints.py +52 -0
  374. tooluniverse/tools/MedicalLiteratureReviewer.py +71 -0
  375. tooluniverse/tools/MedicalTermNormalizer.py +46 -0
  376. tooluniverse/tools/MedlinePlus_connect_lookup_by_code.py +67 -0
  377. tooluniverse/tools/MedlinePlus_get_genetics_condition_by_name.py +52 -0
  378. tooluniverse/tools/MedlinePlus_get_genetics_gene_by_name.py +52 -0
  379. tooluniverse/tools/MedlinePlus_get_genetics_index.py +44 -0
  380. tooluniverse/tools/MedlinePlus_search_topics_by_keyword.py +55 -0
  381. tooluniverse/tools/MethodologyRigorReviewer.py +49 -0
  382. tooluniverse/tools/MultiAgentLiteratureSearch.py +59 -0
  383. tooluniverse/tools/NICE_Clinical_Guidelines_Search.py +52 -0
  384. tooluniverse/tools/NICE_Guideline_Full_Text.py +46 -0
  385. tooluniverse/tools/NoveltySignificanceReviewer.py +59 -0
  386. tooluniverse/tools/OSF_search_preprints.py +59 -0
  387. tooluniverse/tools/OSL_get_efo_id_by_disease_name.py +46 -0
  388. tooluniverse/tools/OpenAIRE_search_publications.py +55 -0
  389. tooluniverse/tools/OpenAlex_Guidelines_Search.py +63 -0
  390. tooluniverse/tools/OpenTargets_drug_pharmacogenomics_data.py +52 -0
  391. tooluniverse/tools/OpenTargets_get_approved_indications_by_drug_chemblId.py +49 -0
  392. tooluniverse/tools/OpenTargets_get_associated_diseases_by_drug_chemblId.py +49 -0
  393. tooluniverse/tools/OpenTargets_get_associated_drugs_by_disease_efoId.py +52 -0
  394. tooluniverse/tools/OpenTargets_get_associated_drugs_by_target_ensemblID.py +55 -0
  395. tooluniverse/tools/OpenTargets_get_associated_phenotypes_by_disease_efoId.py +49 -0
  396. tooluniverse/tools/OpenTargets_get_associated_targets_by_disease_efoId.py +49 -0
  397. tooluniverse/tools/OpenTargets_get_associated_targets_by_drug_chemblId.py +49 -0
  398. tooluniverse/tools/OpenTargets_get_biological_mouse_models_by_ensemblID.py +49 -0
  399. tooluniverse/tools/OpenTargets_get_chemical_probes_by_target_ensemblID.py +49 -0
  400. tooluniverse/tools/OpenTargets_get_disease_ancestors_parents_by_efoId.py +49 -0
  401. tooluniverse/tools/OpenTargets_get_disease_descendants_children_by_efoId.py +49 -0
  402. tooluniverse/tools/OpenTargets_get_disease_description_by_efoId.py +49 -0
  403. tooluniverse/tools/OpenTargets_get_disease_id_description_by_name.py +49 -0
  404. tooluniverse/tools/OpenTargets_get_disease_ids_by_efoId.py +46 -0
  405. tooluniverse/tools/OpenTargets_get_disease_ids_by_name.py +46 -0
  406. tooluniverse/tools/OpenTargets_get_disease_locations_by_efoId.py +49 -0
  407. tooluniverse/tools/OpenTargets_get_disease_synonyms_by_efoId.py +49 -0
  408. tooluniverse/tools/OpenTargets_get_disease_therapeutic_areas_by_efoId.py +49 -0
  409. tooluniverse/tools/OpenTargets_get_diseases_phenotypes_by_target_ensembl.py +49 -0
  410. tooluniverse/tools/OpenTargets_get_drug_adverse_events_by_chemblId.py +52 -0
  411. tooluniverse/tools/OpenTargets_get_drug_approval_status_by_chemblId.py +49 -0
  412. tooluniverse/tools/OpenTargets_get_drug_chembId_by_generic_name.py +49 -0
  413. tooluniverse/tools/OpenTargets_get_drug_description_by_chemblId.py +49 -0
  414. tooluniverse/tools/OpenTargets_get_drug_id_description_by_name.py +49 -0
  415. tooluniverse/tools/OpenTargets_get_drug_indications_by_chemblId.py +49 -0
  416. tooluniverse/tools/OpenTargets_get_drug_mechanisms_of_action_by_chemblId.py +49 -0
  417. tooluniverse/tools/OpenTargets_get_drug_synonyms_by_chemblId.py +49 -0
  418. tooluniverse/tools/OpenTargets_get_drug_trade_names_by_chemblId.py +49 -0
  419. tooluniverse/tools/OpenTargets_get_drug_warnings_by_chemblId.py +49 -0
  420. tooluniverse/tools/OpenTargets_get_drug_withdrawn_blackbox_status_by_chemblId.py +49 -0
  421. tooluniverse/tools/OpenTargets_get_gene_ontology_terms_by_goID.py +49 -0
  422. tooluniverse/tools/OpenTargets_get_known_drugs_by_drug_chemblId.py +49 -0
  423. tooluniverse/tools/OpenTargets_get_parent_child_molecules_by_drug_chembl_ID.py +49 -0
  424. tooluniverse/tools/OpenTargets_get_publications_by_disease_efoId.py +71 -0
  425. tooluniverse/tools/OpenTargets_get_publications_by_drug_chemblId.py +71 -0
  426. tooluniverse/tools/OpenTargets_get_publications_by_target_ensemblID.py +71 -0
  427. tooluniverse/tools/OpenTargets_get_similar_entities_by_disease_efoId.py +55 -0
  428. tooluniverse/tools/OpenTargets_get_similar_entities_by_drug_chemblId.py +55 -0
  429. tooluniverse/tools/OpenTargets_get_similar_entities_by_target_ensemblID.py +55 -0
  430. tooluniverse/tools/OpenTargets_get_target_classes_by_ensemblID.py +49 -0
  431. tooluniverse/tools/OpenTargets_get_target_constraint_info_by_ensemblID.py +49 -0
  432. tooluniverse/tools/OpenTargets_get_target_enabling_packages_by_ensemblID.py +49 -0
  433. tooluniverse/tools/OpenTargets_get_target_gene_ontology_by_ensemblID.py +49 -0
  434. tooluniverse/tools/OpenTargets_get_target_genomic_location_by_ensemblID.py +49 -0
  435. tooluniverse/tools/OpenTargets_get_target_homologues_by_ensemblID.py +49 -0
  436. tooluniverse/tools/OpenTargets_get_target_id_description_by_name.py +49 -0
  437. tooluniverse/tools/OpenTargets_get_target_interactions_by_ensemblID.py +52 -0
  438. tooluniverse/tools/OpenTargets_get_target_safety_profile_by_ensemblID.py +49 -0
  439. tooluniverse/tools/OpenTargets_get_target_subcellular_locations_by_ensemblID.py +49 -0
  440. tooluniverse/tools/OpenTargets_get_target_synonyms_by_ensemblID.py +49 -0
  441. tooluniverse/tools/OpenTargets_get_target_tractability_by_ensemblID.py +49 -0
  442. tooluniverse/tools/OpenTargets_map_any_disease_id_to_all_other_ids.py +49 -0
  443. tooluniverse/tools/OpenTargets_multi_entity_search_by_query_string.py +59 -0
  444. tooluniverse/tools/OpenTargets_search_category_counts_by_query_string.py +49 -0
  445. tooluniverse/tools/OpenTargets_target_disease_evidence.py +52 -0
  446. tooluniverse/tools/OutputSummarizationComposer.py +71 -0
  447. tooluniverse/tools/PMC_search_papers.py +67 -0
  448. tooluniverse/tools/ProtocolOptimizer.py +49 -0
  449. tooluniverse/tools/PubChem_get_CID_by_SMILES.py +46 -0
  450. tooluniverse/tools/PubChem_get_CID_by_compound_name.py +46 -0
  451. tooluniverse/tools/PubChem_get_associated_patents_by_CID.py +46 -0
  452. tooluniverse/tools/PubChem_get_compound_2D_image_by_CID.py +52 -0
  453. tooluniverse/tools/PubChem_get_compound_properties_by_CID.py +46 -0
  454. tooluniverse/tools/PubChem_get_compound_synonyms_by_CID.py +46 -0
  455. tooluniverse/tools/PubChem_get_compound_xrefs_by_CID.py +52 -0
  456. tooluniverse/tools/PubChem_search_compounds_by_similarity.py +52 -0
  457. tooluniverse/tools/PubChem_search_compounds_by_substructure.py +49 -0
  458. tooluniverse/tools/PubMed_Guidelines_Search.py +55 -0
  459. tooluniverse/tools/PubMed_search_articles.py +55 -0
  460. tooluniverse/tools/PubTator3_EntityAutocomplete.py +59 -0
  461. tooluniverse/tools/PubTator3_LiteratureSearch.py +55 -0
  462. tooluniverse/tools/QuestionRephraser.py +52 -0
  463. tooluniverse/tools/Reactome_get_pathway_reactions.py +46 -0
  464. tooluniverse/tools/ReproducibilityTransparencyReviewer.py +49 -0
  465. tooluniverse/tools/ResultsInterpretationReviewer.py +55 -0
  466. tooluniverse/tools/ScientificTextSummarizer.py +59 -0
  467. tooluniverse/tools/SemanticScholar_search_papers.py +55 -0
  468. tooluniverse/tools/TRIP_Database_Guidelines_Search.py +55 -0
  469. tooluniverse/tools/TestCaseGenerator.py +46 -0
  470. tooluniverse/tools/ToolCompatibilityAnalyzer.py +59 -0
  471. tooluniverse/tools/ToolDescriptionOptimizer.py +67 -0
  472. tooluniverse/tools/ToolDiscover.py +63 -0
  473. tooluniverse/tools/ToolGraphComposer.py +71 -0
  474. tooluniverse/tools/ToolGraphGenerationPipeline.py +63 -0
  475. tooluniverse/tools/ToolImplementationGenerator.py +67 -0
  476. tooluniverse/tools/ToolMetadataGenerationPipeline.py +63 -0
  477. tooluniverse/tools/ToolMetadataGenerator.py +55 -0
  478. tooluniverse/tools/ToolMetadataStandardizer.py +52 -0
  479. tooluniverse/tools/ToolOptimizer.py +59 -0
  480. tooluniverse/tools/ToolOutputSummarizer.py +67 -0
  481. tooluniverse/tools/ToolQualityEvaluator.py +59 -0
  482. tooluniverse/tools/ToolRelationshipDetector.py +52 -0
  483. tooluniverse/tools/ToolSpecificationGenerator.py +67 -0
  484. tooluniverse/tools/ToolSpecificationOptimizer.py +63 -0
  485. tooluniverse/tools/Tool_Finder.py +67 -0
  486. tooluniverse/tools/Tool_Finder_Keyword.py +67 -0
  487. tooluniverse/tools/Tool_Finder_LLM.py +67 -0
  488. tooluniverse/tools/Tool_RAG.py +49 -0
  489. tooluniverse/tools/UCSC_get_genes_by_region.py +67 -0
  490. tooluniverse/tools/UniProt_get_alternative_names_by_accession.py +49 -0
  491. tooluniverse/tools/UniProt_get_disease_variants_by_accession.py +49 -0
  492. tooluniverse/tools/UniProt_get_entry_by_accession.py +49 -0
  493. tooluniverse/tools/UniProt_get_function_by_accession.py +49 -0
  494. tooluniverse/tools/UniProt_get_isoform_ids_by_accession.py +49 -0
  495. tooluniverse/tools/UniProt_get_organism_by_accession.py +49 -0
  496. tooluniverse/tools/UniProt_get_ptm_processing_by_accession.py +49 -0
  497. tooluniverse/tools/UniProt_get_recommended_name_by_accession.py +49 -0
  498. tooluniverse/tools/UniProt_get_sequence_by_accession.py +49 -0
  499. tooluniverse/tools/UniProt_get_subcellular_location_by_accession.py +49 -0
  500. tooluniverse/tools/Unpaywall_check_oa_status.py +52 -0
  501. tooluniverse/tools/WHO_Guideline_Full_Text.py +46 -0
  502. tooluniverse/tools/WHO_Guidelines_Search.py +52 -0
  503. tooluniverse/tools/Wikidata_SPARQL_query.py +52 -0
  504. tooluniverse/tools/WritingPresentationReviewer.py +49 -0
  505. tooluniverse/tools/Zenodo_search_records.py +59 -0
  506. tooluniverse/tools/__init__.py +1770 -0
  507. tooluniverse/tools/_shared_client.py +138 -0
  508. tooluniverse/tools/alphafold_get_annotations.py +52 -0
  509. tooluniverse/tools/alphafold_get_prediction.py +55 -0
  510. tooluniverse/tools/alphafold_get_summary.py +46 -0
  511. tooluniverse/tools/call_agentic_human.py +46 -0
  512. tooluniverse/tools/cancer_biomarkers_disease_target_score.py +52 -0
  513. tooluniverse/tools/cancer_gene_census_disease_target_score.py +52 -0
  514. tooluniverse/tools/cellosaurus_get_cell_line_info.py +55 -0
  515. tooluniverse/tools/cellosaurus_query_converter.py +52 -0
  516. tooluniverse/tools/cellosaurus_search_cell_lines.py +55 -0
  517. tooluniverse/tools/chembl_disease_target_score.py +52 -0
  518. tooluniverse/tools/convert_to_markdown.py +59 -0
  519. tooluniverse/tools/dbSNP_get_variant_by_rsid.py +46 -0
  520. tooluniverse/tools/dict_search.py +67 -0
  521. tooluniverse/tools/dili_search.py +67 -0
  522. tooluniverse/tools/diqt_search.py +67 -0
  523. tooluniverse/tools/disease_target_score.py +59 -0
  524. tooluniverse/tools/drugbank_filter_drugs_by_name.py +55 -0
  525. tooluniverse/tools/drugbank_full_search.py +67 -0
  526. tooluniverse/tools/drugbank_get_drug_basic_info_by_drug_name_or_drugbank_id.py +63 -0
  527. tooluniverse/tools/drugbank_get_drug_chemistry_by_drug_name_or_drugbank_id.py +63 -0
  528. tooluniverse/tools/drugbank_get_drug_interactions_by_drug_name_or_drugbank_id.py +63 -0
  529. tooluniverse/tools/drugbank_get_drug_name_and_description_by_indication.py +63 -0
  530. tooluniverse/tools/drugbank_get_drug_name_and_description_by_pathway_name.py +63 -0
  531. tooluniverse/tools/drugbank_get_drug_name_and_description_by_target_name.py +63 -0
  532. tooluniverse/tools/drugbank_get_drug_name_description_pharmacology_by_mechanism_of_action.py +63 -0
  533. tooluniverse/tools/drugbank_get_drug_pathways_and_reactions_by_drug_name_or_drugbank_id.py +63 -0
  534. tooluniverse/tools/drugbank_get_drug_products_by_name_or_drugbank_id.py +63 -0
  535. tooluniverse/tools/drugbank_get_drug_references_by_drug_name_or_drugbank_id.py +63 -0
  536. tooluniverse/tools/drugbank_get_indications_by_drug_name_or_drugbank_id.py +63 -0
  537. tooluniverse/tools/drugbank_get_pharmacology_by_drug_name_or_drugbank_id.py +63 -0
  538. tooluniverse/tools/drugbank_get_safety_by_drug_name_or_drugbank_id.py +63 -0
  539. tooluniverse/tools/drugbank_get_targets_by_drug_name_or_drugbank_id.py +63 -0
  540. tooluniverse/tools/drugbank_links_search.py +67 -0
  541. tooluniverse/tools/drugbank_vocab_filter.py +63 -0
  542. tooluniverse/tools/drugbank_vocab_search.py +67 -0
  543. tooluniverse/tools/embedding_database_add.py +63 -0
  544. tooluniverse/tools/embedding_database_create.py +71 -0
  545. tooluniverse/tools/embedding_database_load.py +63 -0
  546. tooluniverse/tools/embedding_database_search.py +67 -0
  547. tooluniverse/tools/embedding_sync_download.py +63 -0
  548. tooluniverse/tools/embedding_sync_upload.py +71 -0
  549. tooluniverse/tools/enrichr_gene_enrichment_analysis.py +52 -0
  550. tooluniverse/tools/europepmc_disease_target_score.py +52 -0
  551. tooluniverse/tools/eva_disease_target_score.py +52 -0
  552. tooluniverse/tools/eva_somatic_disease_target_score.py +52 -0
  553. tooluniverse/tools/expression_atlas_disease_target_score.py +52 -0
  554. tooluniverse/tools/extract_clinical_trial_adverse_events.py +59 -0
  555. tooluniverse/tools/extract_clinical_trial_outcomes.py +52 -0
  556. tooluniverse/tools/genomics_england_disease_target_score.py +52 -0
  557. tooluniverse/tools/get_HPO_ID_by_phenotype.py +55 -0
  558. tooluniverse/tools/get_albumentations_info.py +44 -0
  559. tooluniverse/tools/get_altair_info.py +44 -0
  560. tooluniverse/tools/get_anndata_info.py +49 -0
  561. tooluniverse/tools/get_arboreto_info.py +46 -0
  562. tooluniverse/tools/get_arxiv_info.py +46 -0
  563. tooluniverse/tools/get_ase_info.py +46 -0
  564. tooluniverse/tools/get_assembly_info_by_pdb_id.py +46 -0
  565. tooluniverse/tools/get_assembly_summary.py +46 -0
  566. tooluniverse/tools/get_astropy_info.py +44 -0
  567. tooluniverse/tools/get_binding_affinity_by_pdb_id.py +46 -0
  568. tooluniverse/tools/get_biopandas_info.py +49 -0
  569. tooluniverse/tools/get_biopython_info.py +49 -0
  570. tooluniverse/tools/get_bioservices_info.py +44 -0
  571. tooluniverse/tools/get_biotite_info.py +49 -0
  572. tooluniverse/tools/get_bokeh_info.py +44 -0
  573. tooluniverse/tools/get_brian2_info.py +44 -0
  574. tooluniverse/tools/get_cartopy_info.py +44 -0
  575. tooluniverse/tools/get_catboost_info.py +44 -0
  576. tooluniverse/tools/get_cellpose_info.py +49 -0
  577. tooluniverse/tools/get_cellrank_info.py +44 -0
  578. tooluniverse/tools/get_cellxgene_census_info.py +46 -0
  579. tooluniverse/tools/get_cftime_info.py +44 -0
  580. tooluniverse/tools/get_chem_comp_audit_info.py +46 -0
  581. tooluniverse/tools/get_chem_comp_charge_and_ambiguity.py +46 -0
  582. tooluniverse/tools/get_chembl_webresource_client_info.py +44 -0
  583. tooluniverse/tools/get_citation_info_by_pdb_id.py +46 -0
  584. tooluniverse/tools/get_clair3_info.py +46 -0
  585. tooluniverse/tools/get_clinical_trial_conditions_and_interventions.py +55 -0
  586. tooluniverse/tools/get_clinical_trial_descriptions.py +52 -0
  587. tooluniverse/tools/get_clinical_trial_eligibility_criteria.py +55 -0
  588. tooluniverse/tools/get_clinical_trial_locations.py +52 -0
  589. tooluniverse/tools/get_clinical_trial_outcome_measures.py +52 -0
  590. tooluniverse/tools/get_clinical_trial_references.py +52 -0
  591. tooluniverse/tools/get_clinical_trial_status_and_dates.py +52 -0
  592. tooluniverse/tools/get_cobra_info.py +46 -0
  593. tooluniverse/tools/get_cobrapy_info.py +46 -0
  594. tooluniverse/tools/get_cooler_info.py +49 -0
  595. tooluniverse/tools/get_core_refinement_statistics.py +46 -0
  596. tooluniverse/tools/get_cryosparc_tools_info.py +46 -0
  597. tooluniverse/tools/get_crystal_growth_conditions_by_pdb_id.py +49 -0
  598. tooluniverse/tools/get_crystallization_ph_by_pdb_id.py +46 -0
  599. tooluniverse/tools/get_crystallographic_properties_by_pdb_id.py +49 -0
  600. tooluniverse/tools/get_cupy_info.py +44 -0
  601. tooluniverse/tools/get_cyvcf2_info.py +49 -0
  602. tooluniverse/tools/get_dask_info.py +44 -0
  603. tooluniverse/tools/get_datamol_info.py +44 -0
  604. tooluniverse/tools/get_datashader_info.py +44 -0
  605. tooluniverse/tools/get_deepchem_info.py +49 -0
  606. tooluniverse/tools/get_deeppurpose_info.py +46 -0
  607. tooluniverse/tools/get_deeptools_info.py +46 -0
  608. tooluniverse/tools/get_deepxde_info.py +49 -0
  609. tooluniverse/tools/get_dendropy_info.py +44 -0
  610. tooluniverse/tools/get_descriptastorus_info.py +46 -0
  611. tooluniverse/tools/get_diffdock_info.py +46 -0
  612. tooluniverse/tools/get_dscribe_info.py +49 -0
  613. tooluniverse/tools/get_ec_number_by_entity_id.py +46 -0
  614. tooluniverse/tools/get_elephant_info.py +44 -0
  615. tooluniverse/tools/get_em_3d_fitting_and_reconstruction_details.py +49 -0
  616. tooluniverse/tools/get_emdb_ids_by_pdb_id.py +46 -0
  617. tooluniverse/tools/get_episcanpy_info.py +44 -0
  618. tooluniverse/tools/get_ete3_info.py +44 -0
  619. tooluniverse/tools/get_faiss_info.py +46 -0
  620. tooluniverse/tools/get_fanc_info.py +46 -0
  621. tooluniverse/tools/get_flask_info.py +46 -0
  622. tooluniverse/tools/get_flowio_info.py +46 -0
  623. tooluniverse/tools/get_flowkit_info.py +46 -0
  624. tooluniverse/tools/get_flowutils_info.py +46 -0
  625. tooluniverse/tools/get_freesasa_info.py +44 -0
  626. tooluniverse/tools/get_galpy_info.py +44 -0
  627. tooluniverse/tools/get_gene_name_by_entity_id.py +46 -0
  628. tooluniverse/tools/get_geopandas_info.py +44 -0
  629. tooluniverse/tools/get_gget_info.py +46 -0
  630. tooluniverse/tools/get_googlesearch_python_info.py +46 -0
  631. tooluniverse/tools/get_gseapy_info.py +49 -0
  632. tooluniverse/tools/get_h5py_info.py +46 -0
  633. tooluniverse/tools/get_harmony_pytorch_info.py +46 -0
  634. tooluniverse/tools/get_hmmlearn_info.py +46 -0
  635. tooluniverse/tools/get_holoviews_info.py +44 -0
  636. tooluniverse/tools/get_host_organism_by_pdb_id.py +46 -0
  637. tooluniverse/tools/get_htmd_info.py +44 -0
  638. tooluniverse/tools/get_hyperopt_info.py +49 -0
  639. tooluniverse/tools/get_igraph_info.py +49 -0
  640. tooluniverse/tools/get_imageio_info.py +44 -0
  641. tooluniverse/tools/get_imbalanced_learn_info.py +44 -0
  642. tooluniverse/tools/get_jcvi_info.py +46 -0
  643. tooluniverse/tools/get_joblib_info.py +44 -0
  644. tooluniverse/tools/get_joint_associated_diseases_by_HPO_ID_list.py +55 -0
  645. tooluniverse/tools/get_khmer_info.py +46 -0
  646. tooluniverse/tools/get_kipoiseq_info.py +44 -0
  647. tooluniverse/tools/get_lifelines_info.py +49 -0
  648. tooluniverse/tools/get_ligand_bond_count_by_pdb_id.py +46 -0
  649. tooluniverse/tools/get_ligand_smiles_by_chem_comp_id.py +49 -0
  650. tooluniverse/tools/get_lightgbm_info.py +44 -0
  651. tooluniverse/tools/get_loompy_info.py +46 -0
  652. tooluniverse/tools/get_mageck_info.py +46 -0
  653. tooluniverse/tools/get_matplotlib_info.py +49 -0
  654. tooluniverse/tools/get_mdanalysis_info.py +46 -0
  655. tooluniverse/tools/get_mdtraj_info.py +44 -0
  656. tooluniverse/tools/get_mne_info.py +44 -0
  657. tooluniverse/tools/get_molfeat_info.py +44 -0
  658. tooluniverse/tools/get_molvs_info.py +44 -0
  659. tooluniverse/tools/get_mordred_info.py +44 -0
  660. tooluniverse/tools/get_msprime_info.py +49 -0
  661. tooluniverse/tools/get_mudata_info.py +49 -0
  662. tooluniverse/tools/get_mutation_annotations_by_pdb_id.py +46 -0
  663. tooluniverse/tools/get_neo_info.py +44 -0
  664. tooluniverse/tools/get_netcdf4_info.py +44 -0
  665. tooluniverse/tools/get_networkx_info.py +46 -0
  666. tooluniverse/tools/get_nglview_info.py +44 -0
  667. tooluniverse/tools/get_nilearn_info.py +44 -0
  668. tooluniverse/tools/get_numba_info.py +46 -0
  669. tooluniverse/tools/get_numpy_info.py +46 -0
  670. tooluniverse/tools/get_oligosaccharide_descriptors_by_entity_id.py +49 -0
  671. tooluniverse/tools/get_openbabel_info.py +49 -0
  672. tooluniverse/tools/get_openchem_info.py +46 -0
  673. tooluniverse/tools/get_opencv_info.py +49 -0
  674. tooluniverse/tools/get_openmm_info.py +49 -0
  675. tooluniverse/tools/get_optlang_info.py +46 -0
  676. tooluniverse/tools/get_optuna_info.py +44 -0
  677. tooluniverse/tools/get_palantir_info.py +44 -0
  678. tooluniverse/tools/get_pandas_info.py +49 -0
  679. tooluniverse/tools/get_patsy_info.py +44 -0
  680. tooluniverse/tools/get_pdbfixer_info.py +46 -0
  681. tooluniverse/tools/get_phenotype_by_HPO_ID.py +46 -0
  682. tooluniverse/tools/get_pillow_info.py +44 -0
  683. tooluniverse/tools/get_plantcv_info.py +46 -0
  684. tooluniverse/tools/get_plip_info.py +46 -0
  685. tooluniverse/tools/get_plotly_info.py +44 -0
  686. tooluniverse/tools/get_poliastro_info.py +46 -0
  687. tooluniverse/tools/get_polymer_entity_annotations.py +49 -0
  688. tooluniverse/tools/get_polymer_entity_count_by_pdb_id.py +46 -0
  689. tooluniverse/tools/get_polymer_entity_ids_by_pdb_id.py +46 -0
  690. tooluniverse/tools/get_polymer_entity_type_by_entity_id.py +49 -0
  691. tooluniverse/tools/get_polymer_molecular_weight_by_entity_id.py +49 -0
  692. tooluniverse/tools/get_poretools_info.py +44 -0
  693. tooluniverse/tools/get_prody_info.py +46 -0
  694. tooluniverse/tools/get_protein_classification_by_pdb_id.py +49 -0
  695. tooluniverse/tools/get_protein_metadata_by_pdb_id.py +46 -0
  696. tooluniverse/tools/get_pubchempy_info.py +44 -0
  697. tooluniverse/tools/get_pybedtools_info.py +49 -0
  698. tooluniverse/tools/get_pybigwig_info.py +46 -0
  699. tooluniverse/tools/get_pydeseq2_info.py +46 -0
  700. tooluniverse/tools/get_pyensembl_info.py +44 -0
  701. tooluniverse/tools/get_pyephem_info.py +44 -0
  702. tooluniverse/tools/get_pyfaidx_info.py +49 -0
  703. tooluniverse/tools/get_pyfasta_info.py +44 -0
  704. tooluniverse/tools/get_pykalman_info.py +46 -0
  705. tooluniverse/tools/get_pyliftover_info.py +49 -0
  706. tooluniverse/tools/get_pymassspec_info.py +46 -0
  707. tooluniverse/tools/get_pymed_info.py +46 -0
  708. tooluniverse/tools/get_pymzml_info.py +46 -0
  709. tooluniverse/tools/get_pypdf2_info.py +46 -0
  710. tooluniverse/tools/get_pyranges_info.py +49 -0
  711. tooluniverse/tools/get_pyrosetta_info.py +44 -0
  712. tooluniverse/tools/get_pysam_info.py +46 -0
  713. tooluniverse/tools/get_pyscenic_info.py +46 -0
  714. tooluniverse/tools/get_pyscf_info.py +46 -0
  715. tooluniverse/tools/get_pyscreener_info.py +46 -0
  716. tooluniverse/tools/get_pytdc_info.py +46 -0
  717. tooluniverse/tools/get_python_libsbml_info.py +46 -0
  718. tooluniverse/tools/get_pytorch_info.py +49 -0
  719. tooluniverse/tools/get_pyvcf_info.py +44 -0
  720. tooluniverse/tools/get_pyvis_info.py +44 -0
  721. tooluniverse/tools/get_qutip_info.py +44 -0
  722. tooluniverse/tools/get_rasterio_info.py +44 -0
  723. tooluniverse/tools/get_rdkit_info.py +46 -0
  724. tooluniverse/tools/get_refinement_resolution_by_pdb_id.py +49 -0
  725. tooluniverse/tools/get_release_deposit_dates_by_pdb_id.py +49 -0
  726. tooluniverse/tools/get_reportlab_info.py +49 -0
  727. tooluniverse/tools/get_requests_info.py +49 -0
  728. tooluniverse/tools/get_ruptures_info.py +46 -0
  729. tooluniverse/tools/get_scanorama_info.py +44 -0
  730. tooluniverse/tools/get_scanpy_info.py +49 -0
  731. tooluniverse/tools/get_schnetpack_info.py +49 -0
  732. tooluniverse/tools/get_scholarly_info.py +46 -0
  733. tooluniverse/tools/get_scikit_bio_info.py +49 -0
  734. tooluniverse/tools/get_scikit_image_info.py +46 -0
  735. tooluniverse/tools/get_scikit_learn_info.py +49 -0
  736. tooluniverse/tools/get_scipy_info.py +46 -0
  737. tooluniverse/tools/get_scrublet_info.py +49 -0
  738. tooluniverse/tools/get_scvelo_info.py +49 -0
  739. tooluniverse/tools/get_scvi_tools_info.py +44 -0
  740. tooluniverse/tools/get_seaborn_info.py +49 -0
  741. tooluniverse/tools/get_sequence_by_pdb_id.py +46 -0
  742. tooluniverse/tools/get_sequence_lengths_by_pdb_id.py +46 -0
  743. tooluniverse/tools/get_sequence_positional_features_by_instance_id.py +49 -0
  744. tooluniverse/tools/get_skopt_info.py +44 -0
  745. tooluniverse/tools/get_souporcell_info.py +46 -0
  746. tooluniverse/tools/get_source_organism_by_pdb_id.py +46 -0
  747. tooluniverse/tools/get_space_group_by_pdb_id.py +46 -0
  748. tooluniverse/tools/get_statsmodels_info.py +49 -0
  749. tooluniverse/tools/get_structure_determination_software_by_pdb_id.py +49 -0
  750. tooluniverse/tools/get_structure_title_by_pdb_id.py +46 -0
  751. tooluniverse/tools/get_structure_validation_metrics_by_pdb_id.py +49 -0
  752. tooluniverse/tools/get_sunpy_info.py +44 -0
  753. tooluniverse/tools/get_sympy_info.py +46 -0
  754. tooluniverse/tools/get_target_cofactor_info.py +46 -0
  755. tooluniverse/tools/get_taxonomy_by_pdb_id.py +46 -0
  756. tooluniverse/tools/get_tiledb_info.py +46 -0
  757. tooluniverse/tools/get_tiledbsoma_info.py +46 -0
  758. tooluniverse/tools/get_torch_geometric_info.py +49 -0
  759. tooluniverse/tools/get_tqdm_info.py +46 -0
  760. tooluniverse/tools/get_trackpy_info.py +46 -0
  761. tooluniverse/tools/get_tskit_info.py +46 -0
  762. tooluniverse/tools/get_umap_learn_info.py +49 -0
  763. tooluniverse/tools/get_uniprot_accession_by_entity_id.py +49 -0
  764. tooluniverse/tools/get_velocyto_info.py +44 -0
  765. tooluniverse/tools/get_viennarna_info.py +49 -0
  766. tooluniverse/tools/get_webpage_text_from_url.py +52 -0
  767. tooluniverse/tools/get_webpage_title.py +49 -0
  768. tooluniverse/tools/get_xarray_info.py +44 -0
  769. tooluniverse/tools/get_xesmf_info.py +44 -0
  770. tooluniverse/tools/get_xgboost_info.py +44 -0
  771. tooluniverse/tools/get_zarr_info.py +44 -0
  772. tooluniverse/tools/gnomAD_query_variant.py +52 -0
  773. tooluniverse/tools/gwas_get_association_by_id.py +49 -0
  774. tooluniverse/tools/gwas_get_associations_for_snp.py +67 -0
  775. tooluniverse/tools/gwas_get_associations_for_study.py +55 -0
  776. tooluniverse/tools/gwas_get_associations_for_trait.py +55 -0
  777. tooluniverse/tools/gwas_get_snp_by_id.py +46 -0
  778. tooluniverse/tools/gwas_get_snps_for_gene.py +55 -0
  779. tooluniverse/tools/gwas_get_studies_for_trait.py +75 -0
  780. tooluniverse/tools/gwas_get_study_by_id.py +46 -0
  781. tooluniverse/tools/gwas_get_variants_for_trait.py +55 -0
  782. tooluniverse/tools/gwas_search_associations.py +75 -0
  783. tooluniverse/tools/gwas_search_snps.py +63 -0
  784. tooluniverse/tools/gwas_search_studies.py +75 -0
  785. tooluniverse/tools/humanbase_ppi_analysis.py +67 -0
  786. tooluniverse/tools/mesh_get_subjects_by_pharmacological_action.py +63 -0
  787. tooluniverse/tools/mesh_get_subjects_by_subject_id.py +63 -0
  788. tooluniverse/tools/mesh_get_subjects_by_subject_name.py +63 -0
  789. tooluniverse/tools/mesh_get_subjects_by_subject_scope_or_definition.py +63 -0
  790. tooluniverse/tools/odphp_itemlist.py +49 -0
  791. tooluniverse/tools/odphp_myhealthfinder.py +67 -0
  792. tooluniverse/tools/odphp_outlink_fetch.py +59 -0
  793. tooluniverse/tools/odphp_topicsearch.py +67 -0
  794. tooluniverse/tools/openalex_literature_search.py +67 -0
  795. tooluniverse/tools/reactome_disease_target_score.py +52 -0
  796. tooluniverse/tools/search_clinical_trials.py +67 -0
  797. tooluniverse/tools/visualize_molecule_2d.py +83 -0
  798. tooluniverse/tools/visualize_molecule_3d.py +91 -0
  799. tooluniverse/tools/visualize_protein_structure_3d.py +79 -0
  800. tooluniverse/ucsc_tool.py +60 -0
  801. tooluniverse/unified_guideline_tools.py +2328 -0
  802. tooluniverse/unpaywall_tool.py +0 -1
  803. tooluniverse/utils.py +122 -6
  804. tooluniverse/visualization_tool.py +897 -0
  805. tooluniverse/wikidata_sparql_tool.py +1 -2
  806. tooluniverse/zenodo_tool.py +3 -4
  807. {tooluniverse-1.0.6.dist-info → tooluniverse-1.0.8.dist-info}/METADATA +19 -4
  808. tooluniverse-1.0.8.dist-info/RECORD +891 -0
  809. {tooluniverse-1.0.6.dist-info → tooluniverse-1.0.8.dist-info}/entry_points.txt +3 -0
  810. tooluniverse/test/list_azure_openai_models.py +0 -210
  811. tooluniverse/test/mcp_server_test.py +0 -0
  812. tooluniverse/test/test_admetai_tool.py +0 -370
  813. tooluniverse/test/test_agentic_tool.py +0 -129
  814. tooluniverse/test/test_agentic_tool_azure_models.py +0 -91
  815. tooluniverse/test/test_alphafold_tool.py +0 -108
  816. tooluniverse/test/test_api_key_validation_min.py +0 -64
  817. tooluniverse/test/test_chem_tool.py +0 -37
  818. tooluniverse/test/test_claude_sdk.py +0 -93
  819. tooluniverse/test/test_compose_lieraturereview.py +0 -63
  820. tooluniverse/test/test_compose_tool.py +0 -448
  821. tooluniverse/test/test_dailymed.py +0 -69
  822. tooluniverse/test/test_dataset_tool.py +0 -200
  823. tooluniverse/test/test_disease_target_score.py +0 -56
  824. tooluniverse/test/test_drugbank_filter_examples.py +0 -179
  825. tooluniverse/test/test_efo.py +0 -31
  826. tooluniverse/test/test_enrichr_tool.py +0 -21
  827. tooluniverse/test/test_europe_pmc_tool.py +0 -20
  828. tooluniverse/test/test_fda_adv.py +0 -95
  829. tooluniverse/test/test_fda_drug_labeling.py +0 -91
  830. tooluniverse/test/test_gene_ontology_tools.py +0 -66
  831. tooluniverse/test/test_global_fallback.py +0 -288
  832. tooluniverse/test/test_gwas_tool.py +0 -139
  833. tooluniverse/test/test_hooks_direct.py +0 -219
  834. tooluniverse/test/test_hpa.py +0 -625
  835. tooluniverse/test/test_humanbase_tool.py +0 -20
  836. tooluniverse/test/test_idmap_tools.py +0 -61
  837. tooluniverse/test/test_list_built_in_tools.py +0 -33
  838. tooluniverse/test/test_mcp_server.py +0 -211
  839. tooluniverse/test/test_mcp_tool.py +0 -247
  840. tooluniverse/test/test_medlineplus.py +0 -220
  841. tooluniverse/test/test_odphp_tool.py +0 -166
  842. tooluniverse/test/test_openalex_tool.py +0 -32
  843. tooluniverse/test/test_openrouter_client.py +0 -288
  844. tooluniverse/test/test_opentargets.py +0 -28
  845. tooluniverse/test/test_pubchem_tool.py +0 -116
  846. tooluniverse/test/test_pubtator_tool.py +0 -37
  847. tooluniverse/test/test_rcsb_pdb_tool.py +0 -86
  848. tooluniverse/test/test_reactome.py +0 -54
  849. tooluniverse/test/test_semantic_scholar_tool.py +0 -24
  850. tooluniverse/test/test_software_tools.py +0 -147
  851. tooluniverse/test/test_stdio_hooks.py +0 -285
  852. tooluniverse/test/test_tool_description_optimizer.py +0 -49
  853. tooluniverse/test/test_tool_finder.py +0 -26
  854. tooluniverse/test/test_tool_finder_llm.py +0 -252
  855. tooluniverse/test/test_tools_find.py +0 -195
  856. tooluniverse/test/test_uniprot_tools.py +0 -74
  857. tooluniverse/test/test_uspto_tool.py +0 -72
  858. tooluniverse/test/test_xml_tool.py +0 -113
  859. tooluniverse-1.0.6.dist-info/RECORD +0 -230
  860. {tooluniverse-1.0.6.dist-info → tooluniverse-1.0.8.dist-info}/WHEEL +0 -0
  861. {tooluniverse-1.0.6.dist-info → tooluniverse-1.0.8.dist-info}/licenses/LICENSE +0 -0
  862. {tooluniverse-1.0.6.dist-info → tooluniverse-1.0.8.dist-info}/top_level.txt +0 -0
tooluniverse/__init__.py CHANGED
@@ -1,30 +1,54 @@
1
1
  from importlib.metadata import version
2
+ import os
2
3
  import warnings
3
4
  from typing import Any, Optional, List
5
+
4
6
  from .execute_function import ToolUniverse
5
7
  from .base_tool import BaseTool
6
8
  from .default_config import default_tool_files
9
+ from .tool_registry import register_tool, get_tool_registry
10
+
11
+ _LIGHT_IMPORT = os.getenv("TOOLUNIVERSE_LIGHT_IMPORT", "false").lower() in (
12
+ "true",
13
+ "1",
14
+ "yes",
15
+ )
7
16
 
8
17
  # Version information - read from package metadata or pyproject.toml
9
18
  __version__ = version("tooluniverse")
10
- from .tool_registry import register_tool, get_tool_registry
19
+
20
+ # Import tools with graceful fallback
21
+ if not _LIGHT_IMPORT:
22
+ try:
23
+ from . import tools
24
+
25
+ _TOOLS_AVAILABLE = True
26
+ except ImportError:
27
+ _TOOLS_AVAILABLE = False
28
+ tools = None # type: ignore
29
+ else:
30
+ _TOOLS_AVAILABLE = False
31
+ tools = None # type: ignore
11
32
 
12
33
  # Check if lazy loading is enabled
13
- # LAZY_LOADING_ENABLED = os.getenv('TOOLUNIVERSE_LAZY_LOADING', 'true').lower() in ('true', '1', 'yes')
34
+ # LAZY_LOADING_ENABLED = os.getenv('TOOLUNIVERSE_LAZY_LOADING', 'true').lower() in (
35
+ # 'true', '1', 'yes'
36
+ # )
14
37
  LAZY_LOADING_ENABLED = (
15
38
  False # LAZY LOADING DISABLED BECAUSE IT'S STILL UNDER DEVELOPMENT
16
39
  )
17
40
 
18
41
  # Import MCP functionality
19
- try:
20
- from .mcp_integration import _patch_tooluniverse
42
+ if not _LIGHT_IMPORT:
43
+ try:
44
+ from .mcp_integration import _patch_tooluniverse
21
45
 
22
- # Automatically patch ToolUniverse with MCP methods
23
- _patch_tooluniverse()
46
+ # Automatically patch ToolUniverse with MCP methods
47
+ _patch_tooluniverse()
24
48
 
25
- except ImportError:
26
- # MCP functionality not available
27
- pass
49
+ except ImportError:
50
+ # MCP functionality not available
51
+ pass
28
52
 
29
53
  # Import SMCP with graceful fallback and consistent signatures for type checking
30
54
  try:
@@ -150,7 +174,10 @@ MCPAutoLoaderTool: Any
150
174
  ADMETAITool: Any
151
175
  AlphaFoldRESTTool: Any
152
176
  ComposeTool: Any
153
- if not LAZY_LOADING_ENABLED:
177
+ CellosaurusSearchTool: Any
178
+ CellosaurusQueryConverterTool: Any
179
+ CellosaurusGetCellLineInfoTool: Any
180
+ if not _LIGHT_IMPORT and not LAZY_LOADING_ENABLED:
154
181
  # Import all tool classes immediately (old behavior) with warning suppression # noqa: E501
155
182
  with warnings.catch_warnings():
156
183
  warnings.filterwarnings("ignore", category=DeprecationWarning)
@@ -224,6 +251,12 @@ if not LAZY_LOADING_ENABLED:
224
251
  ODPHPTopicSearch,
225
252
  ODPHPOutlinkFetch,
226
253
  )
254
+ from .cellosaurus_tool import (
255
+ CellosaurusSearchTool,
256
+ CellosaurusQueryConverterTool,
257
+ CellosaurusGetCellLineInfoTool,
258
+ )
259
+
227
260
  # Literature search tools
228
261
  from .arxiv_tool import ArXivTool
229
262
  from .crossref_tool import CrossrefTool
@@ -318,6 +351,15 @@ else:
318
351
  ODPHPMyHealthfinder = _LazyImportProxy("odphp_tool", "ODHPHPMyHealthfinder")
319
352
  ODPHPTopicSearch = _LazyImportProxy("odphp_tool", "ODPHPTopicSearch")
320
353
  ODPHPOutlinkFetch = _LazyImportProxy("odphp_tool", "ODPHPOutlinkFetch")
354
+ CellosaurusSearchTool = _LazyImportProxy(
355
+ "cellosaurus_tool", "CellosaurusSearchTool"
356
+ )
357
+ CellosaurusQueryConverterTool = _LazyImportProxy(
358
+ "cellosaurus_tool", "CellosaurusQueryConverterTool"
359
+ )
360
+ CellosaurusGetCellLineInfoTool = _LazyImportProxy(
361
+ "cellosaurus_tool", "CellosaurusGetCellLineInfoTool"
362
+ )
321
363
  # Literature search tools
322
364
  ArXivTool = _LazyImportProxy("arxiv_tool", "ArXivTool")
323
365
  CrossrefTool = _LazyImportProxy("crossref_tool", "CrossrefTool")
@@ -338,6 +380,7 @@ __all__ = [
338
380
  "BaseTool",
339
381
  "register_tool",
340
382
  "get_tool_registry",
383
+ "tools",
341
384
  "MonarchTool",
342
385
  "MonarchDiseasesForMultiplePhenoTool",
343
386
  "ClinicalTrialsSearchTool",
@@ -402,6 +445,9 @@ __all__ = [
402
445
  "ODPHPItemList",
403
446
  "ODPHPTopicSearch",
404
447
  "ODPHPOutlinkFetch",
448
+ "CellosaurusSearchTool",
449
+ "CellosaurusQueryConverterTool",
450
+ "CellosaurusGetCellLineInfoTool",
405
451
  # Literature search tools
406
452
  "ArXivTool",
407
453
  "CrossrefTool",
@@ -30,13 +30,15 @@ class ADMETAITool(BaseTool):
30
30
 
31
31
  def __init__(self, **kwargs):
32
32
  super().__init__(**kwargs)
33
+ # Initialize the model once during tool initialization
34
+ self.model = ADMETModel()
33
35
 
34
36
  def _predict(self, smiles: str) -> dict:
35
37
  """
36
38
  Gets ADMET predictions for the given smiles
37
39
  """
38
- model = ADMETModel()
39
- preds = model.predict(smiles=smiles)
40
+ # Reuse the pre-loaded model instead of creating a new one
41
+ preds = self.model.predict(smiles=smiles)
40
42
  return preds
41
43
 
42
44
  def run(self, arguments: dict) -> dict:
@@ -47,7 +49,8 @@ class ADMETAITool(BaseTool):
47
49
  smiles: The SMILES string(s) of the molecule(s).
48
50
 
49
51
  Returns:
50
- A dictionary mapping each SMILES string to a subdictionary of selected ADMET properties and their predicted values.
52
+ A dictionary mapping each SMILES string to a subdictionary of
53
+ selected ADMET properties and their predicted values.
51
54
  """
52
55
  smiles = arguments.get("smiles", [])
53
56
  if not smiles:
@@ -65,7 +68,8 @@ class ADMETAITool(BaseTool):
65
68
  ):
66
69
  return {"error": "No predictions could be extracted."}
67
70
 
68
- # Expand columns to include _drugbank_approved_percentile columns if present
71
+ # Expand columns to include _drugbank_approved_percentile columns
72
+ # if present
69
73
  if columns is not None:
70
74
  expanded_columns = []
71
75
  for col in columns:
@@ -8,7 +8,7 @@ from typing import Any, Callable, Dict, List, Optional
8
8
  from .base_tool import BaseTool
9
9
  from .tool_registry import register_tool
10
10
  from .logging_config import get_logger
11
- from .llm_clients import AzureOpenAIClient, GeminiClient, OpenRouterClient
11
+ from .llm_clients import AzureOpenAIClient, GeminiClient, OpenRouterClient, VLLMClient
12
12
 
13
13
 
14
14
  # Global default fallback configuration
@@ -23,6 +23,7 @@ API_KEY_ENV_VARS = {
23
23
  "CHATGPT": ["AZURE_OPENAI_API_KEY", "AZURE_OPENAI_ENDPOINT"],
24
24
  "OPENROUTER": ["OPENROUTER_API_KEY"],
25
25
  "GEMINI": ["GEMINI_API_KEY"],
26
+ "VLLM": ["VLLM_SERVER_URL"],
26
27
  }
27
28
 
28
29
 
@@ -201,7 +202,9 @@ class AgenticTool(BaseTool):
201
202
  f"Tool '{self.name}' failed to initialize with all available APIs"
202
203
  )
203
204
 
204
- def _try_api(self, api_type: str, model_id: str) -> bool:
205
+ def _try_api(
206
+ self, api_type: str, model_id: str, server_url: Optional[str] = None
207
+ ) -> bool:
205
208
  """Try to initialize a specific API and model."""
206
209
  try:
207
210
  if api_type == "CHATGPT":
@@ -210,6 +213,12 @@ class AgenticTool(BaseTool):
210
213
  self._llm_client = OpenRouterClient(model_id, self.logger)
211
214
  elif api_type == "GEMINI":
212
215
  self._llm_client = GeminiClient(model_id, self.logger)
216
+ elif api_type == "VLLM":
217
+ if not server_url:
218
+ server_url = os.getenv("VLLM_SERVER_URL")
219
+ if not server_url:
220
+ raise ValueError("VLLM_SERVER_URL environment variable not set")
221
+ self._llm_client = VLLMClient(model_id, server_url, self.logger)
213
222
  else:
214
223
  raise ValueError(f"Unsupported API type: {api_type}")
215
224
 
@@ -243,7 +252,7 @@ class AgenticTool(BaseTool):
243
252
 
244
253
  # ------------------------------------------------------------------ LLM utilities -----------
245
254
  def _validate_model_config(self):
246
- supported_api_types = ["CHATGPT", "OPENROUTER", "GEMINI"]
255
+ supported_api_types = ["CHATGPT", "OPENROUTER", "GEMINI", "VLLM"]
247
256
  if self._api_type not in supported_api_types:
248
257
  raise ValueError(
249
258
  f"Unsupported API type: {self._api_type}. Supported types: {supported_api_types}"
@@ -415,7 +424,29 @@ class AgenticTool(BaseTool):
415
424
  },
416
425
  }
417
426
  else:
418
- return f"error: {str(e)} error_type: {type(e).__name__}"
427
+ from .utils import format_error_response
428
+
429
+ return format_error_response(
430
+ e,
431
+ self.name,
432
+ {
433
+ "prompt_used": (
434
+ formatted_prompt
435
+ if "formatted_prompt" in locals()
436
+ else "Failed to format prompt"
437
+ ),
438
+ "input_arguments": {
439
+ arg: arguments.get(arg) for arg in self._input_arguments
440
+ },
441
+ "model_info": {
442
+ "api_type": self._api_type,
443
+ "model_id": self._model_id,
444
+ "temperature": self._temperature,
445
+ "max_new_tokens": self._max_new_tokens,
446
+ },
447
+ "execution_time_seconds": execution_time,
448
+ },
449
+ )
419
450
 
420
451
  @staticmethod
421
452
  def _iter_chunks(text: str, size: int = 800):
@@ -518,6 +549,11 @@ class AgenticTool(BaseTool):
518
549
  self._llm_client = OpenRouterClient(self._model_id, self.logger)
519
550
  elif self._api_type == "GEMINI":
520
551
  self._llm_client = GeminiClient(self._gemini_model_id, self.logger)
552
+ elif self._api_type == "VLLM":
553
+ server_url = os.getenv("VLLM_SERVER_URL")
554
+ if not server_url:
555
+ raise ValueError("VLLM_SERVER_URL environment variable not set")
556
+ self._llm_client = VLLMClient(self._model_id, server_url, self.logger)
521
557
  else:
522
558
  raise ValueError(f"Unsupported API type: {self._api_type}")
523
559
 
@@ -83,18 +83,14 @@ class ArXivTool(BaseTool):
83
83
  link = link_el.get("href")
84
84
  else:
85
85
  link = entry.findtext("atom:id", default="", namespaces=ns)
86
- published = entry.findtext(
87
- "atom:published", default="", namespaces=ns
88
- )
86
+ published = entry.findtext("atom:published", default="", namespaces=ns)
89
87
  updated = entry.findtext("atom:updated", default="", namespaces=ns)
90
88
  authors = [
91
89
  a.findtext("atom:name", default="", namespaces=ns)
92
90
  for a in entry.findall("atom:author", ns)
93
91
  ]
94
92
  primary_category = ""
95
- cat_el = entry.find(
96
- "{http://arxiv.org/schemas/atom}primary_category"
97
- )
93
+ cat_el = entry.find("{http://arxiv.org/schemas/atom}primary_category")
98
94
  if cat_el is not None:
99
95
  primary_category = cat_el.get("term", "")
100
96
 
tooluniverse/base_tool.py CHANGED
@@ -1,28 +1,27 @@
1
1
  from .utils import extract_function_call_json, evaluate_function_call
2
+ from .exceptions import (
3
+ ToolError,
4
+ ToolValidationError,
5
+ ToolAuthError,
6
+ ToolRateLimitError,
7
+ ToolUnavailableError,
8
+ ToolConfigError,
9
+ ToolDependencyError,
10
+ ToolServerError,
11
+ )
2
12
  import json
3
13
  from pathlib import Path
4
- from typing import no_type_check
5
-
6
-
7
- class ToolExecutionError(Exception):
8
- """Base exception for tool execution errors."""
9
-
10
-
11
- class ValidationError(Exception):
12
- """Exception raised when input validation fails."""
13
-
14
-
15
- class AuthenticationError(Exception):
16
- """Exception raised when authentication fails."""
17
-
18
-
19
- class RateLimitError(Exception):
20
- """Exception raised when API rate limit is exceeded."""
14
+ from typing import no_type_check, Optional, Dict, Any
15
+ import hashlib
16
+ import inspect
21
17
 
22
18
 
23
19
  class BaseTool:
20
+ STATIC_CACHE_VERSION = "1"
21
+
24
22
  def __init__(self, tool_config):
25
23
  self.tool_config = self._apply_defaults(tool_config)
24
+ self._cached_version_hash: Optional[str] = None
26
25
 
27
26
  @classmethod
28
27
  def get_default_config_file(cls):
@@ -122,12 +121,26 @@ class BaseTool:
122
121
  return merged_config
123
122
 
124
123
  @no_type_check
125
- def run(self, arguments=None):
124
+ def run(self, arguments=None, stream_callback=None, use_cache=False, validate=True):
126
125
  """Execute the tool.
127
126
 
128
127
  The default BaseTool implementation accepts an optional arguments
129
128
  mapping to align with most concrete tool implementations which expect
130
129
  a dictionary of inputs.
130
+
131
+ Args:
132
+ arguments (dict, optional): Tool-specific arguments
133
+ stream_callback (callable, optional): Callback for streaming responses
134
+ use_cache (bool, optional): Whether result caching is enabled
135
+ validate (bool, optional): Whether parameter validation was performed
136
+
137
+ Note:
138
+ These additional parameters (stream_callback, use_cache, validate) are
139
+ passed from run_one_function() to provide context about the execution.
140
+ Tools can use these for optimization or special handling.
141
+
142
+ For backward compatibility, tools that don't accept these parameters
143
+ will still work - they will only receive the arguments parameter.
131
144
  """
132
145
 
133
146
  def check_function_call(self, function_call_json):
@@ -144,12 +157,184 @@ class BaseTool:
144
157
  Returns:
145
158
  list: List of required parameters for the given endpoint.
146
159
  """
147
- required_params = []
148
- parameters = self.tool_config.get("parameter", {}).get("properties", {})
160
+ schema = self.tool_config.get("parameter", {})
161
+ required_params = schema.get("required", [])
162
+ return required_params
163
+
164
+ def validate_parameters(self, arguments: Dict[str, Any]) -> Optional[ToolError]:
165
+ """
166
+ Validate parameters against tool schema.
149
167
 
150
- # Check each parameter to see if it is required
151
- for param, details in parameters.items():
152
- if details.get("required", False):
153
- required_params.append(param.lower())
168
+ This method provides standard parameter validation using jsonschema.
169
+ Subclasses can override this method to implement custom validation
170
+ logic.
154
171
 
155
- return required_params
172
+ Args:
173
+ arguments: Dictionary of arguments to validate
174
+
175
+ Returns:
176
+ ToolError if validation fails, None if validation passes
177
+ """
178
+ schema = self.tool_config.get("parameter", {})
179
+
180
+ if not schema:
181
+ return None # No schema to validate against
182
+
183
+ try:
184
+ import jsonschema
185
+
186
+ jsonschema.validate(arguments, schema)
187
+ return None
188
+ except jsonschema.ValidationError as e:
189
+ return ToolValidationError(
190
+ f"Parameter validation failed: {e.message}",
191
+ details={
192
+ "validation_error": str(e),
193
+ "path": list(e.absolute_path) if e.absolute_path else [],
194
+ "schema": schema,
195
+ },
196
+ )
197
+ except Exception as e:
198
+ return ToolValidationError(f"Validation error: {str(e)}")
199
+
200
+ def handle_error(self, exception: Exception) -> ToolError:
201
+ """
202
+ Classify a raw exception into a structured ToolError.
203
+
204
+ This method provides standard error classification. Subclasses can
205
+ override this method to implement custom error handling logic.
206
+
207
+ Args:
208
+ exception: The raw exception to classify
209
+
210
+ Returns:
211
+ Structured ToolError instance
212
+ """
213
+ error_str = str(exception).lower()
214
+
215
+ if any(
216
+ keyword in error_str
217
+ for keyword in ["auth", "unauthorized", "401", "403", "api key", "token"]
218
+ ):
219
+ return ToolAuthError(f"Authentication failed: {exception}")
220
+ elif any(
221
+ keyword in error_str
222
+ for keyword in ["rate limit", "429", "quota", "limit exceeded"]
223
+ ):
224
+ return ToolRateLimitError(f"Rate limit exceeded: {exception}")
225
+ elif any(
226
+ keyword in error_str
227
+ for keyword in [
228
+ "unavailable",
229
+ "timeout",
230
+ "connection",
231
+ "network",
232
+ "not found",
233
+ "404",
234
+ ]
235
+ ):
236
+ return ToolUnavailableError(f"Tool unavailable: {exception}")
237
+ elif any(
238
+ keyword in error_str
239
+ for keyword in ["validation", "invalid", "schema", "parameter"]
240
+ ):
241
+ return ToolValidationError(f"Validation error: {exception}")
242
+ elif any(
243
+ keyword in error_str for keyword in ["config", "configuration", "setup"]
244
+ ):
245
+ return ToolConfigError(f"Configuration error: {exception}")
246
+ elif any(
247
+ keyword in error_str
248
+ for keyword in ["import", "module", "dependency", "package"]
249
+ ):
250
+ return ToolDependencyError(f"Dependency error: {exception}")
251
+ else:
252
+ return ToolServerError(f"Unexpected error: {exception}")
253
+
254
+ def get_cache_key(self, arguments: Dict[str, Any]) -> str:
255
+ """
256
+ Generate a cache key for this tool call.
257
+
258
+ This method provides standard cache key generation. Subclasses can
259
+ override this method to implement custom caching logic.
260
+
261
+ Args:
262
+ arguments: Dictionary of arguments for the tool call
263
+
264
+ Returns:
265
+ String cache key
266
+ """
267
+ # Include tool name and arguments in cache key
268
+ cache_data = {
269
+ "tool_name": self.tool_config.get("name", self.__class__.__name__),
270
+ "arguments": arguments,
271
+ }
272
+ serialized = json.dumps(cache_data, sort_keys=True)
273
+ return hashlib.md5(serialized.encode()).hexdigest()
274
+
275
+ def supports_streaming(self) -> bool:
276
+ """
277
+ Check if this tool supports streaming responses.
278
+
279
+ Returns:
280
+ True if tool supports streaming, False otherwise
281
+ """
282
+ return self.tool_config.get("supports_streaming", False)
283
+
284
+ def supports_caching(self) -> bool:
285
+ """
286
+ Check if this tool's results can be cached.
287
+
288
+ Returns:
289
+ True if tool results can be cached, False otherwise
290
+ """
291
+ return self.tool_config.get("cacheable", True)
292
+
293
+ def get_cache_namespace(self) -> str:
294
+ """Return cache namespace identifier for this tool."""
295
+ return self.tool_config.get("name", self.__class__.__name__)
296
+
297
+ def get_cache_version(self) -> str:
298
+ """Return a stable cache version fingerprint for this tool."""
299
+ if self._cached_version_hash:
300
+ return self._cached_version_hash
301
+
302
+ hasher = hashlib.sha256()
303
+ hasher.update(self.STATIC_CACHE_VERSION.encode("utf-8"))
304
+
305
+ try:
306
+ source = inspect.getsource(self.__class__)
307
+ hasher.update(source.encode("utf-8"))
308
+ except (OSError, TypeError):
309
+ pass
310
+
311
+ try:
312
+ schema = json.dumps(self.tool_config.get("parameter", {}), sort_keys=True)
313
+ hasher.update(schema.encode("utf-8"))
314
+ except (TypeError, ValueError):
315
+ pass
316
+
317
+ self._cached_version_hash = hasher.hexdigest()[:16]
318
+ return self._cached_version_hash
319
+
320
+ def get_cache_ttl(self, result: Any = None) -> Optional[int]:
321
+ """Return TTL (seconds) for cached results; None means no expiration."""
322
+ ttl = self.tool_config.get("cache_ttl")
323
+ return int(ttl) if ttl is not None else None
324
+
325
+ def get_tool_info(self) -> Dict[str, Any]:
326
+ """
327
+ Get comprehensive information about this tool.
328
+
329
+ Returns:
330
+ Dictionary containing tool metadata
331
+ """
332
+ return {
333
+ "name": self.tool_config.get("name", self.__class__.__name__),
334
+ "description": self.tool_config.get("description", ""),
335
+ "supports_streaming": self.supports_streaming(),
336
+ "supports_caching": self.supports_caching(),
337
+ "required_parameters": self.get_required_parameters(),
338
+ "parameter_schema": self.tool_config.get("parameter", {}),
339
+ "tool_type": self.__class__.__name__,
340
+ }
@@ -0,0 +1,118 @@
1
+ """
2
+ BioGRID Database REST API Tool
3
+
4
+ This tool provides access to protein and genetic interaction data from the BioGRID database.
5
+ BioGRID is a comprehensive database of physical and genetic interactions.
6
+ """
7
+
8
+ import requests
9
+ from typing import Dict, Any, List
10
+ from .base_tool import BaseTool
11
+ from .tool_registry import register_tool
12
+
13
+ BIOGRID_BASE_URL = "https://webservice.thebiogrid.org"
14
+
15
+
16
+ @register_tool("BioGRIDRESTTool")
17
+ class BioGRIDRESTTool(BaseTool):
18
+ """
19
+ BioGRID Database REST API tool.
20
+ Generic wrapper for BioGRID API endpoints defined in ppi_tools.json.
21
+ """
22
+
23
+ def __init__(self, tool_config):
24
+ super().__init__(tool_config)
25
+ fields = tool_config.get("fields", {})
26
+ parameter = tool_config.get("parameter", {})
27
+
28
+ self.endpoint_template: str = fields.get("endpoint", "/interactions/")
29
+ self.required: List[str] = parameter.get("required", [])
30
+ self.output_format: str = fields.get("return_format", "JSON")
31
+
32
+ def _build_url(self, arguments: Dict[str, Any]) -> str | Dict[str, Any]:
33
+ """Build URL for BioGRID API request."""
34
+ url_path = self.endpoint_template
35
+ return BIOGRID_BASE_URL + url_path
36
+
37
+ def _build_params(self, arguments: Dict[str, Any]) -> Dict[str, Any]:
38
+ """Build parameters for BioGRID API request."""
39
+ params = {"format": "json", "interSpeciesExcluded": "false"}
40
+
41
+ # Check for API key
42
+ api_key = arguments.get("api_key") or arguments.get("accesskey")
43
+ if not api_key:
44
+ # Try to get from environment variable
45
+ import os
46
+
47
+ api_key = os.getenv("BIOGRID_API_KEY")
48
+
49
+ if not api_key:
50
+ raise ValueError(
51
+ "BioGRID API key is required. Please provide 'api_key' parameter "
52
+ "or set BIOGRID_API_KEY environment variable. "
53
+ "Register at: https://webservice.thebiogrid.org/"
54
+ )
55
+
56
+ params["accesskey"] = api_key
57
+
58
+ # Map gene names to BioGRID format
59
+ if "gene_names" in arguments:
60
+ gene_names = arguments["gene_names"]
61
+ if isinstance(gene_names, list):
62
+ params["geneList"] = "|".join(gene_names)
63
+ else:
64
+ params["geneList"] = str(gene_names)
65
+
66
+ # Add other parameters
67
+ if "organism" in arguments:
68
+ # Convert organism name to taxonomy ID
69
+ organism = arguments["organism"]
70
+ if organism.lower() == "homo sapiens":
71
+ params["organism"] = 9606
72
+ elif organism.lower() == "mus musculus":
73
+ params["organism"] = 10090
74
+ else:
75
+ params["organism"] = organism
76
+
77
+ if "interaction_type" in arguments:
78
+ interaction_type = arguments["interaction_type"]
79
+ if interaction_type == "physical":
80
+ params["evidenceList"] = "physical"
81
+ elif interaction_type == "genetic":
82
+ params["evidenceList"] = "genetic"
83
+ # "both" means no evidence filter
84
+
85
+ if "limit" in arguments:
86
+ params["max"] = arguments["limit"]
87
+
88
+ return params
89
+
90
+ def _make_request(self, url: str, params: Dict[str, Any]) -> Dict[str, Any]:
91
+ """Perform a GET request and handle common errors."""
92
+ try:
93
+ response = requests.get(url, params=params, timeout=30)
94
+ response.raise_for_status()
95
+
96
+ if self.output_format == "JSON":
97
+ return response.json()
98
+ else:
99
+ return {"data": response.text}
100
+
101
+ except requests.exceptions.RequestException as e:
102
+ return {"error": f"Request failed: {str(e)}"}
103
+ except Exception as e:
104
+ return {"error": f"Unexpected error: {str(e)}"}
105
+
106
+ def run(self, arguments: Dict[str, Any]) -> Dict[str, Any]:
107
+ """Execute the tool with given arguments."""
108
+ # Validate required parameters
109
+ for param in self.required:
110
+ if param not in arguments:
111
+ return {"error": f"Missing required parameter: {param}"}
112
+
113
+ url = self._build_url(arguments)
114
+ if isinstance(url, dict) and "error" in url:
115
+ return url
116
+
117
+ params = self._build_params(arguments)
118
+ return self._make_request(url, params)