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