tooluniverse 1.0.9.1__py3-none-any.whl → 1.0.11__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 (191) hide show
  1. tooluniverse/__init__.py +57 -1
  2. tooluniverse/admetai_tool.py +1 -1
  3. tooluniverse/agentic_tool.py +65 -17
  4. tooluniverse/base_tool.py +19 -8
  5. tooluniverse/blast_tool.py +132 -0
  6. tooluniverse/boltz_tool.py +3 -3
  7. tooluniverse/cache/result_cache_manager.py +167 -12
  8. tooluniverse/cbioportal_tool.py +42 -0
  9. tooluniverse/clinvar_tool.py +268 -74
  10. tooluniverse/compose_scripts/drug_safety_analyzer.py +1 -1
  11. tooluniverse/compose_scripts/multi_agent_literature_search.py +1 -1
  12. tooluniverse/compose_scripts/output_summarizer.py +4 -4
  13. tooluniverse/compose_scripts/tool_discover.py +1941 -443
  14. tooluniverse/compose_scripts/tool_graph_composer.py +1 -1
  15. tooluniverse/compose_scripts/tool_metadata_generator.py +1 -1
  16. tooluniverse/compose_tool.py +9 -9
  17. tooluniverse/core_tool.py +2 -2
  18. tooluniverse/ctg_tool.py +4 -4
  19. tooluniverse/custom_tool.py +1 -1
  20. tooluniverse/data/agentic_tools.json +0 -370
  21. tooluniverse/data/alphafold_tools.json +6 -6
  22. tooluniverse/data/blast_tools.json +112 -0
  23. tooluniverse/data/cbioportal_tools.json +87 -0
  24. tooluniverse/data/clinvar_tools.json +235 -0
  25. tooluniverse/data/compose_tools.json +0 -89
  26. tooluniverse/data/dbsnp_tools.json +275 -0
  27. tooluniverse/data/emdb_tools.json +61 -0
  28. tooluniverse/data/ensembl_tools.json +259 -0
  29. tooluniverse/data/file_download_tools.json +275 -0
  30. tooluniverse/data/geo_tools.json +200 -48
  31. tooluniverse/data/gnomad_tools.json +109 -0
  32. tooluniverse/data/gtopdb_tools.json +68 -0
  33. tooluniverse/data/gwas_tools.json +32 -0
  34. tooluniverse/data/interpro_tools.json +199 -0
  35. tooluniverse/data/jaspar_tools.json +70 -0
  36. tooluniverse/data/kegg_tools.json +356 -0
  37. tooluniverse/data/mpd_tools.json +87 -0
  38. tooluniverse/data/ols_tools.json +314 -0
  39. tooluniverse/data/package_discovery_tools.json +64 -0
  40. tooluniverse/data/packages/categorized_tools.txt +0 -1
  41. tooluniverse/data/packages/machine_learning_tools.json +0 -47
  42. tooluniverse/data/paleobiology_tools.json +91 -0
  43. tooluniverse/data/pride_tools.json +62 -0
  44. tooluniverse/data/pypi_package_inspector_tools.json +158 -0
  45. tooluniverse/data/python_executor_tools.json +341 -0
  46. tooluniverse/data/regulomedb_tools.json +50 -0
  47. tooluniverse/data/remap_tools.json +89 -0
  48. tooluniverse/data/screen_tools.json +89 -0
  49. tooluniverse/data/tool_discovery_agents.json +428 -0
  50. tooluniverse/data/tool_discovery_agents.json.backup +1343 -0
  51. tooluniverse/data/uniprot_tools.json +77 -0
  52. tooluniverse/data/web_search_tools.json +250 -0
  53. tooluniverse/data/worms_tools.json +55 -0
  54. tooluniverse/dataset_tool.py +2 -2
  55. tooluniverse/dbsnp_tool.py +196 -58
  56. tooluniverse/default_config.py +36 -3
  57. tooluniverse/emdb_tool.py +30 -0
  58. tooluniverse/enrichr_tool.py +14 -14
  59. tooluniverse/ensembl_tool.py +140 -47
  60. tooluniverse/execute_function.py +594 -29
  61. tooluniverse/extended_hooks.py +4 -4
  62. tooluniverse/file_download_tool.py +269 -0
  63. tooluniverse/gene_ontology_tool.py +1 -1
  64. tooluniverse/generate_tools.py +3 -3
  65. tooluniverse/geo_tool.py +81 -28
  66. tooluniverse/gnomad_tool.py +100 -52
  67. tooluniverse/gtopdb_tool.py +41 -0
  68. tooluniverse/humanbase_tool.py +10 -10
  69. tooluniverse/interpro_tool.py +72 -0
  70. tooluniverse/jaspar_tool.py +30 -0
  71. tooluniverse/kegg_tool.py +230 -0
  72. tooluniverse/logging_config.py +2 -2
  73. tooluniverse/mcp_client_tool.py +57 -129
  74. tooluniverse/mcp_integration.py +52 -49
  75. tooluniverse/mcp_tool_registry.py +147 -528
  76. tooluniverse/mpd_tool.py +42 -0
  77. tooluniverse/ncbi_eutils_tool.py +96 -0
  78. tooluniverse/ols_tool.py +435 -0
  79. tooluniverse/openalex_tool.py +8 -8
  80. tooluniverse/openfda_tool.py +2 -2
  81. tooluniverse/output_hook.py +15 -15
  82. tooluniverse/package_discovery_tool.py +217 -0
  83. tooluniverse/package_tool.py +1 -1
  84. tooluniverse/paleobiology_tool.py +30 -0
  85. tooluniverse/pmc_tool.py +2 -2
  86. tooluniverse/pride_tool.py +30 -0
  87. tooluniverse/pypi_package_inspector_tool.py +593 -0
  88. tooluniverse/python_executor_tool.py +711 -0
  89. tooluniverse/regulomedb_tool.py +30 -0
  90. tooluniverse/remap_tool.py +44 -0
  91. tooluniverse/remote/boltz/boltz_mcp_server.py +1 -1
  92. tooluniverse/remote/depmap_24q2/depmap_24q2_mcp_tool.py +3 -3
  93. tooluniverse/remote/immune_compass/compass_tool.py +3 -3
  94. tooluniverse/remote/pinnacle/pinnacle_tool.py +2 -2
  95. tooluniverse/remote/transcriptformer/transcriptformer_tool.py +3 -3
  96. tooluniverse/remote/uspto_downloader/uspto_downloader_mcp_server.py +3 -3
  97. tooluniverse/remote_tool.py +4 -4
  98. tooluniverse/screen_tool.py +44 -0
  99. tooluniverse/scripts/filter_tool_files.py +2 -2
  100. tooluniverse/smcp.py +93 -12
  101. tooluniverse/smcp_server.py +100 -21
  102. tooluniverse/space/__init__.py +46 -0
  103. tooluniverse/space/loader.py +133 -0
  104. tooluniverse/space/validator.py +353 -0
  105. tooluniverse/tool_finder_embedding.py +5 -3
  106. tooluniverse/tool_finder_keyword.py +12 -10
  107. tooluniverse/tool_finder_llm.py +12 -8
  108. tooluniverse/tools/{UCSC_get_genes_by_region.py → BLAST_nucleotide_search.py} +22 -26
  109. tooluniverse/tools/BLAST_protein_search.py +63 -0
  110. tooluniverse/tools/ClinVar_search_variants.py +26 -15
  111. tooluniverse/tools/CodeQualityAnalyzer.py +3 -3
  112. tooluniverse/tools/EMDB_get_structure.py +46 -0
  113. tooluniverse/tools/GtoPdb_get_targets.py +52 -0
  114. tooluniverse/tools/InterPro_get_domain_details.py +46 -0
  115. tooluniverse/tools/InterPro_get_protein_domains.py +49 -0
  116. tooluniverse/tools/InterPro_search_domains.py +52 -0
  117. tooluniverse/tools/JASPAR_get_transcription_factors.py +52 -0
  118. tooluniverse/tools/MPD_get_phenotype_data.py +59 -0
  119. tooluniverse/tools/PRIDE_search_proteomics.py +52 -0
  120. tooluniverse/tools/PackageAnalyzer.py +55 -0
  121. tooluniverse/tools/Paleobiology_get_fossils.py +52 -0
  122. tooluniverse/tools/PyPIPackageInspector.py +59 -0
  123. tooluniverse/tools/ReMap_get_transcription_factor_binding.py +59 -0
  124. tooluniverse/tools/ReferenceInfoAnalyzer.py +55 -0
  125. tooluniverse/tools/RegulomeDB_query_variant.py +46 -0
  126. tooluniverse/tools/SCREEN_get_regulatory_elements.py +59 -0
  127. tooluniverse/tools/{ArgumentDescriptionOptimizer.py → TestResultsAnalyzer.py} +13 -13
  128. tooluniverse/tools/ToolDiscover.py +11 -11
  129. tooluniverse/tools/UniProt_id_mapping.py +63 -0
  130. tooluniverse/tools/UniProt_search.py +63 -0
  131. tooluniverse/tools/UnifiedToolGenerator.py +59 -0
  132. tooluniverse/tools/WoRMS_search_species.py +49 -0
  133. tooluniverse/tools/XMLToolOptimizer.py +55 -0
  134. tooluniverse/tools/__init__.py +119 -29
  135. tooluniverse/tools/_shared_client.py +3 -3
  136. tooluniverse/tools/alphafold_get_annotations.py +3 -3
  137. tooluniverse/tools/alphafold_get_prediction.py +3 -3
  138. tooluniverse/tools/alphafold_get_summary.py +3 -3
  139. tooluniverse/tools/cBioPortal_get_cancer_studies.py +46 -0
  140. tooluniverse/tools/cBioPortal_get_mutations.py +52 -0
  141. tooluniverse/tools/{gnomAD_query_variant.py → clinvar_get_clinical_significance.py} +8 -11
  142. tooluniverse/tools/clinvar_get_variant_details.py +49 -0
  143. tooluniverse/tools/dbSNP_get_variant_by_rsid.py +7 -7
  144. tooluniverse/tools/dbsnp_get_frequencies.py +46 -0
  145. tooluniverse/tools/dbsnp_search_by_gene.py +52 -0
  146. tooluniverse/tools/download_binary_file.py +66 -0
  147. tooluniverse/tools/download_file.py +71 -0
  148. tooluniverse/tools/download_text_content.py +55 -0
  149. tooluniverse/tools/dynamic_package_discovery.py +59 -0
  150. tooluniverse/tools/ensembl_get_sequence.py +52 -0
  151. tooluniverse/tools/{Ensembl_lookup_gene_by_symbol.py → ensembl_get_variants.py} +11 -11
  152. tooluniverse/tools/ensembl_lookup_gene.py +46 -0
  153. tooluniverse/tools/geo_get_dataset_info.py +46 -0
  154. tooluniverse/tools/geo_get_sample_info.py +46 -0
  155. tooluniverse/tools/geo_search_datasets.py +67 -0
  156. tooluniverse/tools/gnomad_get_gene_constraints.py +49 -0
  157. tooluniverse/tools/kegg_find_genes.py +52 -0
  158. tooluniverse/tools/kegg_get_gene_info.py +46 -0
  159. tooluniverse/tools/kegg_get_pathway_info.py +46 -0
  160. tooluniverse/tools/kegg_list_organisms.py +44 -0
  161. tooluniverse/tools/kegg_search_pathway.py +46 -0
  162. tooluniverse/tools/ols_find_similar_terms.py +63 -0
  163. tooluniverse/tools/{get_hyperopt_info.py → ols_get_ontology_info.py} +13 -10
  164. tooluniverse/tools/ols_get_term_ancestors.py +67 -0
  165. tooluniverse/tools/ols_get_term_children.py +67 -0
  166. tooluniverse/tools/{TestCaseGenerator.py → ols_get_term_info.py} +12 -9
  167. tooluniverse/tools/{CodeOptimizer.py → ols_search_ontologies.py} +22 -14
  168. tooluniverse/tools/ols_search_terms.py +71 -0
  169. tooluniverse/tools/python_code_executor.py +79 -0
  170. tooluniverse/tools/python_script_runner.py +79 -0
  171. tooluniverse/tools/web_api_documentation_search.py +63 -0
  172. tooluniverse/tools/web_search.py +71 -0
  173. tooluniverse/uniprot_tool.py +219 -16
  174. tooluniverse/url_tool.py +19 -1
  175. tooluniverse/uspto_tool.py +1 -1
  176. tooluniverse/utils.py +12 -12
  177. tooluniverse/web_search_tool.py +229 -0
  178. tooluniverse/worms_tool.py +64 -0
  179. {tooluniverse-1.0.9.1.dist-info → tooluniverse-1.0.11.dist-info}/METADATA +8 -3
  180. {tooluniverse-1.0.9.1.dist-info → tooluniverse-1.0.11.dist-info}/RECORD +184 -92
  181. tooluniverse/data/genomics_tools.json +0 -174
  182. tooluniverse/tools/ToolDescriptionOptimizer.py +0 -67
  183. tooluniverse/tools/ToolImplementationGenerator.py +0 -67
  184. tooluniverse/tools/ToolOptimizer.py +0 -59
  185. tooluniverse/tools/ToolSpecificationGenerator.py +0 -67
  186. tooluniverse/tools/ToolSpecificationOptimizer.py +0 -63
  187. tooluniverse/ucsc_tool.py +0 -60
  188. {tooluniverse-1.0.9.1.dist-info → tooluniverse-1.0.11.dist-info}/WHEEL +0 -0
  189. {tooluniverse-1.0.9.1.dist-info → tooluniverse-1.0.11.dist-info}/entry_points.txt +0 -0
  190. {tooluniverse-1.0.9.1.dist-info → tooluniverse-1.0.11.dist-info}/licenses/LICENSE +0 -0
  191. {tooluniverse-1.0.9.1.dist-info → tooluniverse-1.0.11.dist-info}/top_level.txt +0 -0
@@ -207,5 +207,82 @@
207
207
  "output_description": "Returns a list containing all isoform ID strings."
208
208
  },
209
209
  "type": "UniProtRESTTool"
210
+ },
211
+ {
212
+ "name": "UniProt_search",
213
+ "description": "Search UniProtKB database using flexible query syntax. Supports gene names (e.g., 'gene:TP53'), protein names, organism filters (e.g., 'organism:9606'), and complex queries using AND/OR operators. Returns matching proteins with accession numbers and key information. Use this to find UniProt accessions from gene or protein names.",
214
+ "parameter": {
215
+ "type": "object",
216
+ "properties": {
217
+ "query": {
218
+ "type": "string",
219
+ "description": "Search query. Can be simple (e.g., 'MEIOB') or advanced ('gene:TP53 AND organism:9606'). Keywords: gene, protein_name, organism, reviewed, etc."
220
+ },
221
+ "organism": {
222
+ "type": "string",
223
+ "description": "Optional organism filter. Can use common name ('human') or taxonomy ID ('9606'). Automatically combined with query using AND."
224
+ },
225
+ "limit": {
226
+ "type": "integer",
227
+ "description": "Maximum number of results to return (default: 25, max: 500)"
228
+ },
229
+ "fields": {
230
+ "type": "array",
231
+ "items": {
232
+ "type": "string"
233
+ },
234
+ "description": "Optional list of fields to return. Default returns: accession, id, protein_name, gene_names, organism, length"
235
+ }
236
+ },
237
+ "required": ["query"]
238
+ },
239
+ "fields": {
240
+ "endpoint": "https://rest.uniprot.org/uniprotkb/search",
241
+ "search_type": "search",
242
+ "format": "json"
243
+ },
244
+ "type": "UniProtRESTTool"
245
+ },
246
+ {
247
+ "name": "UniProt_id_mapping",
248
+ "description": "Map IDs between different databases (e.g., Ensembl to UniProt, Gene Name to UniProt). Supports batch mapping and async task processing. Use this to convert between different database identifiers.",
249
+ "parameter": {
250
+ "type": "object",
251
+ "properties": {
252
+ "ids": {
253
+ "oneOf": [
254
+ {
255
+ "type": "array",
256
+ "items": {
257
+ "type": "string"
258
+ }
259
+ },
260
+ {
261
+ "type": "string"
262
+ }
263
+ ],
264
+ "description": "ID(s) to map. Can be single string or array of strings, e.g., 'ENSG00000141510' or ['MEIOB', 'TP53']"
265
+ },
266
+ "from_db": {
267
+ "type": "string",
268
+ "description": "Source database. Examples: 'Ensembl', 'Gene_Name', 'RefSeq_Protein', 'PDB', 'EMBL'"
269
+ },
270
+ "to_db": {
271
+ "type": "string",
272
+ "description": "Target database (default: 'UniProtKB')"
273
+ },
274
+ "max_wait_time": {
275
+ "type": "integer",
276
+ "description": "Maximum time to wait for async task completion in seconds (default: 30)"
277
+ }
278
+ },
279
+ "required": ["ids", "from_db"]
280
+ },
281
+ "fields": {
282
+ "endpoint": "https://rest.uniprot.org/idmapping",
283
+ "mapping_type": "async",
284
+ "format": "json"
285
+ },
286
+ "type": "UniProtRESTTool"
210
287
  }
211
288
  ]
@@ -0,0 +1,250 @@
1
+ [
2
+ {
3
+ "type": "WebSearchTool",
4
+ "name": "web_search",
5
+ "description": "General web search using DDGS (Dux Distributed Global Search) supporting multiple search engines including Google, Bing, Brave, Yahoo, and DuckDuckGo. No API keys required.",
6
+ "parameter": {
7
+ "type": "object",
8
+ "properties": {
9
+ "query": {
10
+ "type": "string",
11
+ "description": "Search query string"
12
+ },
13
+ "max_results": {
14
+ "type": "integer",
15
+ "description": "Maximum number of results to return",
16
+ "default": 10,
17
+ "minimum": 1,
18
+ "maximum": 50
19
+ },
20
+ "search_type": {
21
+ "type": "string",
22
+ "description": "Type of search to perform",
23
+ "enum": ["general", "api_documentation", "python_packages", "github"],
24
+ "default": "general"
25
+ },
26
+ "backend": {
27
+ "type": "string",
28
+ "description": "Search engine backend to use",
29
+ "enum": ["auto", "google", "bing", "brave", "yahoo", "duckduckgo"],
30
+ "default": "auto"
31
+ },
32
+ "region": {
33
+ "type": "string",
34
+ "description": "Search region/locale",
35
+ "enum": ["us-en", "cn-zh", "uk-en", "de-de", "fr-fr", "ja-jp"],
36
+ "default": "us-en"
37
+ },
38
+ "safesearch": {
39
+ "type": "string",
40
+ "description": "Safe search level",
41
+ "enum": ["on", "moderate", "off"],
42
+ "default": "moderate"
43
+ }
44
+ },
45
+ "required": ["query"]
46
+ },
47
+ "return_schema": {
48
+ "type": "object",
49
+ "properties": {
50
+ "status": {
51
+ "type": "string",
52
+ "description": "Status of the search operation",
53
+ "enum": ["success", "error"]
54
+ },
55
+ "query": {
56
+ "type": "string",
57
+ "description": "The search query that was executed"
58
+ },
59
+ "search_type": {
60
+ "type": "string",
61
+ "description": "Type of search that was performed"
62
+ },
63
+ "total_results": {
64
+ "type": "integer",
65
+ "description": "Total number of results found"
66
+ },
67
+ "results": {
68
+ "type": "array",
69
+ "description": "Array of search results",
70
+ "items": {
71
+ "type": "object",
72
+ "properties": {
73
+ "title": {
74
+ "type": "string",
75
+ "description": "Title of the search result"
76
+ },
77
+ "url": {
78
+ "type": "string",
79
+ "description": "URL of the search result"
80
+ },
81
+ "snippet": {
82
+ "type": "string",
83
+ "description": "Snippet or description of the result"
84
+ },
85
+ "rank": {
86
+ "type": "integer",
87
+ "description": "Rank of the result in search results"
88
+ }
89
+ },
90
+ "required": ["title", "url", "snippet", "rank"]
91
+ }
92
+ },
93
+ "error": {
94
+ "type": "string",
95
+ "description": "Error message if status is error"
96
+ }
97
+ },
98
+ "required": ["status", "query", "total_results", "results"]
99
+ },
100
+ "test_examples": [
101
+ {
102
+ "input": {
103
+ "query": "python requests library",
104
+ "max_results": 5
105
+ },
106
+ "expected_output_type": "object",
107
+ "description": "Search for Python requests library information"
108
+ },
109
+ {
110
+ "input": {
111
+ "query": "machine learning APIs",
112
+ "search_type": "api_documentation",
113
+ "max_results": 3
114
+ },
115
+ "expected_output_type": "object",
116
+ "description": "Search for machine learning API documentation"
117
+ }
118
+ ],
119
+ "metadata": {
120
+ "tags": ["web-search", "multi-engine", "no-api-key", "ddgs"],
121
+ "difficulty_level": "easy",
122
+ "estimated_execution_time": "2-5 seconds"
123
+ }
124
+ },
125
+ {
126
+ "type": "WebAPIDocumentationSearchTool",
127
+ "name": "web_api_documentation_search",
128
+ "description": "Specialized web search for API documentation, Python packages, and technical resources using DDGS with multiple search engines. Optimized for finding official documentation and library information.",
129
+ "parameter": {
130
+ "type": "object",
131
+ "properties": {
132
+ "query": {
133
+ "type": "string",
134
+ "description": "Search query string (e.g., tool name, library name, API name)"
135
+ },
136
+ "max_results": {
137
+ "type": "integer",
138
+ "description": "Maximum number of results to return",
139
+ "default": 10,
140
+ "minimum": 1,
141
+ "maximum": 50
142
+ },
143
+ "focus": {
144
+ "type": "string",
145
+ "description": "Focus area for the search",
146
+ "enum": ["api_docs", "python_packages", "github_repos"],
147
+ "default": "api_docs"
148
+ },
149
+ "backend": {
150
+ "type": "string",
151
+ "description": "Search engine backend to use",
152
+ "enum": ["auto", "google", "bing", "brave", "yahoo", "duckduckgo"],
153
+ "default": "auto"
154
+ }
155
+ },
156
+ "required": ["query"]
157
+ },
158
+ "return_schema": {
159
+ "type": "object",
160
+ "properties": {
161
+ "status": {
162
+ "type": "string",
163
+ "description": "Status of the search operation",
164
+ "enum": ["success", "error"]
165
+ },
166
+ "query": {
167
+ "type": "string",
168
+ "description": "The search query that was executed"
169
+ },
170
+ "focus": {
171
+ "type": "string",
172
+ "description": "Focus area that was used for the search"
173
+ },
174
+ "enhanced_query": {
175
+ "type": "string",
176
+ "description": "Enhanced query that was actually executed"
177
+ },
178
+ "total_results": {
179
+ "type": "integer",
180
+ "description": "Total number of results found"
181
+ },
182
+ "results": {
183
+ "type": "array",
184
+ "description": "Array of search results",
185
+ "items": {
186
+ "type": "object",
187
+ "properties": {
188
+ "title": {
189
+ "type": "string",
190
+ "description": "Title of the search result"
191
+ },
192
+ "url": {
193
+ "type": "string",
194
+ "description": "URL of the search result"
195
+ },
196
+ "snippet": {
197
+ "type": "string",
198
+ "description": "Snippet or description of the result"
199
+ },
200
+ "rank": {
201
+ "type": "integer",
202
+ "description": "Rank of the result in search results"
203
+ }
204
+ },
205
+ "required": ["title", "url", "snippet", "rank"]
206
+ }
207
+ },
208
+ "error": {
209
+ "type": "string",
210
+ "description": "Error message if status is error"
211
+ }
212
+ },
213
+ "required": ["status", "query", "total_results", "results"]
214
+ },
215
+ "test_examples": [
216
+ {
217
+ "input": {
218
+ "query": "pandas",
219
+ "focus": "api_docs",
220
+ "max_results": 5
221
+ },
222
+ "expected_output_type": "object",
223
+ "description": "Search for pandas API documentation"
224
+ },
225
+ {
226
+ "input": {
227
+ "query": "requests",
228
+ "focus": "python_packages",
229
+ "max_results": 3
230
+ },
231
+ "expected_output_type": "object",
232
+ "description": "Search for requests Python package information"
233
+ },
234
+ {
235
+ "input": {
236
+ "query": "scikit-learn",
237
+ "focus": "github_repos",
238
+ "max_results": 3
239
+ },
240
+ "expected_output_type": "object",
241
+ "description": "Search for scikit-learn GitHub repositories"
242
+ }
243
+ ],
244
+ "metadata": {
245
+ "tags": ["web-search", "api-documentation", "python-packages", "technical-resources", "multi-engine", "ddgs"],
246
+ "difficulty_level": "easy",
247
+ "estimated_execution_time": "2-5 seconds"
248
+ }
249
+ }
250
+ ]
@@ -0,0 +1,55 @@
1
+ [
2
+ {
3
+ "type": "WoRMSRESTTool",
4
+ "name": "WoRMS_search_species",
5
+ "description": "Search marine species in World Register of Marine Species",
6
+ "parameter": {
7
+ "type": "object",
8
+ "properties": {
9
+ "query": {"type": "string", "description": "Species name or search term"},
10
+ "limit": {"type": "integer", "default": 20, "description": "Number of results"}
11
+ },
12
+ "required": ["query"]
13
+ },
14
+ "fields": {
15
+ "endpoint": "https://www.marinespecies.org/rest/AphiaIDByName/{query}",
16
+ "return_format": "JSON"
17
+ },
18
+ "return_schema": {
19
+ "type": "object",
20
+ "properties": {
21
+ "AphiaID": {"type": "integer"},
22
+ "url": {"type": "string"},
23
+ "scientificname": {"type": "string"},
24
+ "authority": {"type": "string"},
25
+ "status": {"type": "string"},
26
+ "unacceptreason": {"type": "string"},
27
+ "taxonRankID": {"type": "integer"},
28
+ "rank": {"type": "string"},
29
+ "valid_AphiaID": {"type": "integer"},
30
+ "valid_name": {"type": "string"},
31
+ "valid_authority": {"type": "string"},
32
+ "parentNameUsageID": {"type": "integer"},
33
+ "kingdom": {"type": "string"},
34
+ "phylum": {"type": "string"},
35
+ "class": {"type": "string"},
36
+ "order": {"type": "string"},
37
+ "family": {"type": "string"},
38
+ "genus": {"type": "string"},
39
+ "citation": {"type": "string"},
40
+ "lsid": {"type": "string"},
41
+ "isMarine": {"type": "boolean"},
42
+ "isBrackish": {"type": "boolean"},
43
+ "isFreshwater": {"type": "boolean"},
44
+ "isTerrestrial": {"type": "boolean"},
45
+ "isExtinct": {"type": "boolean"},
46
+ "match_type": {"type": "string"},
47
+ "modified": {"type": "string"}
48
+ }
49
+ },
50
+ "test_examples": [
51
+ {"query": "Actinia equina", "limit": 5},
52
+ {"query": "Scleractinia", "limit": 10}
53
+ ]
54
+ }
55
+ ]
@@ -123,7 +123,7 @@ class DatasetTool(BaseTool):
123
123
  - exact_match (bool): Whether to perform exact matching
124
124
  - limit (int): Maximum number of results
125
125
 
126
- Returns:
126
+ Returns
127
127
  dict: Search results with matched records and metadata
128
128
  """
129
129
  query = arguments.get("query", "")
@@ -206,7 +206,7 @@ class DatasetTool(BaseTool):
206
206
  - value (str): Value to filter by (optional for not_empty condition)
207
207
  - limit (int): Maximum number of results
208
208
 
209
- Returns:
209
+ Returns
210
210
  dict: Filtered results with matched records and applied filters
211
211
  """
212
212
  field = arguments.get("field")