# Onboard your agent

> Connect Claude Code, Codex, Cursor, Windsurf, VS Code or OpenCode to BioFlow in one step: paste one sentence and the agent wires up the MCP server, verifies the connection, and reports back.

Page: https://getbioflow.com/docs/agent-setup

{/* Generated by apps/docs/scripts/generate-agent-setup-docs.mjs from lib/agent-setup-data.ts — do not edit by hand. */}

<OnboardAgentPill />

Copy the sentence above into any AI coding agent, or run each step yourself
below. The sentence tells the agent to fetch and execute
[https://getbioflow.com/agent-setup/prompt.md](https://getbioflow.com/agent-setup/prompt.md) — the same file this page is generated from.

> Fetch and execute the appropriate instructions to set me up for BioFlow from [https://getbioflow.com/agent-setup/prompt.md](https://getbioflow.com/agent-setup/prompt.md)

## What you get [#what-you-get]

* 107 operations reachable via `search_tools`/`execute_typescript` (Code Mode) over OAuth 2.1 — no API key needed, scope-filtered to what you grant. See [Connecting AI assistants](https://getbioflow.com/docs/connecting-ai-assistants) for the full operation and scope reference.
* The REST API and both SDKs, if you would rather script against BioFlow directly.
* A one-call verify step, so you know the connection actually works.

## Get credentials [#get-credentials]

**MCP needs no key.** `https://app.getbioflow.com/api/mcp` authenticates with OAuth 2.1 + PKCE, triggered automatically on the first tool call.

**The REST API and SDKs need one API key**, only if you want those instead of (or in addition to) MCP. Create one at [the developer console](https://app.getbioflow.com/dashboard/settings/developers) and store it as `BIOFLOW_API_KEY`.

## Connect your agent [#connect-your-agent]

**Fastest: [Add to Claude](https://claude.ai/directory/ed16e551-99a5-4c92-bc90-f44e380a562c)** (Claude on the web, Desktop or mobile) — opens BioFlow's listing in Claude's connector directory. Click Connect, then sign in.

This MCP server exposes exactly two tools — `search_tools` and `execute_typescript` (Code Mode) — instead of one tool per operation. Call `search_tools` to get TypeScript declarations for the 107 scope-filtered operations you can reach, then call `execute_typescript` with a short program that invokes them as `external_*` functions, e.g. `external_workspace_list` for the `workspace.list` operation.

### Claude Code [#claude-code]

```bash
claude mcp add --transport http bioflow https://app.getbioflow.com/api/mcp
```

Sign in when the OAuth prompt appears on the first tool call.

[Full Claude Code guide](https://getbioflow.com/agent-setup/claude-code)

### Codex [#codex]

```bash
codex mcp add bioflow --url https://app.getbioflow.com/api/mcp
```

Run `codex mcp login bioflow` to complete OAuth.

[Full Codex guide](https://getbioflow.com/agent-setup/codex)

### Cursor [#cursor]

Add this to `.cursor/mcp.json`:

```json
{
  "mcpServers": {
    "bioflow": {
      "url": "https://app.getbioflow.com/api/mcp"
    }
  }
}
```

Approve the OAuth consent screen on the first tool call.

[Full Cursor guide](https://getbioflow.com/agent-setup/cursor)

### Windsurf [#windsurf]

Add this to `~/.codeium/windsurf/mcp_config.json`:

```json
{
  "mcpServers": {
    "bioflow": {
      "serverUrl": "https://app.getbioflow.com/api/mcp"
    }
  }
}
```

Approve the OAuth consent screen on the first tool call.

[Full Windsurf guide](https://getbioflow.com/agent-setup/windsurf)

### VS Code [#vs-code]

Add this to `.vscode/mcp.json`:

```json
{
  "servers": {
    "bioflow": {
      "type": "http",
      "url": "https://app.getbioflow.com/api/mcp"
    }
  }
}
```

Approve the OAuth consent screen on the first tool call.

[Full VS Code guide](https://getbioflow.com/agent-setup/vscode)

### OpenCode [#opencode]

Add this to `opencode.json`:

```json
{
  "mcp": {
    "bioflow": {
      "type": "remote",
      "url": "https://app.getbioflow.com/api/mcp"
    }
  }
}
```

Approve the OAuth consent screen on the first tool call.

[Full OpenCode guide](https://getbioflow.com/agent-setup/opencode)

**Generic MCP entry** (any other client): Streamable HTTP at `https://app.getbioflow.com/api/mcp`, OAuth 2.1 with PKCE and dynamic client registration.

## SDK / CLI [#sdk--cli]

### Node / TypeScript — `@bioflow/sdk` [#node--typescript--bioflowsdk]

```bash
npm install @bioflow/sdk
```

```ts
import BioFlow from "@bioflow/sdk";

const bioflow = new BioFlow({ apiKey: process.env.BIOFLOW_API_KEY });
```

Smoke call: `await bioflow.pages.list({ limit: 20 });`

### Python — `bioflow-sdk` [#python--bioflow-sdk]

```bash
pip install bioflow-sdk
```

```py
from bioflow_py import BioFlow

bioflow = BioFlow()  # reads BIOFLOW_API_KEY automatically
```

Smoke call: `bioflow.pages.list(limit=20)`

## Verify [#verify]

* **MCP**: call `search_tools` (no arguments) — expect a declaration for `external_workspace_list`. Then call `execute_typescript` with code `return await external_workspace_list({})`.
* **REST / SDK**: `curl -H "Authorization: Bearer $BIOFLOW_API_KEY" https://app.getbioflow.com/v1/usage`.

## Resources [#resources]

* [FAQ](https://getbioflow.com/faq)
* [llms.txt](https://getbioflow.com/llms.txt)
* [API reference](https://getbioflow.com/docs/api-reference)
* [MCP overview](https://getbioflow.com/mcp)
* [Status](https://status.getbioflow.com)
* Support: [support@getbioflow.com](mailto:support@getbioflow.com)

The machine-readable version of this page is [https://getbioflow.com/agent-setup/prompt.md](https://getbioflow.com/agent-setup/prompt.md) —
raw markdown, no auth, meant to be fetched and executed by an agent rather
than read by a human.
