Skip to content
Scalekit Docs
Talk to an Engineer Dashboard

Connect AI agents to the Biomni MCP server

Vendor MCP
Open markdown

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 app
Scalekit's or your own

Setup

  1. Install the SDK

    Terminal window
    npm install @scalekit-sdk/node dotenv
  2. Set your credentials

    Add your Scalekit credentials to your .env file. 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>
  3. Create the Biomni MCP connection

    In AgentKit > Connections, create a Biomni MCP connection. The name you give it is the connection_name your code passes. See Configure connections.

    Scalekit credentials are available for Biomni MCP server, so you don't need to register an OAuth app.

  4. 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.actions
    const connector = 'biomnimcp'
    const identifier = 'user_123'
    // Generate an authorization link for the user
    const { 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 call
    const result = await actions.executeTool({
    connector,
    identifier,
    toolName: 'biomnimcp_list_projects',
    toolInput: {},
    })
    console.log(result)
    Terminal window
    npx tsx quickstart.mts

    Each user signs in once. See Authorize a user for the full flow and statuses.

Tools

Pass the exact name to execute_tool
Try in PlaygroundRequest a tool
  • biomnimcp_list_filesList the input files already uploaded to a project.Read-only

    List 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-only

    List 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-only

    List 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-only

    List 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-only

    List 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-only

    Wait 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.Write

    Create 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.Write

    Request 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.