The Biomni MCP connector routes your AI agent's tool calls to Biomni's own MCP server through Scalekit. Each user signs in to Biomni once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 12 tools.
- Tools
- 12
- What they doRead · write · destructive
- 6 · 6 · 06 read6 write0 destructive
- Users sign in with
- OAuth
- OAuth app
- Scalekit's or your own
Setup
Install the SDK
Terminal window npm install @scalekit-sdk/node dotenvTerminal window pip install scalekit-sdk-python python-dotenvSet your credentials
Add your Scalekit credentials to your
.envfile. Find values in app.scalekit.com > Developers > API Credentials..env SCALEKIT_ENVIRONMENT_URL=<your-environment-url>SCALEKIT_CLIENT_ID=<your-client-id>SCALEKIT_CLIENT_SECRET=<your-client-secret>Create the Biomni MCP connection
In AgentKit > Connections, create a Biomni MCP connection. The name you give it is the
connection_nameyour code passes. See Configure connections.Scalekit credentials are available for Biomni MCP server, so you don't need to register an OAuth app.
Authorize a user and make your first call
quickstart.mts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'import { createInterface } from 'node:readline/promises'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENVIRONMENT_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'biomnimcp'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize Biomni MCP:', link)const rl = createInterface({ input: process.stdin, output: process.stdout })await rl.question('Press Enter after authorizing...')rl.close()// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'biomnimcp_list_projects',toolInput: {},})console.log(result)Terminal window npx tsx quickstart.mtsquickstart.py import osfrom scalekit import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "biomnimcp"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize Biomni MCP:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="biomnimcp_list_projects",connection_name=connection_name,identifier=identifier,)print(result)Terminal window python quickstart.pyEach user signs in once. See Authorize a user for the full flow and statuses.
Tools
Pass the exact name toexecute_toolbiomnimcp_list_filesList the input files already uploaded to a project.Read-onlyList Files
List the input files already uploaded to a project. Returns the files a user added through the Biomni web app's project files panel (or earlier via upload_file) — the same files the agent can read during any task in that project. This is how you discover the file_id of an already-uploaded file: files are NOT attached to a task automatically, so pass the returned file_id values in the file_ids argument of start_new_task or send_message to attach them. Only input files are listed here — result files the agent produced are listed by list_result_files(task_id) instead.
Inputs
project_idstringrequired- No description.
after_idstring- No description.
before_idstring- No description.
limitinteger- No description.default
50
biomnimcp_list_projectsList the caller's projects in the active workspace.Read-onlyList Projects
List the caller's projects in the active workspace. Always call this before asking the user to pick a project, rather than asking them to type a project ID from memory. Optionally includes per-project task activity counts.
Inputs
include_activityboolean- If true, fetch per-project task counts in parallel and add running_tasks_count and total_tasks_count fields. Costs N extra list_tasks calls (one per project), so defaults to false. Use when the user explicitly asks about activity or in-flight work.default
false limitinteger- Maximum number of projects to return. Defaults to 50.default
50
biomnimcp_list_result_filesList the names and metadata of output files produced by an agent task.Read-onlyList Result Files
List the names and metadata of output files produced by an agent task. Returns file name, size, and MIME type for each result file, but does not provide direct download links — direct the user to the Biomni web app to download files.
Inputs
task_idstringrequired- The task (session) whose output files to list. Obtain this from start_new_task or send_message. Values look like sess_… — treat them as opaque IDs.
biomnimcp_list_tasksList tasks in a project.Read-onlyList Tasks
List tasks in a project. Returns the tasks belonging to the specified project, up to an optional limit. Use this to discover existing tasks before continuing or reviewing work.
Inputs
project_idstringrequired- The project to list tasks from. Required. Values look like opaque IDs — use list_projects to find the right project_id.
limitinteger- Maximum number of tasks to return. Defaults to 20.default
20
biomnimcp_list_workspacesList the workspaces (orgs) the caller belongs to and show which one is currently active.Read-onlyList Workspaces
List the workspaces (orgs) the caller belongs to and show which one is currently active. Use this when the user cannot find a project — it may be in another workspace. Returns a list of {id, name, type, is_active} entries plus active_workspace_id.
Inputs
This tool takes no inputs.
biomnimcp_wait_for_next_updateLong-poll for the next batch of progress on the agent's current reply, returning only newly-added content blocks since the last call.Read-onlyWait for Next Update
Long-poll for the next batch of progress on the agent's current reply, returning only newly-added content blocks since the last call. Call at most ~3 times per turn to stream incremental output; if the task is still running after that, point the user to the Biomni web URL rather than polling indefinitely.
Inputs
task_idstringrequired- The task_id (conversation handle) returned by start_new_task or send_message. The server resolves it to the latest assistant reply automatically.
max_wait_secondsinteger- How long the server should hold the connection open waiting for new blocks. Defaults to 15. Clamped to [0, 30] by the server.default
15 since_block_indexinteger- Index of the first content block to return. Pass 0 on the first call; on subsequent calls pass res["cursor"] from the previous response to receive only newly-added blocks.default
0
biomnimcp_create_projectCreate a new Biomni project in the caller's current workspace.WriteCreate Project
Create a new Biomni project in the caller's current workspace. A project is a persistent container with its own file drive where tasks and uploaded files live. Only create a project when the user explicitly asks for a new one; call list_projects first to check if a suitable one already exists.
Inputs
namestringrequired- Human-readable project name. Required.
descriptionstring- Optional free-text description of the project.
metadatastring- Optional arbitrary key-value pairs stored alongside the project for your own use (e.g. external system IDs).
biomnimcp_request_reviewRun a Scientific Review of a completed task — same as the "Review" button in the Biomni web app.WriteRequest Scientific Review
Run a Scientific Review of a completed task — same as the "Review" button in the Biomni web app. A reviewer agent re-reads the finished task and checks it for scientific accuracy, correct use of the data/materials, unsupported claims (hallucinations), and stated limitations. Only worth running on a task the agent has already completed — a review of an idle or still-running task has nothing to look at yet. The review runs as a background job and returns immediately with status "running" — it does NOT return the review itself. When it finishes, the review is shown on the task's page in the Biomni web app; point the user to the returned biomni_url to read it there. wait_for_next_update is not the way to fetch it. Calling this while a review is already running is a no-op; calling it again after one finished starts a fresh review that replaces the previous one.
Inputs
task_idstringrequired- The task (session) to review — the conversation handle from start_new_task / send_message.
biomnimcp_send_messageSend a user message to an existing Biomni task and trigger AI agent execution.WriteSend Message
Send a user message to an existing Biomni task and trigger AI agent execution. Optionally attach uploaded files. To stream the agent's output, call wait_for_next_update a few times after this returns.
Inputs
messagestringrequired- User message text to send to the agent.
task_idstringrequired- Target task id — get one from start_new_task. Values look like sess_…; treat them as opaque ids.
file_idsstring- Optional list of input file ids to attach to this message. Pass file_id values returned by upload_file.
project_idstring- Optional project id — used to build the returned biomni_url deep link if the adapter response doesn't already carry one. Omit if you don't need a clickable link; the API call itself does not need it.
biomnimcp_start_new_taskAuto-create a Biomni task in a project and send the first message in a single call, triggering AI agent execution.WriteStart New Task
Auto-create a Biomni task in a project and send the first message in a single call, triggering AI agent execution. Returns both a task_id (for follow-up send_message / wait_for_next_update calls) and a message_id for the agent's first reply. If files were uploaded with upload_file, their file_ids must be passed here explicitly — they are not auto-attached.
Inputs
messagestringrequired- User message text to send as the first message of the new task.
project_idstringrequired- The project to start the conversation in. Required.
auto_modeboolean- Run the task in Auto mode (default False). In Auto mode the agent never pauses to ask the user mid-run: the interaction gates it would normally block on — clarifying questions, plan approval, and Skill-load confirmations — resolve automatically so the task goes from start to finish unattended. Set True when the user wants a hands-off / autonomous run, or is not available to answer follow-ups. Auto mode only skips these user-input gates — it does not change auth, billing, or safety.default
false file_idsstring- Optional list of input file ids to attach. Pass the file_id values returned by upload_file here so the agent can see those files — they are not attached automatically.
modelstring- Optional model tier for the new task — 'standard', 'fast', or 'max' (Max mode, the highest-capability model). Omit to use the account default (standard). Pass 'max' only when the user asked for the strongest model / Max mode.
task_namestring- Optional human-readable name for the new task. When set, it is used verbatim as the task title and bypasses the automatic naming from the first message. Omit to let Biomni auto-generate a title from message.
biomnimcp_switch_workspaceSwitch the caller's active workspace so that subsequent calls (list_projects, create_project, task operations) act in the new workspace.WriteSwitch Workspace
Switch the caller's active workspace so that subsequent calls (list_projects, create_project, task operations) act in the new workspace. Get workspace ids from list_workspaces. Note: switching only takes effect on OAuth-connected sessions; static API-key connections are bound to a single workspace and cannot switch.
- Idempotent
Inputs
workspace_idstringrequired- The workspace (org) id to switch to — obtain from list_workspaces.
biomnimcp_upload_fileUpload a small text file (VCF, CSV, TSV, JSON, or code) to a project's drive by passing its content inline as a UTF-8 string.WriteUpload File
Upload a small text file (VCF, CSV, TSV, JSON, or code) to a project's drive by passing its content inline as a UTF-8 string. Returns a file_id that can be passed to start_new_task or send_message so the agent treats the file as explicit input. Hard cap of 25 MB on inline content.
Inputs
contentstringrequired- File content as a UTF-8 string. Multi-line is fine. Hard cap of 25 MB.
filenamestringrequired- Name the file will appear under in the project drive (e.g. variants.vcf).
project_idstringrequired- Target project id — use list_projects to find it.
mime_typestring- Optional MIME type for the file. Common values: text/csv, application/json, text/tab-separated-values, application/x-vcard (for VCF). Defaults to text/plain.default
text/plain
No tools match.