@biomate/mcp-server 0.1.0 → 0.1.1
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.
- package/README.md +12 -6
- package/dist/auth.d.ts +8 -0
- package/dist/auth.js +54 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +16 -4
- package/dist/tools_manifest.json +197 -948
- package/package.json +16 -4
package/dist/tools_manifest.json
CHANGED
|
@@ -1,58 +1,26 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": "2.0.0",
|
|
3
|
-
"generated_from": "mcp/tools_manifest.py",
|
|
4
|
-
"server": {
|
|
5
|
-
"name": "BioMate",
|
|
6
|
-
"vendor": "BioMate AI",
|
|
7
|
-
"documentation_url": "https://biomate.ai/connectors",
|
|
8
|
-
"privacy_policy_url": "https://biomate.ai/legal/privacy",
|
|
9
|
-
"terms_of_service_url": "https://biomate.ai/legal/terms",
|
|
10
|
-
"support_email": "support@biomate.ai",
|
|
11
|
-
"support_url": "https://biomate.ai/support"
|
|
12
|
-
},
|
|
3
|
+
"generated_from": "backend/lib/mcp/tools_manifest.py",
|
|
13
4
|
"mcp": [
|
|
14
5
|
{
|
|
15
6
|
"name": "biomate_session",
|
|
16
|
-
"
|
|
17
|
-
"description": "**Primary entry point \u2014 use this for 90% of requests.** Run a complete BioMate scientific session from a natural-language goal. BioMate selects the right workflow from 2,455 indexed pipelines, pre-fills parameters from your goal text, executes on BioMate cloud, handles QC gates with auto-loop remediation, and produces structured findings. While running, the tool streams real-time progress (phase started, step completed, QC gate, auto-loop remediation, finding) back to the host. Returns a final run summary, a deep link to the live results panel, and the report URL. \n\n**How to write the `goal` parameter** \u2014 plain English, one to three sentences:\n\u2022 Include the *what*: analysis type + subject (e.g. 'ADMET screening', 'RNA-seq DE', 'variant calling')\n\u2022 Include *data location*: inline SMILES/sequences, S3 paths, accession numbers, or upload first with upload_file\n\u2022 Include key *parameters* that matter: organism, library type, comparisons, thresholds\n\u2022 You can omit anything BioMate can infer (it will ask if genuinely ambiguous)\n\n**Good examples:**\n 'Screen aspirin (CC(=O)Oc1ccccc1C(=O)O) and caffeine (Cn1cnc2c1c(=O)n(c(=O)n2C)C) for hERG inhibition, CYP3A4, and oral bioavailability'\n 'RNA-seq differential expression on s3://lab-bucket/exp42/fastqs/ \u2014 human GRCh38, dUTP strand-specific, treated (n=3) vs control (n=3), FDR 0.05'\n 'Whole-genome variant calling on the uploaded FASTQ pair, GRCh38, GATK HaplotypeCaller, germline mode'\n 'Run homogeneous 3D refinement in CryoSPARC on s3://cryo/job042/, C2 symmetry, box size 256'\n 'Fetch GSE183947 from GEO and run the same RNA-seq pipeline'\n\nUse run_workflow instead when the user wants to call a specific workflow by ID with explicit parameter control.",
|
|
7
|
+
"description": "Ask BioMate to plan an analysis or answer a scientific workflow question. Returns the final response, suggested workflow, branch plans and clarification requests. Review the plan before separately running a workflow. Does not automatically execute or stream progress.",
|
|
18
8
|
"inputSchema": {
|
|
19
9
|
"type": "object",
|
|
20
10
|
"properties": {
|
|
21
11
|
"goal": {
|
|
22
12
|
"type": "string",
|
|
23
|
-
"description": "Natural
|
|
24
|
-
},
|
|
25
|
-
"inputs": {
|
|
26
|
-
"type": "object",
|
|
27
|
-
"description": "Optional structured inputs passed alongside `goal`. BioMate's inner AI sees these as a JSON block appended to the goal text and merges them with any parameters it extracts from the goal string. Use this to pass: S3 keys from upload_file, sequences, SMILES lists, accession numbers, or explicit parameter overrides. Examples:\n After upload_file: {\"fastq_file\": \"users/42/uploads/uuid-sample.fastq.gz\"} (use the s3_key value returned by upload_file)\n SMILES list: {\"smiles_list\": [\"CC(=O)Oc1ccccc1C(=O)O\"], \"organism\": \"human\"}\n Parameter override: {\"genome\": \"GRCh38\", \"aligner\": \"STAR\", \"fdr\": 0.05}",
|
|
28
|
-
"additionalProperties": true
|
|
29
|
-
},
|
|
30
|
-
"experiment_id": {
|
|
31
|
-
"type": "string",
|
|
32
|
-
"description": "Optional experiment to attach this run to (from recall_memory)."
|
|
33
|
-
},
|
|
34
|
-
"stream": {
|
|
35
|
-
"type": "boolean",
|
|
36
|
-
"description": "Emit progress notifications during execution. Default true. Set false for hosts without MCP notification support \u2014 then poll with get_run.",
|
|
37
|
-
"default": true
|
|
13
|
+
"description": "Natural language description of what to do. Examples: 'screen these 12 SMILES for hERG and CYP3A4 liability', 'run nf-core/rnaseq on FASTQ files in s3://bucket/exp42/, human, paired-end', 'predict the structure of P04637 and the top 5 destabilizing mutations'."
|
|
38
14
|
}
|
|
39
15
|
},
|
|
40
16
|
"required": [
|
|
41
17
|
"goal"
|
|
42
18
|
]
|
|
43
|
-
},
|
|
44
|
-
"annotations": {
|
|
45
|
-
"title": "Run BioMate Session",
|
|
46
|
-
"readOnlyHint": false,
|
|
47
|
-
"destructiveHint": false,
|
|
48
|
-
"idempotentHint": false,
|
|
49
|
-
"openWorldHint": true
|
|
50
19
|
}
|
|
51
20
|
},
|
|
52
21
|
{
|
|
53
22
|
"name": "search_workflow",
|
|
54
|
-
"
|
|
55
|
-
"description": "Search the BioMate workflow catalog (2,455 indexed workflows across 34 domains) by natural language. Returns ranked workflow cards with id, name, domain, one-line description, and estimated BioMate cloud cost. Use this when the user wants to pick a workflow explicitly; otherwise prefer biomate_session.",
|
|
23
|
+
"description": "Search the BioMate workflow catalog (4,200+ indexed workflows across 36 domains) by natural language. Returns ranked workflow cards with id, name, domain, and a one-line description. Use this when the user wants to pick a workflow explicitly; otherwise prefer biomate_session.",
|
|
56
24
|
"inputSchema": {
|
|
57
25
|
"type": "object",
|
|
58
26
|
"properties": {
|
|
@@ -64,28 +32,16 @@
|
|
|
64
32
|
"type": "integer",
|
|
65
33
|
"description": "Max results (default 5, max 20).",
|
|
66
34
|
"default": 5
|
|
67
|
-
},
|
|
68
|
-
"domain": {
|
|
69
|
-
"type": "string",
|
|
70
|
-
"description": "Optional domain filter: transcriptomics, genomics, proteomics, drug_discovery, cryo_em, etc."
|
|
71
35
|
}
|
|
72
36
|
},
|
|
73
37
|
"required": [
|
|
74
38
|
"query"
|
|
75
39
|
]
|
|
76
|
-
},
|
|
77
|
-
"annotations": {
|
|
78
|
-
"title": "Search Workflows",
|
|
79
|
-
"readOnlyHint": true,
|
|
80
|
-
"destructiveHint": false,
|
|
81
|
-
"idempotentHint": false,
|
|
82
|
-
"openWorldHint": true
|
|
83
40
|
}
|
|
84
41
|
},
|
|
85
42
|
{
|
|
86
43
|
"name": "get_workflow_spec",
|
|
87
|
-
"
|
|
88
|
-
"description": "Return the full specification for a workflow: required + optional parameters (with types and allowed values), default QC profile and thresholds, expected input files, estimated cost and runtime, and any license requirements. Call this before run_workflow when the user wants explicit parameter control.",
|
|
44
|
+
"description": "Return the full specification for a workflow: required + optional parameters (with types and allowed values), default QC profile and thresholds, expected input files, and any license requirements. Call this before run_workflow when the user wants explicit parameter control.",
|
|
89
45
|
"inputSchema": {
|
|
90
46
|
"type": "object",
|
|
91
47
|
"properties": {
|
|
@@ -97,19 +53,11 @@
|
|
|
97
53
|
"required": [
|
|
98
54
|
"workflow_id"
|
|
99
55
|
]
|
|
100
|
-
},
|
|
101
|
-
"annotations": {
|
|
102
|
-
"title": "Get Workflow Spec",
|
|
103
|
-
"readOnlyHint": true,
|
|
104
|
-
"destructiveHint": false,
|
|
105
|
-
"idempotentHint": false,
|
|
106
|
-
"openWorldHint": false
|
|
107
56
|
}
|
|
108
57
|
},
|
|
109
58
|
{
|
|
110
59
|
"name": "run_workflow",
|
|
111
|
-
"
|
|
112
|
-
"description": "Execute a specific BioMate workflow on BioMate cloud with explicit parameters. Returns a run_id immediately. If stream=true, also emits progress notifications until the run terminates (same events as biomate_session). Use biomate_session instead when the user gave you a natural-language goal.",
|
|
60
|
+
"description": "Launch a specified workflow with parameters. Returns the run identifier; poll get_run for status and results.",
|
|
113
61
|
"inputSchema": {
|
|
114
62
|
"type": "object",
|
|
115
63
|
"properties": {
|
|
@@ -121,57 +69,16 @@
|
|
|
121
69
|
"type": "object",
|
|
122
70
|
"description": "Parameter dict. Required params come from get_workflow_spec.",
|
|
123
71
|
"additionalProperties": true
|
|
124
|
-
},
|
|
125
|
-
"experiment_id": {
|
|
126
|
-
"type": "string",
|
|
127
|
-
"description": "Optional experiment to attach to."
|
|
128
|
-
},
|
|
129
|
-
"stream": {
|
|
130
|
-
"type": "boolean",
|
|
131
|
-
"description": "Emit progress notifications while running. Default false.",
|
|
132
|
-
"default": false
|
|
133
72
|
}
|
|
134
73
|
},
|
|
135
74
|
"required": [
|
|
136
75
|
"workflow_id"
|
|
137
76
|
]
|
|
138
|
-
},
|
|
139
|
-
"annotations": {
|
|
140
|
-
"title": "Run Workflow",
|
|
141
|
-
"readOnlyHint": false,
|
|
142
|
-
"destructiveHint": false,
|
|
143
|
-
"idempotentHint": false,
|
|
144
|
-
"openWorldHint": true
|
|
145
|
-
}
|
|
146
|
-
},
|
|
147
|
-
{
|
|
148
|
-
"name": "watch_run",
|
|
149
|
-
"title": "",
|
|
150
|
-
"description": "Stream real-time progress for a running BioMate workflow and return full results when done. Emits MCP notifications/progress for every phase start/complete, step update, and QC gate. When the run finishes, automatically fetches output files (with download URLs) and AI findings. Use after run_workflow (non-streaming) to watch a submitted run. Does not require re-submitting \u2014 takes an existing run_id.",
|
|
151
|
-
"inputSchema": {
|
|
152
|
-
"type": "object",
|
|
153
|
-
"properties": {
|
|
154
|
-
"run_id": {
|
|
155
|
-
"type": "string",
|
|
156
|
-
"description": "Run ID returned by run_workflow."
|
|
157
|
-
}
|
|
158
|
-
},
|
|
159
|
-
"required": [
|
|
160
|
-
"run_id"
|
|
161
|
-
]
|
|
162
|
-
},
|
|
163
|
-
"annotations": {
|
|
164
|
-
"title": "",
|
|
165
|
-
"readOnlyHint": false,
|
|
166
|
-
"destructiveHint": false,
|
|
167
|
-
"idempotentHint": false,
|
|
168
|
-
"openWorldHint": false
|
|
169
77
|
}
|
|
170
78
|
},
|
|
171
79
|
{
|
|
172
80
|
"name": "get_run",
|
|
173
|
-
"
|
|
174
|
-
"description": "Return everything about a run in one call: status (pending|running|completed|failed), per-phase and per-step progress with timestamps, output files with download URLs, structured findings, QC gate results, and any auto-loop remediations applied. Replaces get_run_status + get_run_results + step-level findings polling.",
|
|
81
|
+
"description": "Read the current run status, identifiers, output files and optional prepared findings. Poll again while the run or findings are still being prepared.",
|
|
175
82
|
"inputSchema": {
|
|
176
83
|
"type": "object",
|
|
177
84
|
"properties": {
|
|
@@ -188,19 +95,11 @@
|
|
|
188
95
|
"required": [
|
|
189
96
|
"run_id"
|
|
190
97
|
]
|
|
191
|
-
},
|
|
192
|
-
"annotations": {
|
|
193
|
-
"title": "Get Run Details",
|
|
194
|
-
"readOnlyHint": true,
|
|
195
|
-
"destructiveHint": false,
|
|
196
|
-
"idempotentHint": false,
|
|
197
|
-
"openWorldHint": false
|
|
198
98
|
}
|
|
199
99
|
},
|
|
200
100
|
{
|
|
201
101
|
"name": "cancel_run",
|
|
202
|
-
"
|
|
203
|
-
"description": "Cancel a running or queued BioMate workflow on BioMate cloud.",
|
|
102
|
+
"description": "Cancel a running or queued BioMate workflow on AWS Batch.",
|
|
204
103
|
"inputSchema": {
|
|
205
104
|
"type": "object",
|
|
206
105
|
"properties": {
|
|
@@ -212,19 +111,11 @@
|
|
|
212
111
|
"required": [
|
|
213
112
|
"run_id"
|
|
214
113
|
]
|
|
215
|
-
},
|
|
216
|
-
"annotations": {
|
|
217
|
-
"title": "Cancel Run",
|
|
218
|
-
"readOnlyHint": false,
|
|
219
|
-
"destructiveHint": true,
|
|
220
|
-
"idempotentHint": true,
|
|
221
|
-
"openWorldHint": false
|
|
222
114
|
}
|
|
223
115
|
},
|
|
224
116
|
{
|
|
225
117
|
"name": "list_runs",
|
|
226
|
-
"
|
|
227
|
-
"description": "List the user's recent runs with status and timestamps. Filter by status or experiment.",
|
|
118
|
+
"description": "List recent runs for the signed-in user, optionally filtering status and limiting the number returned.",
|
|
228
119
|
"inputSchema": {
|
|
229
120
|
"type": "object",
|
|
230
121
|
"properties": {
|
|
@@ -243,58 +134,49 @@
|
|
|
243
134
|
"pending"
|
|
244
135
|
],
|
|
245
136
|
"default": "all"
|
|
246
|
-
},
|
|
247
|
-
"experiment_id": {
|
|
248
|
-
"type": "string",
|
|
249
|
-
"description": "Optional experiment filter."
|
|
250
137
|
}
|
|
251
138
|
}
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
"
|
|
139
|
+
}
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
"name": "watch_run",
|
|
143
|
+
"description": "Read a snapshot of run status, outputs and available findings. Poll for updates; this tool does not stream progress notifications.",
|
|
144
|
+
"inputSchema": {
|
|
145
|
+
"type": "object",
|
|
146
|
+
"properties": {
|
|
147
|
+
"run_id": {
|
|
148
|
+
"type": "string",
|
|
149
|
+
"description": "Run ID returned by run_workflow."
|
|
150
|
+
}
|
|
151
|
+
},
|
|
152
|
+
"required": [
|
|
153
|
+
"run_id"
|
|
154
|
+
]
|
|
259
155
|
}
|
|
260
156
|
},
|
|
261
157
|
{
|
|
262
158
|
"name": "preview_file",
|
|
263
|
-
"title": "Preview Output File",
|
|
264
159
|
"description": "Render a server-side preview of an output file (FASTA, VCF, CSV/TSV, image, PDF). Returns markdown + optional thumbnail PNG. Use this to show the user what an output looks like without downloading multi-GB files. For input QC of files the user is about to upload, prefer biomate_session (it runs a real QC workflow).",
|
|
265
160
|
"inputSchema": {
|
|
266
161
|
"type": "object",
|
|
267
162
|
"properties": {
|
|
268
163
|
"s3_key": {
|
|
269
164
|
"type": "string",
|
|
270
|
-
"description": "
|
|
165
|
+
"description": "S3 key (s3://bucket/path) from get_run output_files."
|
|
271
166
|
},
|
|
272
167
|
"run_id": {
|
|
273
168
|
"type": "string",
|
|
274
169
|
"description": "Optional run_id for context-aware parsing."
|
|
275
|
-
},
|
|
276
|
-
"max_rows": {
|
|
277
|
-
"type": "integer",
|
|
278
|
-
"description": "For tabular files (default 100).",
|
|
279
|
-
"default": 100
|
|
280
170
|
}
|
|
281
171
|
},
|
|
282
172
|
"required": [
|
|
283
173
|
"s3_key"
|
|
284
174
|
]
|
|
285
|
-
},
|
|
286
|
-
"annotations": {
|
|
287
|
-
"title": "Preview Output File",
|
|
288
|
-
"readOnlyHint": true,
|
|
289
|
-
"destructiveHint": false,
|
|
290
|
-
"idempotentHint": false,
|
|
291
|
-
"openWorldHint": false
|
|
292
175
|
}
|
|
293
176
|
},
|
|
294
177
|
{
|
|
295
178
|
"name": "export_report",
|
|
296
|
-
"
|
|
297
|
-
"description": "Render a publication-ready report for a completed run as PDF or markdown. Includes the methods section, QC audit trail, structured findings, and figures. This is what users need for IND submissions, CRO compliance packages, and publication supplementary materials.",
|
|
179
|
+
"description": "Export the findings report as Markdown. Returns pending while findings are prepared; poll again until ready. PDF, DOCX and other sections are not supported.",
|
|
298
180
|
"inputSchema": {
|
|
299
181
|
"type": "object",
|
|
300
182
|
"properties": {
|
|
@@ -305,42 +187,27 @@
|
|
|
305
187
|
"format": {
|
|
306
188
|
"type": "string",
|
|
307
189
|
"enum": [
|
|
308
|
-
"
|
|
309
|
-
"markdown",
|
|
310
|
-
"docx"
|
|
190
|
+
"markdown"
|
|
311
191
|
],
|
|
312
|
-
"default": "
|
|
192
|
+
"default": "markdown"
|
|
313
193
|
},
|
|
314
194
|
"sections": {
|
|
315
195
|
"type": "array",
|
|
316
196
|
"items": {
|
|
317
197
|
"type": "string",
|
|
318
198
|
"enum": [
|
|
319
|
-
"
|
|
320
|
-
"qc",
|
|
321
|
-
"findings",
|
|
322
|
-
"figures",
|
|
323
|
-
"appendix"
|
|
199
|
+
"findings"
|
|
324
200
|
]
|
|
325
|
-
}
|
|
326
|
-
"description": "Which sections to include (default: all)."
|
|
201
|
+
}
|
|
327
202
|
}
|
|
328
203
|
},
|
|
329
204
|
"required": [
|
|
330
205
|
"run_id"
|
|
331
206
|
]
|
|
332
|
-
},
|
|
333
|
-
"annotations": {
|
|
334
|
-
"title": "Export Report",
|
|
335
|
-
"readOnlyHint": false,
|
|
336
|
-
"destructiveHint": false,
|
|
337
|
-
"idempotentHint": true,
|
|
338
|
-
"openWorldHint": false
|
|
339
207
|
}
|
|
340
208
|
},
|
|
341
209
|
{
|
|
342
210
|
"name": "analyze_results",
|
|
343
|
-
"title": "Analyze Results",
|
|
344
211
|
"description": "Ask BioMate's AI to interpret a completed run. Returns natural-language analysis: key findings, quality assessment, scientific interpretation, recommended next steps. Use after get_run when the user asks 'what does this mean?'.",
|
|
345
212
|
"inputSchema": {
|
|
346
213
|
"type": "object",
|
|
@@ -357,18 +224,10 @@
|
|
|
357
224
|
"required": [
|
|
358
225
|
"run_id"
|
|
359
226
|
]
|
|
360
|
-
},
|
|
361
|
-
"annotations": {
|
|
362
|
-
"title": "Analyze Results",
|
|
363
|
-
"readOnlyHint": true,
|
|
364
|
-
"destructiveHint": false,
|
|
365
|
-
"idempotentHint": false,
|
|
366
|
-
"openWorldHint": true
|
|
367
227
|
}
|
|
368
228
|
},
|
|
369
229
|
{
|
|
370
230
|
"name": "explain_error",
|
|
371
|
-
"title": "Explain Run Error",
|
|
372
231
|
"description": "Diagnose a failed run. Returns the likely root cause (genome mismatch, missing input, OOM, container pull failure, etc.) and the specific fix. Often the next step is run_workflow with corrected params.",
|
|
373
232
|
"inputSchema": {
|
|
374
233
|
"type": "object",
|
|
@@ -385,90 +244,53 @@
|
|
|
385
244
|
"required": [
|
|
386
245
|
"run_id"
|
|
387
246
|
]
|
|
388
|
-
},
|
|
389
|
-
"annotations": {
|
|
390
|
-
"title": "Explain Run Error",
|
|
391
|
-
"readOnlyHint": true,
|
|
392
|
-
"destructiveHint": false,
|
|
393
|
-
"idempotentHint": false,
|
|
394
|
-
"openWorldHint": true
|
|
395
247
|
}
|
|
396
248
|
},
|
|
397
249
|
{
|
|
398
250
|
"name": "query_database",
|
|
399
|
-
"
|
|
400
|
-
"description": "Query a biological/chemical database by accession or name. Use database='federated' to fan out across all sources simultaneously and merge results. Single-source options: uniprot, pdb, pdbe, alphafold, ncbi_gene, dbsnp, clinvar, gnomad, kegg, reactome, chebi, chembl, pubchem, bindingdb, pharos, hpo, string, pubmed.",
|
|
251
|
+
"description": "Query a biological/chemical database by accession or name. Supported: uniprot, pdb, alphafold, ncbi_gene, dbsnp, clinvar, gnomad, kegg, reactome, chebi, pubchem, hpo, omim, string.",
|
|
401
252
|
"inputSchema": {
|
|
402
253
|
"type": "object",
|
|
403
254
|
"properties": {
|
|
404
255
|
"database": {
|
|
405
256
|
"type": "string",
|
|
406
|
-
"description": "Database to query.
|
|
257
|
+
"description": "Database to query. Kept in lock-step with ai_assistant.query_database handlers; every id has a real _query_* method.",
|
|
407
258
|
"enum": [
|
|
408
|
-
"federated",
|
|
409
259
|
"uniprot",
|
|
410
260
|
"pdb",
|
|
411
261
|
"pdbe",
|
|
412
262
|
"alphafold",
|
|
263
|
+
"interpro",
|
|
264
|
+
"string",
|
|
413
265
|
"ncbi_gene",
|
|
266
|
+
"ensembl",
|
|
414
267
|
"dbsnp",
|
|
415
268
|
"clinvar",
|
|
416
269
|
"gnomad",
|
|
417
270
|
"kegg",
|
|
418
271
|
"reactome",
|
|
272
|
+
"go",
|
|
273
|
+
"hpo",
|
|
419
274
|
"chebi",
|
|
420
275
|
"chembl",
|
|
421
276
|
"pubchem",
|
|
422
277
|
"bindingdb",
|
|
423
|
-
"pharos"
|
|
424
|
-
|
|
425
|
-
"string",
|
|
426
|
-
"pubmed"
|
|
427
|
-
],
|
|
428
|
-
"default": "federated"
|
|
278
|
+
"pharos"
|
|
279
|
+
]
|
|
429
280
|
},
|
|
430
281
|
"query": {
|
|
431
282
|
"type": "string",
|
|
432
|
-
"description": "Accession, gene symbol, compound name
|
|
433
|
-
},
|
|
434
|
-
"operation": {
|
|
435
|
-
"type": "string",
|
|
436
|
-
"description": "Search mode chosen from user intent: 'lookup' (by ID/name, default), 'similarity' (chembl/pubchem=chemical similarity over SMILES; pdb=sequence homologs over the whole PDB), or 'text' (keyword search).",
|
|
437
|
-
"enum": [
|
|
438
|
-
"lookup",
|
|
439
|
-
"similarity",
|
|
440
|
-
"text"
|
|
441
|
-
],
|
|
442
|
-
"default": "lookup"
|
|
443
|
-
},
|
|
444
|
-
"entity_type": {
|
|
445
|
-
"type": "string",
|
|
446
|
-
"description": "Hint for federated routing: gene, protein, variant, compound, pathway, disease, or omit to auto-detect.",
|
|
447
|
-
"enum": [
|
|
448
|
-
"gene",
|
|
449
|
-
"protein",
|
|
450
|
-
"variant",
|
|
451
|
-
"compound",
|
|
452
|
-
"pathway",
|
|
453
|
-
"disease"
|
|
454
|
-
]
|
|
283
|
+
"description": "Accession, gene symbol, or compound name."
|
|
455
284
|
}
|
|
456
285
|
},
|
|
457
286
|
"required": [
|
|
287
|
+
"database",
|
|
458
288
|
"query"
|
|
459
289
|
]
|
|
460
|
-
},
|
|
461
|
-
"annotations": {
|
|
462
|
-
"title": "Query Biological Database",
|
|
463
|
-
"readOnlyHint": true,
|
|
464
|
-
"destructiveHint": false,
|
|
465
|
-
"idempotentHint": false,
|
|
466
|
-
"openWorldHint": true
|
|
467
290
|
}
|
|
468
291
|
},
|
|
469
292
|
{
|
|
470
293
|
"name": "resolve_accession",
|
|
471
|
-
"title": "Resolve Accession",
|
|
472
294
|
"description": "Identify a public archive accession (GEO, SRA, ENA, DDBJ) and return the best BioMate workflow to fetch it plus pre-filled params ready for run_workflow. Examples: GSE183947 \u2192 Geo Data Connector; SRR12345 \u2192 nf-core/fetchngs. Call this before run_workflow whenever the user provides an accession instead of a file.",
|
|
473
295
|
"inputSchema": {
|
|
474
296
|
"type": "object",
|
|
@@ -481,18 +303,10 @@
|
|
|
481
303
|
"required": [
|
|
482
304
|
"accession"
|
|
483
305
|
]
|
|
484
|
-
},
|
|
485
|
-
"annotations": {
|
|
486
|
-
"title": "Resolve Accession",
|
|
487
|
-
"readOnlyHint": true,
|
|
488
|
-
"destructiveHint": false,
|
|
489
|
-
"idempotentHint": false,
|
|
490
|
-
"openWorldHint": true
|
|
491
306
|
}
|
|
492
307
|
},
|
|
493
308
|
{
|
|
494
309
|
"name": "browse_data",
|
|
495
|
-
"title": "Browse Data Repository",
|
|
496
310
|
"description": "Browse a biological data repository or S3 workspace by listing files and directories at a given path. Public sources (EBI, NCBI, Ensembl, UCSC) require a path. S3 sources (biomate_workspace, user_s3) accept an optional prefix. Use before fetch_public_data to navigate to the exact file you need.",
|
|
497
311
|
"inputSchema": {
|
|
498
312
|
"type": "object",
|
|
@@ -512,24 +326,16 @@
|
|
|
512
326
|
},
|
|
513
327
|
"path": {
|
|
514
328
|
"type": "string",
|
|
515
|
-
"description": "Directory path or S3 prefix to list
|
|
329
|
+
"description": "Directory path or S3 prefix to list."
|
|
516
330
|
}
|
|
517
331
|
},
|
|
518
332
|
"required": [
|
|
519
333
|
"source_id"
|
|
520
334
|
]
|
|
521
|
-
},
|
|
522
|
-
"annotations": {
|
|
523
|
-
"title": "Browse Data Repository",
|
|
524
|
-
"readOnlyHint": true,
|
|
525
|
-
"destructiveHint": false,
|
|
526
|
-
"idempotentHint": false,
|
|
527
|
-
"openWorldHint": true
|
|
528
335
|
}
|
|
529
336
|
},
|
|
530
337
|
{
|
|
531
338
|
"name": "fetch_public_data",
|
|
532
|
-
"title": "Fetch Public Data",
|
|
533
339
|
"description": "Download a file from a public biological repository (EBI, NCBI, Ensembl, UCSC) into BioMate's S3 workspace and return a presigned URL and S3 URI. Use the S3 URI as a workflow input parameter. Call browse_data first to find the exact path.",
|
|
534
340
|
"inputSchema": {
|
|
535
341
|
"type": "object",
|
|
@@ -547,7 +353,7 @@
|
|
|
547
353
|
},
|
|
548
354
|
"remote_path": {
|
|
549
355
|
"type": "string",
|
|
550
|
-
"description": "Path on the FTP server
|
|
356
|
+
"description": "Path on the FTP server."
|
|
551
357
|
},
|
|
552
358
|
"url": {
|
|
553
359
|
"type": "string",
|
|
@@ -557,56 +363,10 @@
|
|
|
557
363
|
"required": [
|
|
558
364
|
"source_id"
|
|
559
365
|
]
|
|
560
|
-
},
|
|
561
|
-
"annotations": {
|
|
562
|
-
"title": "Fetch Public Data",
|
|
563
|
-
"readOnlyHint": false,
|
|
564
|
-
"destructiveHint": false,
|
|
565
|
-
"idempotentHint": true,
|
|
566
|
-
"openWorldHint": true
|
|
567
|
-
}
|
|
568
|
-
},
|
|
569
|
-
{
|
|
570
|
-
"name": "recall_memory",
|
|
571
|
-
"title": "Recall Memory",
|
|
572
|
-
"description": "Retrieve relevant prior context for the current goal: past runs on similar inputs, validated procedures, findings tagged by the user, learned parameter preferences. Call before biomate_session for repeat users \u2014 it dramatically improves param auto-fill and avoids re-running work.",
|
|
573
|
-
"inputSchema": {
|
|
574
|
-
"type": "object",
|
|
575
|
-
"properties": {
|
|
576
|
-
"query": {
|
|
577
|
-
"type": "string",
|
|
578
|
-
"description": "What to recall \u2014 usually the user's goal."
|
|
579
|
-
},
|
|
580
|
-
"scope": {
|
|
581
|
-
"type": "string",
|
|
582
|
-
"enum": [
|
|
583
|
-
"runs",
|
|
584
|
-
"findings",
|
|
585
|
-
"procedures",
|
|
586
|
-
"all"
|
|
587
|
-
],
|
|
588
|
-
"default": "all"
|
|
589
|
-
},
|
|
590
|
-
"limit": {
|
|
591
|
-
"type": "integer",
|
|
592
|
-
"default": 5
|
|
593
|
-
}
|
|
594
|
-
},
|
|
595
|
-
"required": [
|
|
596
|
-
"query"
|
|
597
|
-
]
|
|
598
|
-
},
|
|
599
|
-
"annotations": {
|
|
600
|
-
"title": "Recall Memory",
|
|
601
|
-
"readOnlyHint": true,
|
|
602
|
-
"destructiveHint": false,
|
|
603
|
-
"idempotentHint": false,
|
|
604
|
-
"openWorldHint": false
|
|
605
366
|
}
|
|
606
367
|
},
|
|
607
368
|
{
|
|
608
369
|
"name": "search_literature",
|
|
609
|
-
"title": "Search Literature",
|
|
610
370
|
"description": "Search published scientific literature across PubMed, EuropePMC, Semantic Scholar, and OpenAlex. Uses an iterative depth-loop: starts broad, then drills into related topics until min_results are found or max_depth is reached. Returns ranked papers with title, authors, year, DOI, abstract snippet, and citation count. Best for: finding prior art, understanding a disease mechanism, locating validation datasets, or reviewing methods before running a workflow.",
|
|
611
371
|
"inputSchema": {
|
|
612
372
|
"type": "object",
|
|
@@ -629,198 +389,72 @@
|
|
|
629
389
|
"required": [
|
|
630
390
|
"query"
|
|
631
391
|
]
|
|
632
|
-
},
|
|
633
|
-
"annotations": {
|
|
634
|
-
"title": "Search Literature",
|
|
635
|
-
"readOnlyHint": true,
|
|
636
|
-
"destructiveHint": false,
|
|
637
|
-
"idempotentHint": false,
|
|
638
|
-
"openWorldHint": true
|
|
639
392
|
}
|
|
640
393
|
},
|
|
641
394
|
{
|
|
642
|
-
"name": "
|
|
643
|
-
"
|
|
644
|
-
"description": "Get a one-shot signed S3 PUT URL so the host can upload a local file directly to BioMate's data plane without proxying bytes through the chat transport. For files >5MB this is mandatory; for small text payloads, inline strings are fine.\n\n**Returns** `{upload_url, s3_key}` \u2014 two fields:\n- `upload_url`: a presigned HTTPS URL. You MUST upload the file bytes to it with an HTTP PUT before calling any other tool: `curl -X PUT -T <local_path> \"<upload_url>\"`\n- `s3_key`: a bare S3 object key (e.g. `users/42/uploads/uuid-sample.fastq.gz`). Pass this value directly into the `inputs` dict of `biomate_session` or as a `params` value in `run_workflow` \u2014 BioMate resolves the bucket internally. Example: `inputs={\"fastq_file\": s3_key}` or `params={\"input\": s3_key}`.\n\n**Full upload workflow:**\n1. `upload_file(filename='sample.fastq.gz', size_bytes=52000000)` \u2192 get `upload_url` + `s3_key`\n2. `curl -X PUT -T sample.fastq.gz \"<upload_url>\"` (or equivalent HTTP PUT \u2014 no auth header needed)\n3. `biomate_session(goal='Run RNA-seq DE on the uploaded FASTQs, human GRCh38', inputs={\"fastq_file\": s3_key})`",
|
|
395
|
+
"name": "recall_memory",
|
|
396
|
+
"description": "Retrieve relevant prior context for the current goal: past runs on similar inputs, validated procedures, findings tagged by the user, learned parameter preferences. Call before biomate_session for repeat users \u2014 it dramatically improves param auto-fill and avoids re-running work.",
|
|
645
397
|
"inputSchema": {
|
|
646
398
|
"type": "object",
|
|
647
399
|
"properties": {
|
|
648
|
-
"
|
|
400
|
+
"query": {
|
|
649
401
|
"type": "string",
|
|
650
|
-
"description": "
|
|
402
|
+
"description": "What to recall \u2014 usually the user's goal."
|
|
651
403
|
},
|
|
652
|
-
"
|
|
404
|
+
"limit": {
|
|
653
405
|
"type": "integer",
|
|
654
|
-
"
|
|
655
|
-
},
|
|
656
|
-
"content_type": {
|
|
657
|
-
"type": "string",
|
|
658
|
-
"description": "MIME type (auto-detected from filename if omitted)."
|
|
659
|
-
}
|
|
660
|
-
},
|
|
661
|
-
"required": [
|
|
662
|
-
"filename"
|
|
663
|
-
]
|
|
664
|
-
},
|
|
665
|
-
"annotations": {
|
|
666
|
-
"title": "Upload File",
|
|
667
|
-
"readOnlyHint": false,
|
|
668
|
-
"destructiveHint": false,
|
|
669
|
-
"idempotentHint": false,
|
|
670
|
-
"openWorldHint": false
|
|
671
|
-
}
|
|
672
|
-
},
|
|
673
|
-
{
|
|
674
|
-
"name": "list_instruments",
|
|
675
|
-
"title": "List Lab Instruments",
|
|
676
|
-
"description": "Discover lab instruments reachable on the local network (currently OpenTrons OT-2/Flex liquid-handling robots). Returns each robot's IP, name, model, and health. Runs locally \u2014 only works when the MCP server is on the same network as the instruments. Set the OPENTRONS_ROBOT_IPS env var or pass `ips` to skip network scanning.",
|
|
677
|
-
"inputSchema": {
|
|
678
|
-
"type": "object",
|
|
679
|
-
"properties": {
|
|
680
|
-
"ips": {
|
|
681
|
-
"type": "array",
|
|
682
|
-
"items": {
|
|
683
|
-
"type": "string"
|
|
684
|
-
},
|
|
685
|
-
"description": "Explicit robot IPs to probe (e.g. ['192.168.1.42']). Omit to use OPENTRONS_ROBOT_IPS."
|
|
686
|
-
}
|
|
687
|
-
}
|
|
688
|
-
},
|
|
689
|
-
"annotations": {
|
|
690
|
-
"title": "List Lab Instruments",
|
|
691
|
-
"readOnlyHint": true,
|
|
692
|
-
"destructiveHint": false,
|
|
693
|
-
"idempotentHint": false,
|
|
694
|
-
"openWorldHint": true
|
|
695
|
-
}
|
|
696
|
-
},
|
|
697
|
-
{
|
|
698
|
-
"name": "get_instrument_status",
|
|
699
|
-
"title": "Get Instrument Status",
|
|
700
|
-
"description": "Get the status of a run on a lab instrument (OpenTrons). Returns status ('idle'|'running'|'paused'|'succeeded'|'failed'|'stopped'), timestamps, and any errors. Poll this after run_instrument_protocol.",
|
|
701
|
-
"inputSchema": {
|
|
702
|
-
"type": "object",
|
|
703
|
-
"properties": {
|
|
704
|
-
"robot_ip": {
|
|
705
|
-
"type": "string",
|
|
706
|
-
"description": "IP of the robot running the protocol."
|
|
707
|
-
},
|
|
708
|
-
"run_id": {
|
|
709
|
-
"type": "string",
|
|
710
|
-
"description": "Run ID returned by run_instrument_protocol."
|
|
406
|
+
"default": 5
|
|
711
407
|
}
|
|
712
408
|
},
|
|
713
409
|
"required": [
|
|
714
|
-
"
|
|
715
|
-
"run_id"
|
|
410
|
+
"query"
|
|
716
411
|
]
|
|
717
|
-
},
|
|
718
|
-
"annotations": {
|
|
719
|
-
"title": "Get Instrument Status",
|
|
720
|
-
"readOnlyHint": true,
|
|
721
|
-
"destructiveHint": false,
|
|
722
|
-
"idempotentHint": false,
|
|
723
|
-
"openWorldHint": true
|
|
724
412
|
}
|
|
725
413
|
},
|
|
726
414
|
{
|
|
727
|
-
"name": "
|
|
728
|
-
"
|
|
729
|
-
"description": "Execute a liquid-handling protocol on an OpenTrons robot. **Physical action \u2014 actuates real hardware.** Two-step guardrail: called with `confirm=false` (the DEFAULT) it performs a DRY RUN \u2014 compiles and returns the exact protocol that WOULD run, WITHOUT contacting or actuating the robot. Review it, then call again with `confirm=true` to verify reachability, upload, and physically start the run. Provide either raw `protocol_code` (a valid OT-2/Flex Python protocol) or a structured `transfers` spec (source/dest labware + pipette + well transfers), which is compiled into a protocol for you. Returns {protocol_id, run_id, status}; poll get_instrument_status to follow the run.",
|
|
415
|
+
"name": "upload_file",
|
|
416
|
+
"description": "Get a one-shot signed S3 PUT URL so the host can upload a local file directly to BioMate's data plane without proxying bytes through the chat transport. Returns the s3_key to use in subsequent tool calls. For files >5MB this is mandatory; for small text payloads, inline strings are fine.",
|
|
730
417
|
"inputSchema": {
|
|
731
418
|
"type": "object",
|
|
732
419
|
"properties": {
|
|
733
|
-
"
|
|
734
|
-
"type": "string",
|
|
735
|
-
"description": "Target robot IP (from list_instruments)."
|
|
736
|
-
},
|
|
737
|
-
"confirm": {
|
|
738
|
-
"type": "boolean",
|
|
739
|
-
"default": false,
|
|
740
|
-
"description": "MUST be true to physically run. false (default) = dry-run preview only, no actuation."
|
|
741
|
-
},
|
|
742
|
-
"protocol_code": {
|
|
743
|
-
"type": "string",
|
|
744
|
-
"description": "Full OT-2/Flex Python protocol source. Omit if using `transfers`."
|
|
745
|
-
},
|
|
746
|
-
"protocol_name": {
|
|
747
|
-
"type": "string",
|
|
748
|
-
"default": "biomate_protocol.py",
|
|
749
|
-
"description": "Filename on the robot (must end in .py)."
|
|
750
|
-
},
|
|
751
|
-
"transfers": {
|
|
752
|
-
"type": "array",
|
|
753
|
-
"description": "Structured well-to-well transfers; compiled to a protocol when protocol_code is omitted.",
|
|
754
|
-
"items": {
|
|
755
|
-
"type": "object",
|
|
756
|
-
"properties": {
|
|
757
|
-
"from_well": {
|
|
758
|
-
"type": "string"
|
|
759
|
-
},
|
|
760
|
-
"to_well": {
|
|
761
|
-
"type": "string"
|
|
762
|
-
},
|
|
763
|
-
"volume_ul": {
|
|
764
|
-
"type": "number"
|
|
765
|
-
}
|
|
766
|
-
},
|
|
767
|
-
"required": [
|
|
768
|
-
"from_well",
|
|
769
|
-
"to_well",
|
|
770
|
-
"volume_ul"
|
|
771
|
-
]
|
|
772
|
-
}
|
|
773
|
-
},
|
|
774
|
-
"source_labware": {
|
|
775
|
-
"type": "string",
|
|
776
|
-
"description": "OT-2 labware for the source plate (required with `transfers`)."
|
|
777
|
-
},
|
|
778
|
-
"dest_labware": {
|
|
420
|
+
"filename": {
|
|
779
421
|
"type": "string",
|
|
780
|
-
"description": "
|
|
422
|
+
"description": "Original filename (sets content-type and extension)."
|
|
781
423
|
},
|
|
782
|
-
"
|
|
424
|
+
"content_type": {
|
|
783
425
|
"type": "string",
|
|
784
|
-
"
|
|
785
|
-
"description": "Pipette model (used with `transfers`)."
|
|
426
|
+
"description": "MIME type (auto-detected from filename if omitted)."
|
|
786
427
|
}
|
|
787
428
|
},
|
|
788
429
|
"required": [
|
|
789
|
-
"
|
|
430
|
+
"filename"
|
|
790
431
|
]
|
|
791
|
-
},
|
|
792
|
-
"annotations": {
|
|
793
|
-
"title": "Run Instrument Protocol",
|
|
794
|
-
"readOnlyHint": false,
|
|
795
|
-
"destructiveHint": true,
|
|
796
|
-
"idempotentHint": false,
|
|
797
|
-
"openWorldHint": true
|
|
798
432
|
}
|
|
799
433
|
}
|
|
800
434
|
],
|
|
801
435
|
"anthropic": [
|
|
802
436
|
{
|
|
803
437
|
"name": "biomate_session",
|
|
804
|
-
"description": "
|
|
438
|
+
"description": "Run a complete BioMate scientific session from a natural-language goal. BioMate picks the workflow, fills parameters from context, runs on AWS Batch, handles QC gates with auto-loop remediation, and produces findings. While running, the tool streams progress events (phase started, step completed, QC gate fired, auto-loop remediation, finding) to the host so the user sees real-time updates the same way BioMate's web panel does. Returns the final run summary, a deep link to the live panel, and the report URL.",
|
|
805
439
|
"input_schema": {
|
|
806
440
|
"type": "object",
|
|
807
441
|
"properties": {
|
|
808
442
|
"goal": {
|
|
809
443
|
"type": "string",
|
|
810
|
-
"description": "Natural
|
|
444
|
+
"description": "Natural language description of what to do. Examples: 'screen these 12 SMILES for hERG and CYP3A4 liability', 'run nf-core/rnaseq on FASTQ files in s3://bucket/exp42/, human, paired-end', 'predict the structure of P04637 and the top 5 destabilizing mutations'."
|
|
811
445
|
},
|
|
812
446
|
"inputs": {
|
|
813
447
|
"type": "object",
|
|
814
|
-
"description": "Optional structured inputs
|
|
448
|
+
"description": "Optional structured inputs (S3 keys, sequences, SMILES, parameter overrides). BioMate will merge these with whatever it extracts from `goal`.",
|
|
815
449
|
"additionalProperties": true
|
|
816
450
|
},
|
|
817
451
|
"experiment_id": {
|
|
818
452
|
"type": "string",
|
|
819
|
-
"description": "Optional experiment to attach this run to (from recall_memory)."
|
|
453
|
+
"description": "Optional experiment to attach this run to (from recall_memory or create_experiment)."
|
|
820
454
|
},
|
|
821
455
|
"stream": {
|
|
822
456
|
"type": "boolean",
|
|
823
|
-
"description": "Emit progress notifications during execution. Default true. Set false for hosts without
|
|
457
|
+
"description": "Emit progress notifications during execution. Default true. Set false for hosts without notification support (then poll get_run).",
|
|
824
458
|
"default": true
|
|
825
459
|
}
|
|
826
460
|
},
|
|
@@ -831,7 +465,7 @@
|
|
|
831
465
|
},
|
|
832
466
|
{
|
|
833
467
|
"name": "search_workflow",
|
|
834
|
-
"description": "Search the BioMate workflow catalog (
|
|
468
|
+
"description": "Search the BioMate workflow catalog (4,200+ indexed workflows across 36 domains) by natural language. Returns ranked workflow cards with id, name, domain, and a one-line description. Use this when the user wants to pick a workflow explicitly; otherwise prefer biomate_session.",
|
|
835
469
|
"input_schema": {
|
|
836
470
|
"type": "object",
|
|
837
471
|
"properties": {
|
|
@@ -856,7 +490,7 @@
|
|
|
856
490
|
},
|
|
857
491
|
{
|
|
858
492
|
"name": "get_workflow_spec",
|
|
859
|
-
"description": "Return the full specification for a workflow: required + optional parameters (with types and allowed values), default QC profile and thresholds, expected input files,
|
|
493
|
+
"description": "Return the full specification for a workflow: required + optional parameters (with types and allowed values), default QC profile and thresholds, expected input files, and any license requirements. Call this before run_workflow when the user wants explicit parameter control.",
|
|
860
494
|
"input_schema": {
|
|
861
495
|
"type": "object",
|
|
862
496
|
"properties": {
|
|
@@ -872,7 +506,7 @@
|
|
|
872
506
|
},
|
|
873
507
|
{
|
|
874
508
|
"name": "run_workflow",
|
|
875
|
-
"description": "Execute a specific BioMate workflow on
|
|
509
|
+
"description": "Execute a specific BioMate workflow on AWS Batch with explicit parameters. Returns a run_id immediately. If stream=true, also emits progress notifications until the run terminates (same events as biomate_session). Use biomate_session instead when the user gave you a natural-language goal.",
|
|
876
510
|
"input_schema": {
|
|
877
511
|
"type": "object",
|
|
878
512
|
"properties": {
|
|
@@ -900,22 +534,6 @@
|
|
|
900
534
|
]
|
|
901
535
|
}
|
|
902
536
|
},
|
|
903
|
-
{
|
|
904
|
-
"name": "watch_run",
|
|
905
|
-
"description": "Stream real-time progress for a running BioMate workflow and return full results when done. Emits MCP notifications/progress for every phase start/complete, step update, and QC gate. When the run finishes, automatically fetches output files (with download URLs) and AI findings. Use after run_workflow (non-streaming) to watch a submitted run. Does not require re-submitting \u2014 takes an existing run_id.",
|
|
906
|
-
"input_schema": {
|
|
907
|
-
"type": "object",
|
|
908
|
-
"properties": {
|
|
909
|
-
"run_id": {
|
|
910
|
-
"type": "string",
|
|
911
|
-
"description": "Run ID returned by run_workflow."
|
|
912
|
-
}
|
|
913
|
-
},
|
|
914
|
-
"required": [
|
|
915
|
-
"run_id"
|
|
916
|
-
]
|
|
917
|
-
}
|
|
918
|
-
},
|
|
919
537
|
{
|
|
920
538
|
"name": "get_run",
|
|
921
539
|
"description": "Return everything about a run in one call: status (pending|running|completed|failed), per-phase and per-step progress with timestamps, output files with download URLs, structured findings, QC gate results, and any auto-loop remediations applied. Replaces get_run_status + get_run_results + step-level findings polling.",
|
|
@@ -939,7 +557,7 @@
|
|
|
939
557
|
},
|
|
940
558
|
{
|
|
941
559
|
"name": "cancel_run",
|
|
942
|
-
"description": "Cancel a running or queued BioMate workflow on
|
|
560
|
+
"description": "Cancel a running or queued BioMate workflow on AWS Batch.",
|
|
943
561
|
"input_schema": {
|
|
944
562
|
"type": "object",
|
|
945
563
|
"properties": {
|
|
@@ -982,6 +600,22 @@
|
|
|
982
600
|
}
|
|
983
601
|
}
|
|
984
602
|
},
|
|
603
|
+
{
|
|
604
|
+
"name": "watch_run",
|
|
605
|
+
"description": "Stream real-time progress for a running BioMate workflow and return full results when done. Emits MCP notifications/progress for every phase start/complete, step update, and QC gate. When the run finishes, automatically fetches output files (with download URLs) and AI findings. Use after run_workflow (non-streaming) to watch a submitted run. Does not require re-submitting \u2014 takes an existing run_id.",
|
|
606
|
+
"input_schema": {
|
|
607
|
+
"type": "object",
|
|
608
|
+
"properties": {
|
|
609
|
+
"run_id": {
|
|
610
|
+
"type": "string",
|
|
611
|
+
"description": "Run ID returned by run_workflow."
|
|
612
|
+
}
|
|
613
|
+
},
|
|
614
|
+
"required": [
|
|
615
|
+
"run_id"
|
|
616
|
+
]
|
|
617
|
+
}
|
|
618
|
+
},
|
|
985
619
|
{
|
|
986
620
|
"name": "preview_file",
|
|
987
621
|
"description": "Render a server-side preview of an output file (FASTA, VCF, CSV/TSV, image, PDF). Returns markdown + optional thumbnail PNG. Use this to show the user what an output looks like without downloading multi-GB files. For input QC of files the user is about to upload, prefer biomate_session (it runs a real QC workflow).",
|
|
@@ -990,7 +624,7 @@
|
|
|
990
624
|
"properties": {
|
|
991
625
|
"s3_key": {
|
|
992
626
|
"type": "string",
|
|
993
|
-
"description": "
|
|
627
|
+
"description": "S3 key (s3://bucket/path) from get_run output_files."
|
|
994
628
|
},
|
|
995
629
|
"run_id": {
|
|
996
630
|
"type": "string",
|
|
@@ -1088,64 +722,43 @@
|
|
|
1088
722
|
},
|
|
1089
723
|
{
|
|
1090
724
|
"name": "query_database",
|
|
1091
|
-
"description": "Query a biological/chemical database by accession or name.
|
|
725
|
+
"description": "Query a biological/chemical database by accession or name. Supported: uniprot, pdb, alphafold, ncbi_gene, dbsnp, clinvar, gnomad, kegg, reactome, chebi, pubchem, hpo, omim, string.",
|
|
1092
726
|
"input_schema": {
|
|
1093
727
|
"type": "object",
|
|
1094
728
|
"properties": {
|
|
1095
729
|
"database": {
|
|
1096
730
|
"type": "string",
|
|
1097
|
-
"description": "Database to query.
|
|
731
|
+
"description": "Database to query. Kept in lock-step with ai_assistant.query_database handlers; every id has a real _query_* method.",
|
|
1098
732
|
"enum": [
|
|
1099
|
-
"federated",
|
|
1100
733
|
"uniprot",
|
|
1101
734
|
"pdb",
|
|
1102
735
|
"pdbe",
|
|
1103
736
|
"alphafold",
|
|
737
|
+
"interpro",
|
|
738
|
+
"string",
|
|
1104
739
|
"ncbi_gene",
|
|
740
|
+
"ensembl",
|
|
1105
741
|
"dbsnp",
|
|
1106
742
|
"clinvar",
|
|
1107
743
|
"gnomad",
|
|
1108
744
|
"kegg",
|
|
1109
745
|
"reactome",
|
|
746
|
+
"go",
|
|
747
|
+
"hpo",
|
|
1110
748
|
"chebi",
|
|
1111
749
|
"chembl",
|
|
1112
750
|
"pubchem",
|
|
1113
751
|
"bindingdb",
|
|
1114
|
-
"pharos"
|
|
1115
|
-
|
|
1116
|
-
"string",
|
|
1117
|
-
"pubmed"
|
|
1118
|
-
],
|
|
1119
|
-
"default": "federated"
|
|
752
|
+
"pharos"
|
|
753
|
+
]
|
|
1120
754
|
},
|
|
1121
755
|
"query": {
|
|
1122
756
|
"type": "string",
|
|
1123
|
-
"description": "Accession, gene symbol, compound name
|
|
1124
|
-
},
|
|
1125
|
-
"operation": {
|
|
1126
|
-
"type": "string",
|
|
1127
|
-
"description": "Search mode chosen from user intent: 'lookup' (by ID/name, default), 'similarity' (chembl/pubchem=chemical similarity over SMILES; pdb=sequence homologs over the whole PDB), or 'text' (keyword search).",
|
|
1128
|
-
"enum": [
|
|
1129
|
-
"lookup",
|
|
1130
|
-
"similarity",
|
|
1131
|
-
"text"
|
|
1132
|
-
],
|
|
1133
|
-
"default": "lookup"
|
|
1134
|
-
},
|
|
1135
|
-
"entity_type": {
|
|
1136
|
-
"type": "string",
|
|
1137
|
-
"description": "Hint for federated routing: gene, protein, variant, compound, pathway, disease, or omit to auto-detect.",
|
|
1138
|
-
"enum": [
|
|
1139
|
-
"gene",
|
|
1140
|
-
"protein",
|
|
1141
|
-
"variant",
|
|
1142
|
-
"compound",
|
|
1143
|
-
"pathway",
|
|
1144
|
-
"disease"
|
|
1145
|
-
]
|
|
757
|
+
"description": "Accession, gene symbol, or compound name."
|
|
1146
758
|
}
|
|
1147
759
|
},
|
|
1148
760
|
"required": [
|
|
761
|
+
"database",
|
|
1149
762
|
"query"
|
|
1150
763
|
]
|
|
1151
764
|
}
|
|
@@ -1187,7 +800,7 @@
|
|
|
1187
800
|
},
|
|
1188
801
|
"path": {
|
|
1189
802
|
"type": "string",
|
|
1190
|
-
"description": "Directory path or S3 prefix to list
|
|
803
|
+
"description": "Directory path or S3 prefix to list."
|
|
1191
804
|
}
|
|
1192
805
|
},
|
|
1193
806
|
"required": [
|
|
@@ -1214,7 +827,7 @@
|
|
|
1214
827
|
},
|
|
1215
828
|
"remote_path": {
|
|
1216
829
|
"type": "string",
|
|
1217
|
-
"description": "Path on the FTP server
|
|
830
|
+
"description": "Path on the FTP server."
|
|
1218
831
|
},
|
|
1219
832
|
"url": {
|
|
1220
833
|
"type": "string",
|
|
@@ -1227,28 +840,24 @@
|
|
|
1227
840
|
}
|
|
1228
841
|
},
|
|
1229
842
|
{
|
|
1230
|
-
"name": "
|
|
1231
|
-
"description": "
|
|
843
|
+
"name": "search_literature",
|
|
844
|
+
"description": "Search published scientific literature across PubMed, EuropePMC, Semantic Scholar, and OpenAlex. Uses an iterative depth-loop: starts broad, then drills into related topics until min_results are found or max_depth is reached. Returns ranked papers with title, authors, year, DOI, abstract snippet, and citation count. Best for: finding prior art, understanding a disease mechanism, locating validation datasets, or reviewing methods before running a workflow.",
|
|
1232
845
|
"input_schema": {
|
|
1233
846
|
"type": "object",
|
|
1234
847
|
"properties": {
|
|
1235
848
|
"query": {
|
|
1236
849
|
"type": "string",
|
|
1237
|
-
"description": "
|
|
850
|
+
"description": "Natural-language search query. Be specific: include organism, assay type, or drug name. E.g. 'DESeq2 bulk RNA-seq breast cancer ER+ 2020-2024'."
|
|
1238
851
|
},
|
|
1239
|
-
"
|
|
1240
|
-
"type": "
|
|
1241
|
-
"
|
|
1242
|
-
|
|
1243
|
-
"findings",
|
|
1244
|
-
"procedures",
|
|
1245
|
-
"all"
|
|
1246
|
-
],
|
|
1247
|
-
"default": "all"
|
|
852
|
+
"max_depth": {
|
|
853
|
+
"type": "integer",
|
|
854
|
+
"default": 2,
|
|
855
|
+
"description": "How many iterative refinement rounds to run (1\u20134). Higher = more thorough, slower."
|
|
1248
856
|
},
|
|
1249
|
-
"
|
|
857
|
+
"min_results": {
|
|
1250
858
|
"type": "integer",
|
|
1251
|
-
"default":
|
|
859
|
+
"default": 10,
|
|
860
|
+
"description": "Stop when at least this many papers are found."
|
|
1252
861
|
}
|
|
1253
862
|
},
|
|
1254
863
|
"required": [
|
|
@@ -1257,24 +866,28 @@
|
|
|
1257
866
|
}
|
|
1258
867
|
},
|
|
1259
868
|
{
|
|
1260
|
-
"name": "
|
|
1261
|
-
"description": "
|
|
869
|
+
"name": "recall_memory",
|
|
870
|
+
"description": "Retrieve relevant prior context for the current goal: past runs on similar inputs, validated procedures, findings tagged by the user, learned parameter preferences. Call before biomate_session for repeat users \u2014 it dramatically improves param auto-fill and avoids re-running work.",
|
|
1262
871
|
"input_schema": {
|
|
1263
872
|
"type": "object",
|
|
1264
873
|
"properties": {
|
|
1265
874
|
"query": {
|
|
1266
875
|
"type": "string",
|
|
1267
|
-
"description": "
|
|
876
|
+
"description": "What to recall \u2014 usually the user's goal."
|
|
1268
877
|
},
|
|
1269
|
-
"
|
|
1270
|
-
"type": "
|
|
1271
|
-
"
|
|
1272
|
-
|
|
878
|
+
"scope": {
|
|
879
|
+
"type": "string",
|
|
880
|
+
"enum": [
|
|
881
|
+
"runs",
|
|
882
|
+
"findings",
|
|
883
|
+
"procedures",
|
|
884
|
+
"all"
|
|
885
|
+
],
|
|
886
|
+
"default": "all"
|
|
1273
887
|
},
|
|
1274
|
-
"
|
|
888
|
+
"limit": {
|
|
1275
889
|
"type": "integer",
|
|
1276
|
-
"default":
|
|
1277
|
-
"description": "Stop when at least this many papers are found."
|
|
890
|
+
"default": 5
|
|
1278
891
|
}
|
|
1279
892
|
},
|
|
1280
893
|
"required": [
|
|
@@ -1284,7 +897,7 @@
|
|
|
1284
897
|
},
|
|
1285
898
|
{
|
|
1286
899
|
"name": "upload_file",
|
|
1287
|
-
"description": "Get a one-shot signed S3 PUT URL so the host can upload a local file directly to BioMate's data plane without proxying bytes through the chat transport. For files >5MB this is mandatory; for small text payloads, inline strings are fine
|
|
900
|
+
"description": "Get a one-shot signed S3 PUT URL so the host can upload a local file directly to BioMate's data plane without proxying bytes through the chat transport. Returns the s3_key to use in subsequent tool calls. For files >5MB this is mandatory; for small text payloads, inline strings are fine.",
|
|
1288
901
|
"input_schema": {
|
|
1289
902
|
"type": "object",
|
|
1290
903
|
"properties": {
|
|
@@ -1312,26 +925,26 @@
|
|
|
1312
925
|
"type": "function",
|
|
1313
926
|
"function": {
|
|
1314
927
|
"name": "biomate_session",
|
|
1315
|
-
"description": "
|
|
928
|
+
"description": "Run a complete BioMate scientific session from a natural-language goal. BioMate picks the workflow, fills parameters from context, runs on AWS Batch, handles QC gates with auto-loop remediation, and produces findings. While running, the tool streams progress events (phase started, step completed, QC gate fired, auto-loop remediation, finding) to the host so the user sees real-time updates the same way BioMate's web panel does. Returns the final run summary, a deep link to the live panel, and the report URL.",
|
|
1316
929
|
"parameters": {
|
|
1317
930
|
"type": "object",
|
|
1318
931
|
"properties": {
|
|
1319
932
|
"goal": {
|
|
1320
933
|
"type": "string",
|
|
1321
|
-
"description": "Natural
|
|
934
|
+
"description": "Natural language description of what to do. Examples: 'screen these 12 SMILES for hERG and CYP3A4 liability', 'run nf-core/rnaseq on FASTQ files in s3://bucket/exp42/, human, paired-end', 'predict the structure of P04637 and the top 5 destabilizing mutations'."
|
|
1322
935
|
},
|
|
1323
936
|
"inputs": {
|
|
1324
937
|
"type": "object",
|
|
1325
|
-
"description": "Optional structured inputs
|
|
938
|
+
"description": "Optional structured inputs (S3 keys, sequences, SMILES, parameter overrides). BioMate will merge these with whatever it extracts from `goal`.",
|
|
1326
939
|
"additionalProperties": true
|
|
1327
940
|
},
|
|
1328
941
|
"experiment_id": {
|
|
1329
942
|
"type": "string",
|
|
1330
|
-
"description": "Optional experiment to attach this run to (from recall_memory)."
|
|
943
|
+
"description": "Optional experiment to attach this run to (from recall_memory or create_experiment)."
|
|
1331
944
|
},
|
|
1332
945
|
"stream": {
|
|
1333
946
|
"type": "boolean",
|
|
1334
|
-
"description": "Emit progress notifications during execution. Default true. Set false for hosts without
|
|
947
|
+
"description": "Emit progress notifications during execution. Default true. Set false for hosts without notification support (then poll get_run).",
|
|
1335
948
|
"default": true
|
|
1336
949
|
}
|
|
1337
950
|
},
|
|
@@ -1345,7 +958,7 @@
|
|
|
1345
958
|
"type": "function",
|
|
1346
959
|
"function": {
|
|
1347
960
|
"name": "search_workflow",
|
|
1348
|
-
"description": "Search the BioMate workflow catalog (
|
|
961
|
+
"description": "Search the BioMate workflow catalog (4,200+ indexed workflows across 36 domains) by natural language. Returns ranked workflow cards with id, name, domain, and a one-line description. Use this when the user wants to pick a workflow explicitly; otherwise prefer biomate_session.",
|
|
1349
962
|
"parameters": {
|
|
1350
963
|
"type": "object",
|
|
1351
964
|
"properties": {
|
|
@@ -1373,7 +986,7 @@
|
|
|
1373
986
|
"type": "function",
|
|
1374
987
|
"function": {
|
|
1375
988
|
"name": "get_workflow_spec",
|
|
1376
|
-
"description": "Return the full specification for a workflow: required + optional parameters (with types and allowed values), default QC profile and thresholds, expected input files,
|
|
989
|
+
"description": "Return the full specification for a workflow: required + optional parameters (with types and allowed values), default QC profile and thresholds, expected input files, and any license requirements. Call this before run_workflow when the user wants explicit parameter control.",
|
|
1377
990
|
"parameters": {
|
|
1378
991
|
"type": "object",
|
|
1379
992
|
"properties": {
|
|
@@ -1392,7 +1005,7 @@
|
|
|
1392
1005
|
"type": "function",
|
|
1393
1006
|
"function": {
|
|
1394
1007
|
"name": "run_workflow",
|
|
1395
|
-
"description": "Execute a specific BioMate workflow on
|
|
1008
|
+
"description": "Execute a specific BioMate workflow on AWS Batch with explicit parameters. Returns a run_id immediately. If stream=true, also emits progress notifications until the run terminates (same events as biomate_session). Use biomate_session instead when the user gave you a natural-language goal.",
|
|
1396
1009
|
"parameters": {
|
|
1397
1010
|
"type": "object",
|
|
1398
1011
|
"properties": {
|
|
@@ -1421,25 +1034,6 @@
|
|
|
1421
1034
|
}
|
|
1422
1035
|
}
|
|
1423
1036
|
},
|
|
1424
|
-
{
|
|
1425
|
-
"type": "function",
|
|
1426
|
-
"function": {
|
|
1427
|
-
"name": "watch_run",
|
|
1428
|
-
"description": "Stream real-time progress for a running BioMate workflow and return full results when done. Emits MCP notifications/progress for every phase start/complete, step update, and QC gate. When the run finishes, automatically fetches output files (with download URLs) and AI findings. Use after run_workflow (non-streaming) to watch a submitted run. Does not require re-submitting \u2014 takes an existing run_id.",
|
|
1429
|
-
"parameters": {
|
|
1430
|
-
"type": "object",
|
|
1431
|
-
"properties": {
|
|
1432
|
-
"run_id": {
|
|
1433
|
-
"type": "string",
|
|
1434
|
-
"description": "Run ID returned by run_workflow."
|
|
1435
|
-
}
|
|
1436
|
-
},
|
|
1437
|
-
"required": [
|
|
1438
|
-
"run_id"
|
|
1439
|
-
]
|
|
1440
|
-
}
|
|
1441
|
-
}
|
|
1442
|
-
},
|
|
1443
1037
|
{
|
|
1444
1038
|
"type": "function",
|
|
1445
1039
|
"function": {
|
|
@@ -1468,7 +1062,7 @@
|
|
|
1468
1062
|
"type": "function",
|
|
1469
1063
|
"function": {
|
|
1470
1064
|
"name": "cancel_run",
|
|
1471
|
-
"description": "Cancel a running or queued BioMate workflow on
|
|
1065
|
+
"description": "Cancel a running or queued BioMate workflow on AWS Batch.",
|
|
1472
1066
|
"parameters": {
|
|
1473
1067
|
"type": "object",
|
|
1474
1068
|
"properties": {
|
|
@@ -1515,6 +1109,25 @@
|
|
|
1515
1109
|
}
|
|
1516
1110
|
}
|
|
1517
1111
|
},
|
|
1112
|
+
{
|
|
1113
|
+
"type": "function",
|
|
1114
|
+
"function": {
|
|
1115
|
+
"name": "watch_run",
|
|
1116
|
+
"description": "Stream real-time progress for a running BioMate workflow and return full results when done. Emits MCP notifications/progress for every phase start/complete, step update, and QC gate. When the run finishes, automatically fetches output files (with download URLs) and AI findings. Use after run_workflow (non-streaming) to watch a submitted run. Does not require re-submitting \u2014 takes an existing run_id.",
|
|
1117
|
+
"parameters": {
|
|
1118
|
+
"type": "object",
|
|
1119
|
+
"properties": {
|
|
1120
|
+
"run_id": {
|
|
1121
|
+
"type": "string",
|
|
1122
|
+
"description": "Run ID returned by run_workflow."
|
|
1123
|
+
}
|
|
1124
|
+
},
|
|
1125
|
+
"required": [
|
|
1126
|
+
"run_id"
|
|
1127
|
+
]
|
|
1128
|
+
}
|
|
1129
|
+
}
|
|
1130
|
+
},
|
|
1518
1131
|
{
|
|
1519
1132
|
"type": "function",
|
|
1520
1133
|
"function": {
|
|
@@ -1525,7 +1138,7 @@
|
|
|
1525
1138
|
"properties": {
|
|
1526
1139
|
"s3_key": {
|
|
1527
1140
|
"type": "string",
|
|
1528
|
-
"description": "
|
|
1141
|
+
"description": "S3 key (s3://bucket/path) from get_run output_files."
|
|
1529
1142
|
},
|
|
1530
1143
|
"run_id": {
|
|
1531
1144
|
"type": "string",
|
|
@@ -1635,64 +1248,43 @@
|
|
|
1635
1248
|
"type": "function",
|
|
1636
1249
|
"function": {
|
|
1637
1250
|
"name": "query_database",
|
|
1638
|
-
"description": "Query a biological/chemical database by accession or name.
|
|
1251
|
+
"description": "Query a biological/chemical database by accession or name. Supported: uniprot, pdb, alphafold, ncbi_gene, dbsnp, clinvar, gnomad, kegg, reactome, chebi, pubchem, hpo, omim, string.",
|
|
1639
1252
|
"parameters": {
|
|
1640
1253
|
"type": "object",
|
|
1641
1254
|
"properties": {
|
|
1642
1255
|
"database": {
|
|
1643
1256
|
"type": "string",
|
|
1644
|
-
"description": "Database to query.
|
|
1257
|
+
"description": "Database to query. Kept in lock-step with ai_assistant.query_database handlers; every id has a real _query_* method.",
|
|
1645
1258
|
"enum": [
|
|
1646
|
-
"federated",
|
|
1647
1259
|
"uniprot",
|
|
1648
1260
|
"pdb",
|
|
1649
1261
|
"pdbe",
|
|
1650
1262
|
"alphafold",
|
|
1263
|
+
"interpro",
|
|
1264
|
+
"string",
|
|
1651
1265
|
"ncbi_gene",
|
|
1266
|
+
"ensembl",
|
|
1652
1267
|
"dbsnp",
|
|
1653
1268
|
"clinvar",
|
|
1654
1269
|
"gnomad",
|
|
1655
1270
|
"kegg",
|
|
1656
1271
|
"reactome",
|
|
1272
|
+
"go",
|
|
1273
|
+
"hpo",
|
|
1657
1274
|
"chebi",
|
|
1658
1275
|
"chembl",
|
|
1659
1276
|
"pubchem",
|
|
1660
1277
|
"bindingdb",
|
|
1661
|
-
"pharos"
|
|
1662
|
-
|
|
1663
|
-
"string",
|
|
1664
|
-
"pubmed"
|
|
1665
|
-
],
|
|
1666
|
-
"default": "federated"
|
|
1278
|
+
"pharos"
|
|
1279
|
+
]
|
|
1667
1280
|
},
|
|
1668
1281
|
"query": {
|
|
1669
1282
|
"type": "string",
|
|
1670
|
-
"description": "Accession, gene symbol, compound name
|
|
1671
|
-
},
|
|
1672
|
-
"operation": {
|
|
1673
|
-
"type": "string",
|
|
1674
|
-
"description": "Search mode chosen from user intent: 'lookup' (by ID/name, default), 'similarity' (chembl/pubchem=chemical similarity over SMILES; pdb=sequence homologs over the whole PDB), or 'text' (keyword search).",
|
|
1675
|
-
"enum": [
|
|
1676
|
-
"lookup",
|
|
1677
|
-
"similarity",
|
|
1678
|
-
"text"
|
|
1679
|
-
],
|
|
1680
|
-
"default": "lookup"
|
|
1681
|
-
},
|
|
1682
|
-
"entity_type": {
|
|
1683
|
-
"type": "string",
|
|
1684
|
-
"description": "Hint for federated routing: gene, protein, variant, compound, pathway, disease, or omit to auto-detect.",
|
|
1685
|
-
"enum": [
|
|
1686
|
-
"gene",
|
|
1687
|
-
"protein",
|
|
1688
|
-
"variant",
|
|
1689
|
-
"compound",
|
|
1690
|
-
"pathway",
|
|
1691
|
-
"disease"
|
|
1692
|
-
]
|
|
1283
|
+
"description": "Accession, gene symbol, or compound name."
|
|
1693
1284
|
}
|
|
1694
1285
|
},
|
|
1695
1286
|
"required": [
|
|
1287
|
+
"database",
|
|
1696
1288
|
"query"
|
|
1697
1289
|
]
|
|
1698
1290
|
}
|
|
@@ -1740,7 +1332,7 @@
|
|
|
1740
1332
|
},
|
|
1741
1333
|
"path": {
|
|
1742
1334
|
"type": "string",
|
|
1743
|
-
"description": "Directory path or S3 prefix to list
|
|
1335
|
+
"description": "Directory path or S3 prefix to list."
|
|
1744
1336
|
}
|
|
1745
1337
|
},
|
|
1746
1338
|
"required": [
|
|
@@ -1770,7 +1362,7 @@
|
|
|
1770
1362
|
},
|
|
1771
1363
|
"remote_path": {
|
|
1772
1364
|
"type": "string",
|
|
1773
|
-
"description": "Path on the FTP server
|
|
1365
|
+
"description": "Path on the FTP server."
|
|
1774
1366
|
},
|
|
1775
1367
|
"url": {
|
|
1776
1368
|
"type": "string",
|
|
@@ -1783,39 +1375,6 @@
|
|
|
1783
1375
|
}
|
|
1784
1376
|
}
|
|
1785
1377
|
},
|
|
1786
|
-
{
|
|
1787
|
-
"type": "function",
|
|
1788
|
-
"function": {
|
|
1789
|
-
"name": "recall_memory",
|
|
1790
|
-
"description": "Retrieve relevant prior context for the current goal: past runs on similar inputs, validated procedures, findings tagged by the user, learned parameter preferences. Call before biomate_session for repeat users \u2014 it dramatically improves param auto-fill and avoids re-running work.",
|
|
1791
|
-
"parameters": {
|
|
1792
|
-
"type": "object",
|
|
1793
|
-
"properties": {
|
|
1794
|
-
"query": {
|
|
1795
|
-
"type": "string",
|
|
1796
|
-
"description": "What to recall \u2014 usually the user's goal."
|
|
1797
|
-
},
|
|
1798
|
-
"scope": {
|
|
1799
|
-
"type": "string",
|
|
1800
|
-
"enum": [
|
|
1801
|
-
"runs",
|
|
1802
|
-
"findings",
|
|
1803
|
-
"procedures",
|
|
1804
|
-
"all"
|
|
1805
|
-
],
|
|
1806
|
-
"default": "all"
|
|
1807
|
-
},
|
|
1808
|
-
"limit": {
|
|
1809
|
-
"type": "integer",
|
|
1810
|
-
"default": 5
|
|
1811
|
-
}
|
|
1812
|
-
},
|
|
1813
|
-
"required": [
|
|
1814
|
-
"query"
|
|
1815
|
-
]
|
|
1816
|
-
}
|
|
1817
|
-
}
|
|
1818
|
-
},
|
|
1819
1378
|
{
|
|
1820
1379
|
"type": "function",
|
|
1821
1380
|
"function": {
|
|
@@ -1848,225 +1407,42 @@
|
|
|
1848
1407
|
{
|
|
1849
1408
|
"type": "function",
|
|
1850
1409
|
"function": {
|
|
1851
|
-
"name": "
|
|
1852
|
-
"description": "
|
|
1410
|
+
"name": "recall_memory",
|
|
1411
|
+
"description": "Retrieve relevant prior context for the current goal: past runs on similar inputs, validated procedures, findings tagged by the user, learned parameter preferences. Call before biomate_session for repeat users \u2014 it dramatically improves param auto-fill and avoids re-running work.",
|
|
1853
1412
|
"parameters": {
|
|
1854
1413
|
"type": "object",
|
|
1855
1414
|
"properties": {
|
|
1856
|
-
"
|
|
1857
|
-
"type": "string",
|
|
1858
|
-
"description": "Original filename (sets content-type and extension)."
|
|
1859
|
-
},
|
|
1860
|
-
"size_bytes": {
|
|
1861
|
-
"type": "integer",
|
|
1862
|
-
"description": "File size for quota check."
|
|
1863
|
-
},
|
|
1864
|
-
"content_type": {
|
|
1865
|
-
"type": "string",
|
|
1866
|
-
"description": "MIME type (auto-detected from filename if omitted)."
|
|
1867
|
-
}
|
|
1868
|
-
},
|
|
1869
|
-
"required": [
|
|
1870
|
-
"filename"
|
|
1871
|
-
]
|
|
1872
|
-
}
|
|
1873
|
-
}
|
|
1874
|
-
}
|
|
1875
|
-
],
|
|
1876
|
-
"lite": {
|
|
1877
|
-
"mcp": [
|
|
1878
|
-
{
|
|
1879
|
-
"name": "biomate_session",
|
|
1880
|
-
"title": "Run BioMate Session",
|
|
1881
|
-
"description": "**Primary entry point \u2014 use this for 90% of requests.** Run a complete BioMate scientific session from a natural-language goal. BioMate selects the right workflow from 2,455 indexed pipelines, pre-fills parameters from your goal text, executes on BioMate cloud, handles QC gates with auto-loop remediation, and produces structured findings. While running, the tool streams real-time progress (phase started, step completed, QC gate, auto-loop remediation, finding) back to the host. Returns a final run summary, a deep link to the live results panel, and the report URL. \n\n**How to write the `goal` parameter** \u2014 plain English, one to three sentences:\n\u2022 Include the *what*: analysis type + subject (e.g. 'ADMET screening', 'RNA-seq DE', 'variant calling')\n\u2022 Include *data location*: inline SMILES/sequences, S3 paths, accession numbers, or upload first with upload_file\n\u2022 Include key *parameters* that matter: organism, library type, comparisons, thresholds\n\u2022 You can omit anything BioMate can infer (it will ask if genuinely ambiguous)\n\n**Good examples:**\n 'Screen aspirin (CC(=O)Oc1ccccc1C(=O)O) and caffeine (Cn1cnc2c1c(=O)n(c(=O)n2C)C) for hERG inhibition, CYP3A4, and oral bioavailability'\n 'RNA-seq differential expression on s3://lab-bucket/exp42/fastqs/ \u2014 human GRCh38, dUTP strand-specific, treated (n=3) vs control (n=3), FDR 0.05'\n 'Whole-genome variant calling on the uploaded FASTQ pair, GRCh38, GATK HaplotypeCaller, germline mode'\n 'Run homogeneous 3D refinement in CryoSPARC on s3://cryo/job042/, C2 symmetry, box size 256'\n 'Fetch GSE183947 from GEO and run the same RNA-seq pipeline'\n\nUse run_workflow instead when the user wants to call a specific workflow by ID with explicit parameter control.",
|
|
1882
|
-
"inputSchema": {
|
|
1883
|
-
"type": "object",
|
|
1884
|
-
"properties": {
|
|
1885
|
-
"goal": {
|
|
1886
|
-
"type": "string",
|
|
1887
|
-
"description": "Natural-language scientific goal. Include: analysis type, data location (inline SMILES/sequences, s3:// paths, or GEO/SRA accession numbers), and key parameters (organism, comparisons, thresholds). BioMate infers the rest. Examples: 'Screen these 5 SMILES for hERG IC50 and CYP3A4 inhibition', 'RNA-seq DE on s3://bucket/exp1/ human GRCh38 paired-end treated vs control', 'Fetch GSE183947 and run differential expression'."
|
|
1888
|
-
},
|
|
1889
|
-
"inputs": {
|
|
1890
|
-
"type": "object",
|
|
1891
|
-
"description": "Optional structured inputs passed alongside `goal`. BioMate's inner AI sees these as a JSON block appended to the goal text and merges them with any parameters it extracts from the goal string. Use this to pass: S3 keys from upload_file, sequences, SMILES lists, accession numbers, or explicit parameter overrides. Examples:\n After upload_file: {\"fastq_file\": \"users/42/uploads/uuid-sample.fastq.gz\"} (use the s3_key value returned by upload_file)\n SMILES list: {\"smiles_list\": [\"CC(=O)Oc1ccccc1C(=O)O\"], \"organism\": \"human\"}\n Parameter override: {\"genome\": \"GRCh38\", \"aligner\": \"STAR\", \"fdr\": 0.05}",
|
|
1892
|
-
"additionalProperties": true
|
|
1893
|
-
},
|
|
1894
|
-
"experiment_id": {
|
|
1895
|
-
"type": "string",
|
|
1896
|
-
"description": "Optional experiment to attach this run to (from recall_memory)."
|
|
1897
|
-
},
|
|
1898
|
-
"stream": {
|
|
1899
|
-
"type": "boolean",
|
|
1900
|
-
"description": "Emit progress notifications during execution. Default true. Set false for hosts without MCP notification support \u2014 then poll with get_run.",
|
|
1901
|
-
"default": true
|
|
1902
|
-
}
|
|
1903
|
-
},
|
|
1904
|
-
"required": [
|
|
1905
|
-
"goal"
|
|
1906
|
-
]
|
|
1907
|
-
},
|
|
1908
|
-
"annotations": {
|
|
1909
|
-
"title": "Run BioMate Session",
|
|
1910
|
-
"readOnlyHint": false,
|
|
1911
|
-
"destructiveHint": false,
|
|
1912
|
-
"idempotentHint": false,
|
|
1913
|
-
"openWorldHint": true
|
|
1914
|
-
}
|
|
1915
|
-
},
|
|
1916
|
-
{
|
|
1917
|
-
"name": "export_report",
|
|
1918
|
-
"title": "Export Report",
|
|
1919
|
-
"description": "Render a publication-ready report for a completed run as PDF or markdown. Includes the methods section, QC audit trail, structured findings, and figures. This is what users need for IND submissions, CRO compliance packages, and publication supplementary materials.",
|
|
1920
|
-
"inputSchema": {
|
|
1921
|
-
"type": "object",
|
|
1922
|
-
"properties": {
|
|
1923
|
-
"run_id": {
|
|
1415
|
+
"query": {
|
|
1924
1416
|
"type": "string",
|
|
1925
|
-
"description": "
|
|
1417
|
+
"description": "What to recall \u2014 usually the user's goal."
|
|
1926
1418
|
},
|
|
1927
|
-
"
|
|
1419
|
+
"scope": {
|
|
1928
1420
|
"type": "string",
|
|
1929
1421
|
"enum": [
|
|
1930
|
-
"
|
|
1931
|
-
"
|
|
1932
|
-
"
|
|
1422
|
+
"runs",
|
|
1423
|
+
"findings",
|
|
1424
|
+
"procedures",
|
|
1425
|
+
"all"
|
|
1933
1426
|
],
|
|
1934
|
-
"default": "
|
|
1935
|
-
},
|
|
1936
|
-
"sections": {
|
|
1937
|
-
"type": "array",
|
|
1938
|
-
"items": {
|
|
1939
|
-
"type": "string",
|
|
1940
|
-
"enum": [
|
|
1941
|
-
"methods",
|
|
1942
|
-
"qc",
|
|
1943
|
-
"findings",
|
|
1944
|
-
"figures",
|
|
1945
|
-
"appendix"
|
|
1946
|
-
]
|
|
1947
|
-
},
|
|
1948
|
-
"description": "Which sections to include (default: all)."
|
|
1949
|
-
}
|
|
1950
|
-
},
|
|
1951
|
-
"required": [
|
|
1952
|
-
"run_id"
|
|
1953
|
-
]
|
|
1954
|
-
},
|
|
1955
|
-
"annotations": {
|
|
1956
|
-
"title": "Export Report",
|
|
1957
|
-
"readOnlyHint": false,
|
|
1958
|
-
"destructiveHint": false,
|
|
1959
|
-
"idempotentHint": true,
|
|
1960
|
-
"openWorldHint": false
|
|
1961
|
-
}
|
|
1962
|
-
},
|
|
1963
|
-
{
|
|
1964
|
-
"name": "upload_file",
|
|
1965
|
-
"title": "Upload File",
|
|
1966
|
-
"description": "Get a one-shot signed S3 PUT URL so the host can upload a local file directly to BioMate's data plane without proxying bytes through the chat transport. For files >5MB this is mandatory; for small text payloads, inline strings are fine.\n\n**Returns** `{upload_url, s3_key}` \u2014 two fields:\n- `upload_url`: a presigned HTTPS URL. You MUST upload the file bytes to it with an HTTP PUT before calling any other tool: `curl -X PUT -T <local_path> \"<upload_url>\"`\n- `s3_key`: a bare S3 object key (e.g. `users/42/uploads/uuid-sample.fastq.gz`). Pass this value directly into the `inputs` dict of `biomate_session` or as a `params` value in `run_workflow` \u2014 BioMate resolves the bucket internally. Example: `inputs={\"fastq_file\": s3_key}` or `params={\"input\": s3_key}`.\n\n**Full upload workflow:**\n1. `upload_file(filename='sample.fastq.gz', size_bytes=52000000)` \u2192 get `upload_url` + `s3_key`\n2. `curl -X PUT -T sample.fastq.gz \"<upload_url>\"` (or equivalent HTTP PUT \u2014 no auth header needed)\n3. `biomate_session(goal='Run RNA-seq DE on the uploaded FASTQs, human GRCh38', inputs={\"fastq_file\": s3_key})`",
|
|
1967
|
-
"inputSchema": {
|
|
1968
|
-
"type": "object",
|
|
1969
|
-
"properties": {
|
|
1970
|
-
"filename": {
|
|
1971
|
-
"type": "string",
|
|
1972
|
-
"description": "Original filename (sets content-type and extension)."
|
|
1427
|
+
"default": "all"
|
|
1973
1428
|
},
|
|
1974
|
-
"
|
|
1429
|
+
"limit": {
|
|
1975
1430
|
"type": "integer",
|
|
1976
|
-
"
|
|
1977
|
-
},
|
|
1978
|
-
"content_type": {
|
|
1979
|
-
"type": "string",
|
|
1980
|
-
"description": "MIME type (auto-detected from filename if omitted)."
|
|
1431
|
+
"default": 5
|
|
1981
1432
|
}
|
|
1982
1433
|
},
|
|
1983
1434
|
"required": [
|
|
1984
|
-
"
|
|
1435
|
+
"query"
|
|
1985
1436
|
]
|
|
1986
|
-
},
|
|
1987
|
-
"annotations": {
|
|
1988
|
-
"title": "Upload File",
|
|
1989
|
-
"readOnlyHint": false,
|
|
1990
|
-
"destructiveHint": false,
|
|
1991
|
-
"idempotentHint": false,
|
|
1992
|
-
"openWorldHint": false
|
|
1993
1437
|
}
|
|
1994
1438
|
}
|
|
1995
|
-
|
|
1996
|
-
|
|
1997
|
-
|
|
1998
|
-
|
|
1999
|
-
"description": "**Primary entry point \u2014 use this for 90% of requests.** Run a complete BioMate scientific session from a natural-language goal. BioMate selects the right workflow from 2,455 indexed pipelines, pre-fills parameters from your goal text, executes on BioMate cloud, handles QC gates with auto-loop remediation, and produces structured findings. While running, the tool streams real-time progress (phase started, step completed, QC gate, auto-loop remediation, finding) back to the host. Returns a final run summary, a deep link to the live results panel, and the report URL. \n\n**How to write the `goal` parameter** \u2014 plain English, one to three sentences:\n\u2022 Include the *what*: analysis type + subject (e.g. 'ADMET screening', 'RNA-seq DE', 'variant calling')\n\u2022 Include *data location*: inline SMILES/sequences, S3 paths, accession numbers, or upload first with upload_file\n\u2022 Include key *parameters* that matter: organism, library type, comparisons, thresholds\n\u2022 You can omit anything BioMate can infer (it will ask if genuinely ambiguous)\n\n**Good examples:**\n 'Screen aspirin (CC(=O)Oc1ccccc1C(=O)O) and caffeine (Cn1cnc2c1c(=O)n(c(=O)n2C)C) for hERG inhibition, CYP3A4, and oral bioavailability'\n 'RNA-seq differential expression on s3://lab-bucket/exp42/fastqs/ \u2014 human GRCh38, dUTP strand-specific, treated (n=3) vs control (n=3), FDR 0.05'\n 'Whole-genome variant calling on the uploaded FASTQ pair, GRCh38, GATK HaplotypeCaller, germline mode'\n 'Run homogeneous 3D refinement in CryoSPARC on s3://cryo/job042/, C2 symmetry, box size 256'\n 'Fetch GSE183947 from GEO and run the same RNA-seq pipeline'\n\nUse run_workflow instead when the user wants to call a specific workflow by ID with explicit parameter control.",
|
|
2000
|
-
"input_schema": {
|
|
2001
|
-
"type": "object",
|
|
2002
|
-
"properties": {
|
|
2003
|
-
"goal": {
|
|
2004
|
-
"type": "string",
|
|
2005
|
-
"description": "Natural-language scientific goal. Include: analysis type, data location (inline SMILES/sequences, s3:// paths, or GEO/SRA accession numbers), and key parameters (organism, comparisons, thresholds). BioMate infers the rest. Examples: 'Screen these 5 SMILES for hERG IC50 and CYP3A4 inhibition', 'RNA-seq DE on s3://bucket/exp1/ human GRCh38 paired-end treated vs control', 'Fetch GSE183947 and run differential expression'."
|
|
2006
|
-
},
|
|
2007
|
-
"inputs": {
|
|
2008
|
-
"type": "object",
|
|
2009
|
-
"description": "Optional structured inputs passed alongside `goal`. BioMate's inner AI sees these as a JSON block appended to the goal text and merges them with any parameters it extracts from the goal string. Use this to pass: S3 keys from upload_file, sequences, SMILES lists, accession numbers, or explicit parameter overrides. Examples:\n After upload_file: {\"fastq_file\": \"users/42/uploads/uuid-sample.fastq.gz\"} (use the s3_key value returned by upload_file)\n SMILES list: {\"smiles_list\": [\"CC(=O)Oc1ccccc1C(=O)O\"], \"organism\": \"human\"}\n Parameter override: {\"genome\": \"GRCh38\", \"aligner\": \"STAR\", \"fdr\": 0.05}",
|
|
2010
|
-
"additionalProperties": true
|
|
2011
|
-
},
|
|
2012
|
-
"experiment_id": {
|
|
2013
|
-
"type": "string",
|
|
2014
|
-
"description": "Optional experiment to attach this run to (from recall_memory)."
|
|
2015
|
-
},
|
|
2016
|
-
"stream": {
|
|
2017
|
-
"type": "boolean",
|
|
2018
|
-
"description": "Emit progress notifications during execution. Default true. Set false for hosts without MCP notification support \u2014 then poll with get_run.",
|
|
2019
|
-
"default": true
|
|
2020
|
-
}
|
|
2021
|
-
},
|
|
2022
|
-
"required": [
|
|
2023
|
-
"goal"
|
|
2024
|
-
]
|
|
2025
|
-
}
|
|
2026
|
-
},
|
|
2027
|
-
{
|
|
2028
|
-
"name": "export_report",
|
|
2029
|
-
"description": "Render a publication-ready report for a completed run as PDF or markdown. Includes the methods section, QC audit trail, structured findings, and figures. This is what users need for IND submissions, CRO compliance packages, and publication supplementary materials.",
|
|
2030
|
-
"input_schema": {
|
|
2031
|
-
"type": "object",
|
|
2032
|
-
"properties": {
|
|
2033
|
-
"run_id": {
|
|
2034
|
-
"type": "string",
|
|
2035
|
-
"description": "Completed run ID."
|
|
2036
|
-
},
|
|
2037
|
-
"format": {
|
|
2038
|
-
"type": "string",
|
|
2039
|
-
"enum": [
|
|
2040
|
-
"pdf",
|
|
2041
|
-
"markdown",
|
|
2042
|
-
"docx"
|
|
2043
|
-
],
|
|
2044
|
-
"default": "pdf"
|
|
2045
|
-
},
|
|
2046
|
-
"sections": {
|
|
2047
|
-
"type": "array",
|
|
2048
|
-
"items": {
|
|
2049
|
-
"type": "string",
|
|
2050
|
-
"enum": [
|
|
2051
|
-
"methods",
|
|
2052
|
-
"qc",
|
|
2053
|
-
"findings",
|
|
2054
|
-
"figures",
|
|
2055
|
-
"appendix"
|
|
2056
|
-
]
|
|
2057
|
-
},
|
|
2058
|
-
"description": "Which sections to include (default: all)."
|
|
2059
|
-
}
|
|
2060
|
-
},
|
|
2061
|
-
"required": [
|
|
2062
|
-
"run_id"
|
|
2063
|
-
]
|
|
2064
|
-
}
|
|
2065
|
-
},
|
|
2066
|
-
{
|
|
1439
|
+
},
|
|
1440
|
+
{
|
|
1441
|
+
"type": "function",
|
|
1442
|
+
"function": {
|
|
2067
1443
|
"name": "upload_file",
|
|
2068
|
-
"description": "Get a one-shot signed S3 PUT URL so the host can upload a local file directly to BioMate's data plane without proxying bytes through the chat transport. For files >5MB this is mandatory; for small text payloads, inline strings are fine
|
|
2069
|
-
"
|
|
1444
|
+
"description": "Get a one-shot signed S3 PUT URL so the host can upload a local file directly to BioMate's data plane without proxying bytes through the chat transport. Returns the s3_key to use in subsequent tool calls. For files >5MB this is mandatory; for small text payloads, inline strings are fine.",
|
|
1445
|
+
"parameters": {
|
|
2070
1446
|
"type": "object",
|
|
2071
1447
|
"properties": {
|
|
2072
1448
|
"filename": {
|
|
@@ -2087,117 +1463,8 @@
|
|
|
2087
1463
|
]
|
|
2088
1464
|
}
|
|
2089
1465
|
}
|
|
2090
|
-
|
|
2091
|
-
|
|
2092
|
-
{
|
|
2093
|
-
"type": "function",
|
|
2094
|
-
"function": {
|
|
2095
|
-
"name": "biomate_session",
|
|
2096
|
-
"description": "**Primary entry point \u2014 use this for 90% of requests.** Run a complete BioMate scientific session from a natural-language goal. BioMate selects the right workflow from 2,455 indexed pipelines, pre-fills parameters from your goal text, executes on BioMate cloud, handles QC gates with auto-loop remediation, and produces structured findings. While running, the tool streams real-time progress (phase started, step completed, QC gate, auto-loop remediation, finding) back to the host. Returns a final run summary, a deep link to the live results panel, and the report URL. \n\n**How to write the `goal` parameter** \u2014 plain English, one to three sentences:\n\u2022 Include the *what*: analysis type + subject (e.g. 'ADMET screening', 'RNA-seq DE', 'variant calling')\n\u2022 Include *data location*: inline SMILES/sequences, S3 paths, accession numbers, or upload first with upload_file\n\u2022 Include key *parameters* that matter: organism, library type, comparisons, thresholds\n\u2022 You can omit anything BioMate can infer (it will ask if genuinely ambiguous)\n\n**Good examples:**\n 'Screen aspirin (CC(=O)Oc1ccccc1C(=O)O) and caffeine (Cn1cnc2c1c(=O)n(c(=O)n2C)C) for hERG inhibition, CYP3A4, and oral bioavailability'\n 'RNA-seq differential expression on s3://lab-bucket/exp42/fastqs/ \u2014 human GRCh38, dUTP strand-specific, treated (n=3) vs control (n=3), FDR 0.05'\n 'Whole-genome variant calling on the uploaded FASTQ pair, GRCh38, GATK HaplotypeCaller, germline mode'\n 'Run homogeneous 3D refinement in CryoSPARC on s3://cryo/job042/, C2 symmetry, box size 256'\n 'Fetch GSE183947 from GEO and run the same RNA-seq pipeline'\n\nUse run_workflow instead when the user wants to call a specific workflow by ID with explicit parameter control.",
|
|
2097
|
-
"parameters": {
|
|
2098
|
-
"type": "object",
|
|
2099
|
-
"properties": {
|
|
2100
|
-
"goal": {
|
|
2101
|
-
"type": "string",
|
|
2102
|
-
"description": "Natural-language scientific goal. Include: analysis type, data location (inline SMILES/sequences, s3:// paths, or GEO/SRA accession numbers), and key parameters (organism, comparisons, thresholds). BioMate infers the rest. Examples: 'Screen these 5 SMILES for hERG IC50 and CYP3A4 inhibition', 'RNA-seq DE on s3://bucket/exp1/ human GRCh38 paired-end treated vs control', 'Fetch GSE183947 and run differential expression'."
|
|
2103
|
-
},
|
|
2104
|
-
"inputs": {
|
|
2105
|
-
"type": "object",
|
|
2106
|
-
"description": "Optional structured inputs passed alongside `goal`. BioMate's inner AI sees these as a JSON block appended to the goal text and merges them with any parameters it extracts from the goal string. Use this to pass: S3 keys from upload_file, sequences, SMILES lists, accession numbers, or explicit parameter overrides. Examples:\n After upload_file: {\"fastq_file\": \"users/42/uploads/uuid-sample.fastq.gz\"} (use the s3_key value returned by upload_file)\n SMILES list: {\"smiles_list\": [\"CC(=O)Oc1ccccc1C(=O)O\"], \"organism\": \"human\"}\n Parameter override: {\"genome\": \"GRCh38\", \"aligner\": \"STAR\", \"fdr\": 0.05}",
|
|
2107
|
-
"additionalProperties": true
|
|
2108
|
-
},
|
|
2109
|
-
"experiment_id": {
|
|
2110
|
-
"type": "string",
|
|
2111
|
-
"description": "Optional experiment to attach this run to (from recall_memory)."
|
|
2112
|
-
},
|
|
2113
|
-
"stream": {
|
|
2114
|
-
"type": "boolean",
|
|
2115
|
-
"description": "Emit progress notifications during execution. Default true. Set false for hosts without MCP notification support \u2014 then poll with get_run.",
|
|
2116
|
-
"default": true
|
|
2117
|
-
}
|
|
2118
|
-
},
|
|
2119
|
-
"required": [
|
|
2120
|
-
"goal"
|
|
2121
|
-
]
|
|
2122
|
-
}
|
|
2123
|
-
}
|
|
2124
|
-
},
|
|
2125
|
-
{
|
|
2126
|
-
"type": "function",
|
|
2127
|
-
"function": {
|
|
2128
|
-
"name": "export_report",
|
|
2129
|
-
"description": "Render a publication-ready report for a completed run as PDF or markdown. Includes the methods section, QC audit trail, structured findings, and figures. This is what users need for IND submissions, CRO compliance packages, and publication supplementary materials.",
|
|
2130
|
-
"parameters": {
|
|
2131
|
-
"type": "object",
|
|
2132
|
-
"properties": {
|
|
2133
|
-
"run_id": {
|
|
2134
|
-
"type": "string",
|
|
2135
|
-
"description": "Completed run ID."
|
|
2136
|
-
},
|
|
2137
|
-
"format": {
|
|
2138
|
-
"type": "string",
|
|
2139
|
-
"enum": [
|
|
2140
|
-
"pdf",
|
|
2141
|
-
"markdown",
|
|
2142
|
-
"docx"
|
|
2143
|
-
],
|
|
2144
|
-
"default": "pdf"
|
|
2145
|
-
},
|
|
2146
|
-
"sections": {
|
|
2147
|
-
"type": "array",
|
|
2148
|
-
"items": {
|
|
2149
|
-
"type": "string",
|
|
2150
|
-
"enum": [
|
|
2151
|
-
"methods",
|
|
2152
|
-
"qc",
|
|
2153
|
-
"findings",
|
|
2154
|
-
"figures",
|
|
2155
|
-
"appendix"
|
|
2156
|
-
]
|
|
2157
|
-
},
|
|
2158
|
-
"description": "Which sections to include (default: all)."
|
|
2159
|
-
}
|
|
2160
|
-
},
|
|
2161
|
-
"required": [
|
|
2162
|
-
"run_id"
|
|
2163
|
-
]
|
|
2164
|
-
}
|
|
2165
|
-
}
|
|
2166
|
-
},
|
|
2167
|
-
{
|
|
2168
|
-
"type": "function",
|
|
2169
|
-
"function": {
|
|
2170
|
-
"name": "upload_file",
|
|
2171
|
-
"description": "Get a one-shot signed S3 PUT URL so the host can upload a local file directly to BioMate's data plane without proxying bytes through the chat transport. For files >5MB this is mandatory; for small text payloads, inline strings are fine.\n\n**Returns** `{upload_url, s3_key}` \u2014 two fields:\n- `upload_url`: a presigned HTTPS URL. You MUST upload the file bytes to it with an HTTP PUT before calling any other tool: `curl -X PUT -T <local_path> \"<upload_url>\"`\n- `s3_key`: a bare S3 object key (e.g. `users/42/uploads/uuid-sample.fastq.gz`). Pass this value directly into the `inputs` dict of `biomate_session` or as a `params` value in `run_workflow` \u2014 BioMate resolves the bucket internally. Example: `inputs={\"fastq_file\": s3_key}` or `params={\"input\": s3_key}`.\n\n**Full upload workflow:**\n1. `upload_file(filename='sample.fastq.gz', size_bytes=52000000)` \u2192 get `upload_url` + `s3_key`\n2. `curl -X PUT -T sample.fastq.gz \"<upload_url>\"` (or equivalent HTTP PUT \u2014 no auth header needed)\n3. `biomate_session(goal='Run RNA-seq DE on the uploaded FASTQs, human GRCh38', inputs={\"fastq_file\": s3_key})`",
|
|
2172
|
-
"parameters": {
|
|
2173
|
-
"type": "object",
|
|
2174
|
-
"properties": {
|
|
2175
|
-
"filename": {
|
|
2176
|
-
"type": "string",
|
|
2177
|
-
"description": "Original filename (sets content-type and extension)."
|
|
2178
|
-
},
|
|
2179
|
-
"size_bytes": {
|
|
2180
|
-
"type": "integer",
|
|
2181
|
-
"description": "File size for quota check."
|
|
2182
|
-
},
|
|
2183
|
-
"content_type": {
|
|
2184
|
-
"type": "string",
|
|
2185
|
-
"description": "MIME type (auto-detected from filename if omitted)."
|
|
2186
|
-
}
|
|
2187
|
-
},
|
|
2188
|
-
"required": [
|
|
2189
|
-
"filename"
|
|
2190
|
-
]
|
|
2191
|
-
}
|
|
2192
|
-
}
|
|
2193
|
-
}
|
|
2194
|
-
],
|
|
2195
|
-
"tool_names": [
|
|
2196
|
-
"biomate_session",
|
|
2197
|
-
"export_report",
|
|
2198
|
-
"upload_file"
|
|
2199
|
-
]
|
|
2200
|
-
},
|
|
1466
|
+
}
|
|
1467
|
+
],
|
|
2201
1468
|
"backend_routes": [
|
|
2202
1469
|
{
|
|
2203
1470
|
"name": "biomate_session",
|
|
@@ -2223,12 +1490,6 @@
|
|
|
2223
1490
|
"path": "/api/workflows/execute",
|
|
2224
1491
|
"streaming": true
|
|
2225
1492
|
},
|
|
2226
|
-
{
|
|
2227
|
-
"name": "watch_run",
|
|
2228
|
-
"method": "GET",
|
|
2229
|
-
"path": "/api/workflows/runs/{run_id}",
|
|
2230
|
-
"streaming": true
|
|
2231
|
-
},
|
|
2232
1493
|
{
|
|
2233
1494
|
"name": "get_run",
|
|
2234
1495
|
"method": "GET",
|
|
@@ -2247,6 +1508,12 @@
|
|
|
2247
1508
|
"path": "/api/workflows/runs",
|
|
2248
1509
|
"streaming": false
|
|
2249
1510
|
},
|
|
1511
|
+
{
|
|
1512
|
+
"name": "watch_run",
|
|
1513
|
+
"method": "GET",
|
|
1514
|
+
"path": "/api/workflows/runs/{run_id}",
|
|
1515
|
+
"streaming": true
|
|
1516
|
+
},
|
|
2250
1517
|
{
|
|
2251
1518
|
"name": "preview_file",
|
|
2252
1519
|
"method": "POST",
|
|
@@ -2255,7 +1522,7 @@
|
|
|
2255
1522
|
},
|
|
2256
1523
|
{
|
|
2257
1524
|
"name": "export_report",
|
|
2258
|
-
"method": "
|
|
1525
|
+
"method": "GET",
|
|
2259
1526
|
"path": "/api/workflows/runs/{run_id}/findings/report",
|
|
2260
1527
|
"streaming": false
|
|
2261
1528
|
},
|
|
@@ -2285,7 +1552,7 @@
|
|
|
2285
1552
|
},
|
|
2286
1553
|
{
|
|
2287
1554
|
"name": "browse_data",
|
|
2288
|
-
"method": "
|
|
1555
|
+
"method": "GET",
|
|
2289
1556
|
"path": "/api/data/browse",
|
|
2290
1557
|
"streaming": false
|
|
2291
1558
|
},
|
|
@@ -2295,12 +1562,6 @@
|
|
|
2295
1562
|
"path": "/api/data/fetch",
|
|
2296
1563
|
"streaming": false
|
|
2297
1564
|
},
|
|
2298
|
-
{
|
|
2299
|
-
"name": "recall_memory",
|
|
2300
|
-
"method": "POST",
|
|
2301
|
-
"path": "/api/memory/relevant",
|
|
2302
|
-
"streaming": false
|
|
2303
|
-
},
|
|
2304
1565
|
{
|
|
2305
1566
|
"name": "search_literature",
|
|
2306
1567
|
"method": "POST",
|
|
@@ -2308,27 +1569,15 @@
|
|
|
2308
1569
|
"streaming": false
|
|
2309
1570
|
},
|
|
2310
1571
|
{
|
|
2311
|
-
"name": "
|
|
2312
|
-
"method": "POST",
|
|
2313
|
-
"path": "/api/uploads/signed_url",
|
|
2314
|
-
"streaming": false
|
|
2315
|
-
},
|
|
2316
|
-
{
|
|
2317
|
-
"name": "list_instruments",
|
|
2318
|
-
"method": "GET",
|
|
2319
|
-
"path": "local:opentrons/discover",
|
|
2320
|
-
"streaming": false
|
|
2321
|
-
},
|
|
2322
|
-
{
|
|
2323
|
-
"name": "get_instrument_status",
|
|
1572
|
+
"name": "recall_memory",
|
|
2324
1573
|
"method": "GET",
|
|
2325
|
-
"path": "
|
|
1574
|
+
"path": "/api/memory/relevant",
|
|
2326
1575
|
"streaming": false
|
|
2327
1576
|
},
|
|
2328
1577
|
{
|
|
2329
|
-
"name": "
|
|
1578
|
+
"name": "upload_file",
|
|
2330
1579
|
"method": "POST",
|
|
2331
|
-
"path": "
|
|
1580
|
+
"path": "/api/uploads/signed_url",
|
|
2332
1581
|
"streaming": false
|
|
2333
1582
|
}
|
|
2334
1583
|
]
|