tooluniverse 0.2.0__py3-none-any.whl → 1.0.0__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 (190) hide show
  1. tooluniverse/__init__.py +340 -4
  2. tooluniverse/admetai_tool.py +84 -0
  3. tooluniverse/agentic_tool.py +563 -0
  4. tooluniverse/alphafold_tool.py +96 -0
  5. tooluniverse/base_tool.py +129 -6
  6. tooluniverse/boltz_tool.py +207 -0
  7. tooluniverse/chem_tool.py +192 -0
  8. tooluniverse/compose_scripts/__init__.py +1 -0
  9. tooluniverse/compose_scripts/biomarker_discovery.py +293 -0
  10. tooluniverse/compose_scripts/comprehensive_drug_discovery.py +186 -0
  11. tooluniverse/compose_scripts/drug_safety_analyzer.py +89 -0
  12. tooluniverse/compose_scripts/literature_tool.py +34 -0
  13. tooluniverse/compose_scripts/output_summarizer.py +279 -0
  14. tooluniverse/compose_scripts/tool_description_optimizer.py +681 -0
  15. tooluniverse/compose_scripts/tool_discover.py +705 -0
  16. tooluniverse/compose_scripts/tool_graph_composer.py +448 -0
  17. tooluniverse/compose_tool.py +371 -0
  18. tooluniverse/ctg_tool.py +1002 -0
  19. tooluniverse/custom_tool.py +81 -0
  20. tooluniverse/dailymed_tool.py +108 -0
  21. tooluniverse/data/admetai_tools.json +155 -0
  22. tooluniverse/data/agentic_tools.json +1156 -0
  23. tooluniverse/data/alphafold_tools.json +87 -0
  24. tooluniverse/data/boltz_tools.json +9 -0
  25. tooluniverse/data/chembl_tools.json +16 -0
  26. tooluniverse/data/clait_tools.json +108 -0
  27. tooluniverse/data/clinicaltrials_gov_tools.json +326 -0
  28. tooluniverse/data/compose_tools.json +202 -0
  29. tooluniverse/data/dailymed_tools.json +70 -0
  30. tooluniverse/data/dataset_tools.json +646 -0
  31. tooluniverse/data/disease_target_score_tools.json +712 -0
  32. tooluniverse/data/efo_tools.json +17 -0
  33. tooluniverse/data/embedding_tools.json +319 -0
  34. tooluniverse/data/enrichr_tools.json +31 -0
  35. tooluniverse/data/europe_pmc_tools.json +22 -0
  36. tooluniverse/data/expert_feedback_tools.json +10 -0
  37. tooluniverse/data/fda_drug_adverse_event_tools.json +491 -0
  38. tooluniverse/data/fda_drug_labeling_tools.json +1 -1
  39. tooluniverse/data/fda_drugs_with_brand_generic_names_for_tool.py +76929 -148860
  40. tooluniverse/data/finder_tools.json +209 -0
  41. tooluniverse/data/gene_ontology_tools.json +113 -0
  42. tooluniverse/data/gwas_tools.json +1082 -0
  43. tooluniverse/data/hpa_tools.json +333 -0
  44. tooluniverse/data/humanbase_tools.json +47 -0
  45. tooluniverse/data/idmap_tools.json +74 -0
  46. tooluniverse/data/mcp_client_tools_example.json +113 -0
  47. tooluniverse/data/mcpautoloadertool_defaults.json +28 -0
  48. tooluniverse/data/medlineplus_tools.json +141 -0
  49. tooluniverse/data/monarch_tools.json +1 -1
  50. tooluniverse/data/openalex_tools.json +36 -0
  51. tooluniverse/data/opentarget_tools.json +1 -1
  52. tooluniverse/data/output_summarization_tools.json +101 -0
  53. tooluniverse/data/packages/bioinformatics_core_tools.json +1756 -0
  54. tooluniverse/data/packages/categorized_tools.txt +206 -0
  55. tooluniverse/data/packages/cheminformatics_tools.json +347 -0
  56. tooluniverse/data/packages/earth_sciences_tools.json +74 -0
  57. tooluniverse/data/packages/genomics_tools.json +776 -0
  58. tooluniverse/data/packages/image_processing_tools.json +38 -0
  59. tooluniverse/data/packages/machine_learning_tools.json +789 -0
  60. tooluniverse/data/packages/neuroscience_tools.json +62 -0
  61. tooluniverse/data/packages/original_tools.txt +0 -0
  62. tooluniverse/data/packages/physics_astronomy_tools.json +62 -0
  63. tooluniverse/data/packages/scientific_computing_tools.json +560 -0
  64. tooluniverse/data/packages/single_cell_tools.json +453 -0
  65. tooluniverse/data/packages/software_tools.json +4954 -0
  66. tooluniverse/data/packages/structural_biology_tools.json +396 -0
  67. tooluniverse/data/packages/visualization_tools.json +399 -0
  68. tooluniverse/data/pubchem_tools.json +215 -0
  69. tooluniverse/data/pubtator_tools.json +68 -0
  70. tooluniverse/data/rcsb_pdb_tools.json +1332 -0
  71. tooluniverse/data/reactome_tools.json +19 -0
  72. tooluniverse/data/semantic_scholar_tools.json +26 -0
  73. tooluniverse/data/special_tools.json +2 -25
  74. tooluniverse/data/tool_composition_tools.json +88 -0
  75. tooluniverse/data/toolfinderkeyword_defaults.json +34 -0
  76. tooluniverse/data/txagent_client_tools.json +9 -0
  77. tooluniverse/data/uniprot_tools.json +211 -0
  78. tooluniverse/data/url_fetch_tools.json +94 -0
  79. tooluniverse/data/uspto_downloader_tools.json +9 -0
  80. tooluniverse/data/uspto_tools.json +811 -0
  81. tooluniverse/data/xml_tools.json +3275 -0
  82. tooluniverse/dataset_tool.py +296 -0
  83. tooluniverse/default_config.py +165 -0
  84. tooluniverse/efo_tool.py +42 -0
  85. tooluniverse/embedding_database.py +630 -0
  86. tooluniverse/embedding_sync.py +396 -0
  87. tooluniverse/enrichr_tool.py +266 -0
  88. tooluniverse/europe_pmc_tool.py +52 -0
  89. tooluniverse/execute_function.py +1775 -95
  90. tooluniverse/extended_hooks.py +444 -0
  91. tooluniverse/gene_ontology_tool.py +194 -0
  92. tooluniverse/graphql_tool.py +158 -36
  93. tooluniverse/gwas_tool.py +358 -0
  94. tooluniverse/hpa_tool.py +1645 -0
  95. tooluniverse/humanbase_tool.py +389 -0
  96. tooluniverse/logging_config.py +254 -0
  97. tooluniverse/mcp_client_tool.py +764 -0
  98. tooluniverse/mcp_integration.py +413 -0
  99. tooluniverse/mcp_tool_registry.py +925 -0
  100. tooluniverse/medlineplus_tool.py +337 -0
  101. tooluniverse/openalex_tool.py +228 -0
  102. tooluniverse/openfda_adv_tool.py +283 -0
  103. tooluniverse/openfda_tool.py +393 -160
  104. tooluniverse/output_hook.py +1122 -0
  105. tooluniverse/package_tool.py +195 -0
  106. tooluniverse/pubchem_tool.py +158 -0
  107. tooluniverse/pubtator_tool.py +168 -0
  108. tooluniverse/rcsb_pdb_tool.py +38 -0
  109. tooluniverse/reactome_tool.py +108 -0
  110. tooluniverse/remote/boltz/boltz_mcp_server.py +50 -0
  111. tooluniverse/remote/depmap_24q2/depmap_24q2_mcp_tool.py +442 -0
  112. tooluniverse/remote/expert_feedback/human_expert_mcp_tools.py +2013 -0
  113. tooluniverse/remote/expert_feedback/simple_test.py +23 -0
  114. tooluniverse/remote/expert_feedback/start_web_interface.py +188 -0
  115. tooluniverse/remote/expert_feedback/web_only_interface.py +0 -0
  116. tooluniverse/remote/expert_feedback_mcp/human_expert_mcp_server.py +1611 -0
  117. tooluniverse/remote/expert_feedback_mcp/simple_test.py +34 -0
  118. tooluniverse/remote/expert_feedback_mcp/start_web_interface.py +91 -0
  119. tooluniverse/remote/immune_compass/compass_tool.py +327 -0
  120. tooluniverse/remote/pinnacle/pinnacle_tool.py +328 -0
  121. tooluniverse/remote/transcriptformer/transcriptformer_tool.py +586 -0
  122. tooluniverse/remote/uspto_downloader/uspto_downloader_mcp_server.py +61 -0
  123. tooluniverse/remote/uspto_downloader/uspto_downloader_tool.py +120 -0
  124. tooluniverse/remote_tool.py +99 -0
  125. tooluniverse/restful_tool.py +53 -30
  126. tooluniverse/scripts/generate_tool_graph.py +408 -0
  127. tooluniverse/scripts/visualize_tool_graph.py +829 -0
  128. tooluniverse/semantic_scholar_tool.py +62 -0
  129. tooluniverse/smcp.py +2452 -0
  130. tooluniverse/smcp_server.py +975 -0
  131. tooluniverse/test/mcp_server_test.py +0 -0
  132. tooluniverse/test/test_admetai_tool.py +370 -0
  133. tooluniverse/test/test_agentic_tool.py +129 -0
  134. tooluniverse/test/test_alphafold_tool.py +71 -0
  135. tooluniverse/test/test_chem_tool.py +37 -0
  136. tooluniverse/test/test_compose_lieraturereview.py +63 -0
  137. tooluniverse/test/test_compose_tool.py +448 -0
  138. tooluniverse/test/test_dailymed.py +69 -0
  139. tooluniverse/test/test_dataset_tool.py +200 -0
  140. tooluniverse/test/test_disease_target_score.py +56 -0
  141. tooluniverse/test/test_drugbank_filter_examples.py +179 -0
  142. tooluniverse/test/test_efo.py +31 -0
  143. tooluniverse/test/test_enrichr_tool.py +21 -0
  144. tooluniverse/test/test_europe_pmc_tool.py +20 -0
  145. tooluniverse/test/test_fda_adv.py +95 -0
  146. tooluniverse/test/test_fda_drug_labeling.py +91 -0
  147. tooluniverse/test/test_gene_ontology_tools.py +66 -0
  148. tooluniverse/test/test_gwas_tool.py +139 -0
  149. tooluniverse/test/test_hpa.py +625 -0
  150. tooluniverse/test/test_humanbase_tool.py +20 -0
  151. tooluniverse/test/test_idmap_tools.py +61 -0
  152. tooluniverse/test/test_mcp_server.py +211 -0
  153. tooluniverse/test/test_mcp_tool.py +247 -0
  154. tooluniverse/test/test_medlineplus.py +220 -0
  155. tooluniverse/test/test_openalex_tool.py +32 -0
  156. tooluniverse/test/test_opentargets.py +28 -0
  157. tooluniverse/test/test_pubchem_tool.py +116 -0
  158. tooluniverse/test/test_pubtator_tool.py +37 -0
  159. tooluniverse/test/test_rcsb_pdb_tool.py +86 -0
  160. tooluniverse/test/test_reactome.py +54 -0
  161. tooluniverse/test/test_semantic_scholar_tool.py +24 -0
  162. tooluniverse/test/test_software_tools.py +147 -0
  163. tooluniverse/test/test_tool_description_optimizer.py +49 -0
  164. tooluniverse/test/test_tool_finder.py +26 -0
  165. tooluniverse/test/test_tool_finder_llm.py +252 -0
  166. tooluniverse/test/test_tools_find.py +195 -0
  167. tooluniverse/test/test_uniprot_tools.py +74 -0
  168. tooluniverse/test/test_uspto_tool.py +72 -0
  169. tooluniverse/test/test_xml_tool.py +113 -0
  170. tooluniverse/tool_finder_embedding.py +267 -0
  171. tooluniverse/tool_finder_keyword.py +693 -0
  172. tooluniverse/tool_finder_llm.py +699 -0
  173. tooluniverse/tool_graph_web_ui.py +955 -0
  174. tooluniverse/tool_registry.py +416 -0
  175. tooluniverse/uniprot_tool.py +155 -0
  176. tooluniverse/url_tool.py +253 -0
  177. tooluniverse/uspto_tool.py +240 -0
  178. tooluniverse/utils.py +369 -41
  179. tooluniverse/xml_tool.py +369 -0
  180. tooluniverse-1.0.0.dist-info/METADATA +377 -0
  181. tooluniverse-1.0.0.dist-info/RECORD +186 -0
  182. tooluniverse-1.0.0.dist-info/entry_points.txt +9 -0
  183. tooluniverse/generate_mcp_tools.py +0 -113
  184. tooluniverse/mcp_server.py +0 -3340
  185. tooluniverse-0.2.0.dist-info/METADATA +0 -139
  186. tooluniverse-0.2.0.dist-info/RECORD +0 -21
  187. tooluniverse-0.2.0.dist-info/entry_points.txt +0 -4
  188. {tooluniverse-0.2.0.dist-info → tooluniverse-1.0.0.dist-info}/WHEEL +0 -0
  189. {tooluniverse-0.2.0.dist-info → tooluniverse-1.0.0.dist-info}/licenses/LICENSE +0 -0
  190. {tooluniverse-0.2.0.dist-info → tooluniverse-1.0.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,19 @@
1
+ [
2
+ {
3
+ "name": "Reactome_get_pathway_reactions",
4
+ "description": "Query all Reactions contained under a Pathway using Pathway Stable ID. This is currently the only working Reactome tool.",
5
+ "endpoint": "/data/pathway/{stId}/containedEvents",
6
+ "method": "GET",
7
+ "parameter": {
8
+ "type": "object",
9
+ "properties": {
10
+ "stId": {
11
+ "type": "string",
12
+ "description": "Pathway Stable ID, e.g., 'R-HSA-73817' (verified valid)."
13
+ }
14
+ },
15
+ "required": ["stId"]
16
+ },
17
+ "type": "ReactomeRESTTool"
18
+ }
19
+ ]
@@ -0,0 +1,26 @@
1
+ [
2
+ {
3
+ "type": "SemanticScholarTool",
4
+ "name": "SemanticScholar_search_papers",
5
+ "description": "Search for papers on Semantic Scholar including abstracts. This tool queries the Semantic Scholar API using natural language keywords and returns papers with details such as title, abstract, publication year, journal (venue), and URL.",
6
+ "parameter": {
7
+ "type": "object",
8
+ "properties": {
9
+ "query": {
10
+ "type": "string",
11
+ "description": "Search query for Semantic Scholar. Use keywords separated by spaces to refine the search."
12
+ },
13
+ "limit": {
14
+ "type": "integer",
15
+ "description": "Maximum number of papers to return from Semantic Scholar.",
16
+ "default": 5
17
+ },
18
+ "api_key": {
19
+ "type": "string",
20
+ "description": "Optional API key for Semantic Scholar to obtain a higher quota."
21
+ }
22
+ },
23
+ "required": ["query"]
24
+ }
25
+ }
26
+ ]
@@ -7,35 +7,12 @@
7
7
  "properties": null
8
8
  }
9
9
  },
10
- {
11
- "name": "Tool_RAG",
12
- "description": "Retrieve related tools from the toolbox based on the provided description",
13
- "parameter": {
14
- "type": "object",
15
- "properties": {
16
- "description": {
17
- "type": "string",
18
- "description": "The description of the tool capability required.",
19
- "required": true
20
- },
21
- "limit": {
22
- "type": "integer",
23
- "description": "The number of tools to retrieve",
24
- "required": true
25
- }
26
- }
27
- },
28
- "required": [
29
- "description",
30
- "limit"
31
- ]
32
- },
33
10
  {
34
11
  "name": "CallAgent",
35
12
  "description": "Give a solution plan to the agent and let it solve the problem. Solution plan should reflect a distinct method, approach, or viewpoint to solve the given question. Call these function multiple times, and each solution plan should start with different aspects of the question, for example, genes, phenotypes, diseases, or drugs, etc. The CallAgent will achieve the task based on the plan, so only give the plan instead of unverified information.",
36
13
  "parameter": {
37
14
  "type": "object",
38
- "properties":
15
+ "properties":
39
16
  {
40
17
  "solution": {
41
18
  "type": "string",
@@ -45,4 +22,4 @@
45
22
  }
46
23
  }
47
24
  }
48
- ]
25
+ ]
@@ -0,0 +1,88 @@
1
+ [
2
+ {
3
+ "type": "AgenticTool",
4
+ "name": "ToolCompatibilityAnalyzer",
5
+ "description": "Analyzes two tool specifications to determine if one tool's output can be used as input for another tool. Returns compatibility information and suggested parameter mappings.",
6
+ "prompt": "You are an expert in API design and workflow automation. Your task is to analyze two tool specifications and determine if the output of the first tool (source) can be used as input for the second tool (target).\n\n## ANALYSIS PARAMETERS\nSource Tool: {source_tool}\nTarget Tool: {target_tool}\nAnalysis Depth: {analysis_depth}\n\n## ANALYSIS INSTRUCTIONS\n\nPerform a comprehensive compatibility analysis between these two tools with the following structure:\n\n### 1. BASIC COMPATIBILITY ASSESSMENT\n- Can the source tool's output format be used by the target tool?\n- Are there any obvious format mismatches (e.g., text vs structured data)?\n- Overall compatibility score (0-100)\n\n### 2. PARAMETER MAPPING ANALYSIS\nFor each required parameter in the target tool:\n- Can it be satisfied by the source tool's output?\n- What is the mapping path (direct field, derived value, transformation needed)?\n- Confidence level for each mapping (high/medium/low)\n\n### 3. DATA TYPE COMPATIBILITY\n- String/text compatibility\n- Numerical data compatibility\n- Array/list compatibility\n- Object/structured data compatibility\n- Special format requirements (URLs, IDs, dates, etc.)\n\n### 4. SEMANTIC COMPATIBILITY\n- Do the tools operate in compatible domains?\n- Are the data semantics aligned (e.g., gene symbols, drug names, disease IDs)?\n- Any domain-specific considerations?\n\n### 5. COMPOSITION VIABILITY\n- Is this a viable composition for automated workflows?\n- What preprocessing/transformation would be needed?\n- Risk assessment for automated composition\n\n### 6. PARAMETER MAPPING SUGGESTIONS\nProvide specific mapping suggestions in JSON format:\n```json\n{\n \"direct_mappings\": {\n \"target_param1\": \"source_output.field1\",\n \"target_param2\": \"source_output.field2\"\n },\n \"derived_mappings\": {\n \"target_param3\": \"transform(source_output.field3)\",\n \"target_param4\": \"extract_from(source_output.field4)\"\n },\n \"missing_parameters\": [\"param5\", \"param6\"],\n \"default_values\": {\n \"param7\": \"default_value\"\n }\n}\n```\n\n### 7. FINAL ASSESSMENT\n- Overall compatibility: Compatible/Partially Compatible/Incompatible\n- Automation readiness: Ready/Needs Development/Not Feasible\n- Confidence score: 0-100\n- Key limitations or requirements\n\nReturn your analysis in structured format with clear actionable recommendations.",
7
+ "input_arguments": ["source_tool", "target_tool", "analysis_depth"],
8
+ "parameter": {
9
+ "type": "object",
10
+ "properties": {
11
+ "source_tool": {
12
+ "type": "string",
13
+ "description": "The source tool specification (JSON string with name, description, parameter schema, and example outputs)",
14
+ "required": true
15
+ },
16
+ "target_tool": {
17
+ "type": "string",
18
+ "description": "The target tool specification (JSON string with name, description, parameter schema)",
19
+ "required": true
20
+ },
21
+ "analysis_depth": {
22
+ "type": "string",
23
+ "enum": ["quick", "detailed", "comprehensive"],
24
+ "description": "Level of analysis depth - quick for basic compatibility, detailed for parameter mapping, comprehensive for semantic analysis",
25
+ "default": "detailed"
26
+ }
27
+ },
28
+ "required": ["source_tool", "target_tool"]
29
+ },
30
+ "configs": {
31
+ "api_type": "CHATGPT",
32
+ "model_id": "o4-mini-0416",
33
+ "temperature": 0.1,
34
+ "max_new_tokens": 3000,
35
+ "return_json": false
36
+ }
37
+ },
38
+ {
39
+ "type": "ComposeTool",
40
+ "name": "ToolGraphComposer",
41
+ "description": "Builds a comprehensive graph of tool compatibility relationships in ToolUniverse. Analyzes all available tools and creates a directed graph showing which tools can be composed together.",
42
+ "parameter": {
43
+ "type": "object",
44
+ "properties": {
45
+ "output_path": {
46
+ "type": "string",
47
+ "description": "Path to save the generated graph files (JSON and pickle formats)",
48
+ "default": "./tool_composition_graph"
49
+ },
50
+ "analysis_depth": {
51
+ "type": "string",
52
+ "enum": ["quick", "detailed", "comprehensive"],
53
+ "description": "Level of compatibility analysis to perform",
54
+ "default": "detailed"
55
+ },
56
+ "min_compatibility_score": {
57
+ "type": "integer",
58
+ "minimum": 0,
59
+ "maximum": 100,
60
+ "description": "Minimum compatibility score to create an edge in the graph",
61
+ "default": 60
62
+ },
63
+ "exclude_categories": {
64
+ "type": "array",
65
+ "items": {"type": "string"},
66
+ "description": "Tool categories to exclude from analysis (e.g., ['tool_finder', 'special_tools'])",
67
+ "default": ["tool_finder", "special_tools"]
68
+ },
69
+ "max_tools_per_category": {
70
+ "type": "integer",
71
+ "description": "Maximum number of tools to analyze per category (for performance)",
72
+ "default": 50
73
+ },
74
+ "force_rebuild": {
75
+ "type": "boolean",
76
+ "description": "Whether to force rebuild even if cached graph exists",
77
+ "default": false
78
+ }
79
+ },
80
+ "required": []
81
+ },
82
+ "auto_load_dependencies": true,
83
+ "fail_on_missing_tools": false,
84
+ "required_tools": ["ToolCompatibilityAnalyzer"],
85
+ "composition_file": "tool_graph_composer.py",
86
+ "composition_function": "compose"
87
+ }
88
+ ]
@@ -0,0 +1,34 @@
1
+ {
2
+ "toolfinderkeyword_defaults": {
3
+ "exclude_tools": [
4
+ "Tool_RAG",
5
+ "Tool_Finder",
6
+ "Finish",
7
+ "CallAgent",
8
+ "ToolFinderLLM",
9
+ "ToolFinderKeyword"
10
+ ],
11
+ "include_categories": null,
12
+ "exclude_categories": null,
13
+ "parameter": {
14
+ "type": "object",
15
+ "properties": {
16
+ "query": {
17
+ "type": "string",
18
+ "description": "Search query describing the desired functionality"
19
+ },
20
+ "categories": {
21
+ "type": "array",
22
+ "items": {"type": "string"},
23
+ "description": "Optional list of tool categories to filter by"
24
+ },
25
+ "limit": {
26
+ "type": "integer",
27
+ "description": "Maximum number of tools to return (default: 10)",
28
+ "default": 10
29
+ }
30
+ },
31
+ "required": ["query"]
32
+ }
33
+ }
34
+ }
@@ -0,0 +1,9 @@
1
+ [
2
+ {
3
+ "name": "mcp_auto_loader_txagent",
4
+ "description": "Automatically discover and load all tools from TxAgent MCP Server. Can register discovered tools as individual ToolUniverse tools or provide tool configurations.",
5
+ "type": "MCPAutoLoaderTool",
6
+ "server_url": "http://${TXAGENT_MCP_SERVER_HOST}:7000/mcp",
7
+ "required_api_keys": ["TXAGENT_MCP_SERVER_HOST"]
8
+ }
9
+ ]
@@ -0,0 +1,211 @@
1
+ [
2
+ {
3
+ "name": "UniProt_get_entry_by_accession",
4
+ "description": "Get the complete JSON entry for a specified UniProtKB accession.",
5
+ "parameter": {
6
+ "type": "object",
7
+ "properties": {
8
+ "accession": {
9
+ "type": "string",
10
+ "description": "UniProtKB entry accession, e.g., P05067."
11
+ }
12
+ },
13
+ "required": ["accession"]
14
+ },
15
+ "fields": {
16
+ "endpoint": "https://rest.uniprot.org/uniprotkb/{accession}.json",
17
+ "input_description": "Input UniProtKB accession, e.g., P05067.",
18
+ "output_description": "Returns the complete UniProtKB entry JSON for that accession."
19
+ },
20
+ "type": "UniProtRESTTool"
21
+ },
22
+ {
23
+ "name": "UniProt_get_function_by_accession",
24
+ "description": "Extract functional annotations from UniProtKB entry (Comment type = FUNCTION).",
25
+ "parameter": {
26
+ "type": "object",
27
+ "properties": {
28
+ "accession": {
29
+ "type": "string",
30
+ "description": "UniProtKB accession, e.g., P05067."
31
+ }
32
+ },
33
+ "required": ["accession"]
34
+ },
35
+ "fields": {
36
+ "endpoint": "https://rest.uniprot.org/uniprotkb/{accession}.json",
37
+ "extract_path": "comments[?(@.commentType=='FUNCTION')].texts[*].value",
38
+ "input_description": "Input UniProtKB accession, e.g., P05067.",
39
+ "output_description": "Returns a list of all functional paragraph texts from that entry."
40
+ },
41
+ "type": "UniProtRESTTool"
42
+ },
43
+ {
44
+ "name": "UniProt_get_recommended_name_by_accession",
45
+ "description": "Extract the recommended protein name (recommendedName) from UniProtKB entry.",
46
+ "parameter": {
47
+ "type": "object",
48
+ "properties": {
49
+ "accession": {
50
+ "type": "string",
51
+ "description": "UniProtKB accession, e.g., P05067."
52
+ }
53
+ },
54
+ "required": ["accession"]
55
+ },
56
+ "fields": {
57
+ "endpoint": "https://rest.uniprot.org/uniprotkb/{accession}.json",
58
+ "extract_path": "proteinDescription.recommendedName.fullName.value",
59
+ "input_description": "Input UniProtKB accession, e.g., P05067.",
60
+ "output_description": "Returns the recommended protein full name string."
61
+ },
62
+ "type": "UniProtRESTTool"
63
+ },
64
+ {
65
+ "name": "UniProt_get_alternative_names_by_accession",
66
+ "description": "Extract all alternative names (alternativeNames) from UniProtKB entry.",
67
+ "parameter": {
68
+ "type": "object",
69
+ "properties": {
70
+ "accession": {
71
+ "type": "string",
72
+ "description": "UniProtKB accession, e.g., P05067."
73
+ }
74
+ },
75
+ "required": ["accession"]
76
+ },
77
+ "fields": {
78
+ "endpoint": "https://rest.uniprot.org/uniprotkb/{accession}.json",
79
+ "extract_path": "proteinDescription.alternativeNames[*].fullName.value",
80
+ "input_description": "Input UniProtKB accession, e.g., P05067.",
81
+ "output_description": "Returns a list containing all alternative name strings."
82
+ },
83
+ "type": "UniProtRESTTool"
84
+ },
85
+ {
86
+ "name": "UniProt_get_organism_by_accession",
87
+ "description": "Extract the organism scientific name from UniProtKB entry.",
88
+ "parameter": {
89
+ "type": "object",
90
+ "properties": {
91
+ "accession": {
92
+ "type": "string",
93
+ "description": "UniProtKB accession, e.g., P05067."
94
+ }
95
+ },
96
+ "required": ["accession"]
97
+ },
98
+ "fields": {
99
+ "endpoint": "https://rest.uniprot.org/uniprotkb/{accession}.json",
100
+ "extract_path": "organism.scientificName",
101
+ "input_description": "Input UniProtKB accession, e.g., P05067.",
102
+ "output_description": "Returns the organism scientific name string, e.g., \"Homo sapiens\"."
103
+ },
104
+ "type": "UniProtRESTTool"
105
+ },
106
+ {
107
+ "name": "UniProt_get_subcellular_location_by_accession",
108
+ "description": "Extract subcellular localization annotations from UniProtKB entry (Comment type = SUBCELLULAR LOCATION).",
109
+ "parameter": {
110
+ "type": "object",
111
+ "properties": {
112
+ "accession": {
113
+ "type": "string",
114
+ "description": "UniProtKB accession, e.g., P05067."
115
+ }
116
+ },
117
+ "required": ["accession"]
118
+ },
119
+ "fields": {
120
+ "endpoint": "https://rest.uniprot.org/uniprotkb/{accession}.json",
121
+ "extract_path": "comments[?(@.commentType=='SUBCELLULAR LOCATION')].subcellularLocations[*].location.value",
122
+ "input_description": "Input UniProtKB accession, e.g., P05067.",
123
+ "output_description": "Returns a list containing all annotated subcellular localization locations."
124
+ },
125
+ "type": "UniProtRESTTool"
126
+ },
127
+ {
128
+ "name": "UniProt_get_disease_variants_by_accession",
129
+ "description": "Extract all variants (feature type = VARIANT) and their related annotations from UniProtKB entry.",
130
+ "parameter": {
131
+ "type": "object",
132
+ "properties": {
133
+ "accession": {
134
+ "type": "string",
135
+ "description": "UniProtKB accession, e.g., P05067."
136
+ }
137
+ },
138
+ "required": ["accession"]
139
+ },
140
+ "fields": {
141
+ "endpoint": "https://rest.uniprot.org/uniprotkb/{accession}.json",
142
+ "extract_path": "features[?(@.type=='VARIANT')]",
143
+ "input_description": "Input UniProtKB accession, e.g., P05067.",
144
+ "output_description": "Returns a list of all variant feature objects, including position, original residue, variant residue, and disease annotations."
145
+ },
146
+ "type": "UniProtRESTTool"
147
+ },
148
+ {
149
+ "name": "UniProt_get_ptm_processing_by_accession",
150
+ "description": "Extract all PTM and processing sites from UniProtKB entry (feature type = MODIFIED RESIDUE or SIGNAL, etc.).",
151
+ "parameter": {
152
+ "type": "object",
153
+ "properties": {
154
+ "accession": {
155
+ "type": "string",
156
+ "description": "UniProtKB accession, e.g., P05067."
157
+ }
158
+ },
159
+ "required": ["accession"]
160
+ },
161
+ "fields": {
162
+ "endpoint": "https://rest.uniprot.org/uniprotkb/{accession}.json",
163
+ "extract_path": "features[?(@.type=='MODIFIED RESIDUE' || @.type=='SIGNAL')]",
164
+ "input_description": "Input UniProtKB accession, e.g., P05067.",
165
+ "output_description": "Returns a list containing all modification sites and signal peptide feature objects."
166
+ },
167
+ "type": "UniProtRESTTool"
168
+ },
169
+ {
170
+ "name": "UniProt_get_sequence_by_accession",
171
+ "description": "Extract the canonical sequence from UniProtKB entry.",
172
+ "parameter": {
173
+ "type": "object",
174
+ "properties": {
175
+ "accession": {
176
+ "type": "string",
177
+ "description": "UniProtKB accession, e.g., P05067."
178
+ }
179
+ },
180
+ "required": ["accession"]
181
+ },
182
+ "fields": {
183
+ "endpoint": "https://rest.uniprot.org/uniprotkb/{accession}.json",
184
+ "extract_path": "sequence.value",
185
+ "input_description": "Input UniProtKB accession, e.g., P05067.",
186
+ "output_description": "Returns the canonical sequence string."
187
+ },
188
+ "type": "UniProtRESTTool"
189
+ },
190
+ {
191
+ "name": "UniProt_get_isoform_ids_by_accession",
192
+ "description": "Extract all splice isoform IDs from UniProtKB entry (isoformNames).",
193
+ "parameter": {
194
+ "type": "object",
195
+ "properties": {
196
+ "accession": {
197
+ "type": "string",
198
+ "description": "UniProtKB accession, e.g., P05067."
199
+ }
200
+ },
201
+ "required": ["accession"]
202
+ },
203
+ "fields": {
204
+ "endpoint": "https://rest.uniprot.org/uniprotkb/{accession}.json",
205
+ "extract_path": "comments[?(@.commentType=='ALTERNATIVE PRODUCTS')].isoforms[*].isoformIds[*]",
206
+ "input_description": "Input UniProtKB accession, e.g., P05067.",
207
+ "output_description": "Returns a list containing all isoform ID strings."
208
+ },
209
+ "type": "UniProtRESTTool"
210
+ }
211
+ ]
@@ -0,0 +1,94 @@
1
+ [
2
+ {
3
+ "type": "URLHTMLTagTool",
4
+ "name": "get_webpage_title",
5
+ "description": "Fetch a webpage and return the content of its <title> tag.",
6
+ "fields": {
7
+ "tag": "title",
8
+ "return_key": "title"
9
+ },
10
+ "parameter": {
11
+ "type": "object",
12
+ "required": ["url"],
13
+ "additionalProperties": false,
14
+ "properties": {
15
+ "url": {
16
+ "type": "string",
17
+ "description": "HTTP or HTTPS URL to fetch (e.g. https://www.example.com)",
18
+ "format": "uri",
19
+ "minLength": 10
20
+ },
21
+ "timeout": {
22
+ "type": "integer",
23
+ "description": "Request timeout in seconds",
24
+ "minimum": 1,
25
+ "maximum": 300,
26
+ "default": 20
27
+ }
28
+ }
29
+ },
30
+ "return_schema": {
31
+ "oneOf": [
32
+ {
33
+ "type": "object",
34
+ "description": "Successful title extraction",
35
+ "properties": {
36
+ "title": { "type": "string", "description": "Extracted and cleaned <title> text" }
37
+ }
38
+ },
39
+ {
40
+ "type": "object",
41
+ "description": "Error response",
42
+ "properties": {
43
+ "error": { "type": "string", "description": "Error message" },
44
+ "detail": { "type": "string", "description": "Extra context (optional)" }
45
+ }
46
+ }
47
+ ]
48
+ }
49
+ },
50
+ {
51
+ "type": "URLToPDFTextTool",
52
+ "name": "get_webpage_text_from_url",
53
+ "description": "Render a URL as PDF and extract its text (JavaScript supported).",
54
+ "fields": {
55
+ "return_key": "text"
56
+ },
57
+ "parameter": {
58
+ "type": "object",
59
+ "required": ["url"],
60
+ "properties": {
61
+ "url": {
62
+ "type": "string",
63
+ "description": "Webpage URL to fetch and render",
64
+ "format": "uri"
65
+ },
66
+ "timeout": {
67
+ "type": "integer",
68
+ "description": "Request timeout in seconds",
69
+ "minimum": 5,
70
+ "maximum": 120,
71
+ "default": 30
72
+ }
73
+ }
74
+ },
75
+ "return_schema": {
76
+ "oneOf": [
77
+ {
78
+ "type": "object",
79
+ "description": "Successful text extraction",
80
+ "properties": {
81
+ "text": { "type": "string", "description": "Extracted text from rendered webpage PDF" }
82
+ }
83
+ },
84
+ {
85
+ "type": "object",
86
+ "description": "Error response",
87
+ "properties": {
88
+ "error": { "type": "string" }
89
+ }
90
+ }
91
+ ]
92
+ }
93
+ }
94
+ ]
@@ -0,0 +1,9 @@
1
+ [
2
+ {
3
+ "name": "mcp_auto_loader_uspto_downloader",
4
+ "description": "Download USPTO patent documents (abstract, claims, and full application text) using MCP protocol",
5
+ "type": "MCPAutoLoaderTool",
6
+ "server_url": "http://${USPTO_MCP_SERVER_HOST}:8081/mcp",
7
+ "required_api_keys": ["USPTO_MCP_SERVER_HOST"]
8
+ }
9
+ ]